1.1 Android 简介
1.1.1 Android 零碎架构
- Linux 内核层:为各种硬件提供底层驱动
- 零碎运行库层:通过 C/C++ 库提供次要的个性反对。
- 利用框架层:提供构建应用程序时须要用到的各种 API。
- 应用层:装置在手机上的应用程序。
1.1.2 Android 已公布的版本
Android API | Android 版本 | 散布比例 |
---|---|---|
28 | Android 9 (Pie) | 10.40% |
27 | Android 8.1 (Oreo) | 15.40% |
26 | Android 8.0 (Oreo) | 12.90% |
25 | Android 7.1.1 (Nougat) | 7.80% |
24 | Android 7.0 (Nougat) | 11.40% |
23 | Android 6.0 (MarshMallow) | 16.90% |
22 | Android 5.1 (Lollipop) | 11.50% |
21 | Android 5.0 (Lollipop) | 3.00% |
19 | Android 4.4 (Kitkat) | 6.90% |
18 | Android 4.3 (Jelly Bean) | 0.50% |
17 | Android 4.2.x (Jelly Bean) | 1.50% |
16 | Android 4.1.x (Jelly Bean) | 1.20% |
15 | Android 4.0.3 – 4.0.4 (Ice Cream Sandwich) | 0.30% |
10 | Android 2.3.3 – 2.3.7 (Gingerbread) | 0.30% |
1.1.3 Android 利用开发特色
- 四大组件:流动、服务、播送接收器、内容提供器
- 丰盛的零碎控件
- SQLite 数据库
- 弱小的多媒体
- 地理位置定位
1.2 搭建开发环境
- JDK8 或以上版本
- Android SDK
- Android Studio
1.3 创立 Android 我的项目
- Start a new Android Studio project
- 启动模拟器
- 运行 HelloWorld 我的项目
1.3.1 剖析目录构造
首先将我的项目构造模式切换为 Project 模式。
.gradle 主动生成的目录,毋庸关怀
.idea 主动生成的目录,毋庸关怀
app 我的项目次要目录,即工作目录
build 编译时主动生成的文件目录,毋庸关怀
libs 第三方 jar 包寄存目录
src 我的项目次要目录,即工作目录
androidTest 测试用例目录,进行自动化测试
main 我的项目次要目录,即工作目录
java JAVA 代码目录
res 资源目录
AndroidManifest.xml Android 我的项目配置文件
test 单元测试用例目录
.gitignore Git 版本控制排除的配置文件
app.iml IDEA 主动生成的文件,毋庸关怀
build.gradle app 模块的 gradle 构建脚本
proguard-rules.pro 配置我的项目代码的混同规定
build 编译时主动生成的文件目录,毋庸关怀
gradle 蕴含 gradle wrapper 的配置文件
.gitignore Git 版本控制排除的配置文件
build.gradle 全局的 gradle 构建脚本,通常不需批改
gradle.properties 全局的 gradle 配置文件
gradlew 命令行执行 gradle 的文件(Linux)gradlew.bat 命令行执行 gradle 的文件(Windows)HelloWorld.iml IDEA 主动生成的文件,毋庸关怀
local.properties 指定本机 Android SDK 地位的配置文件,通常不需批改
settings.gradle 指定我的项目中引入的模块的配置文件
代码剖析。
# app/src/main/AndroidManifest.xml
<!-- 对 HelloWorldActivity 流动进行注册 -->
<activity android:name=".HelloWorldActivity">
<intent-filter>
<!-- 指定 HelloWorldActivity 是我的项目的主流动 -->
<action android:name="android.intent.action.MAIN" />
<!-- 指定 HelloWorldActivity 是利用启动时首先启动的流动 -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
# app/src/main/java/com/example/helloworld/HelloWorldActivity.java
// 流动代码,须要继承 AppCompatActivity
public class HelloWorldActivity extends AppCompatActivity {
// 流动创立时会主动执行的办法
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.hello_world_layout);
}
}
# app/src/main/res/layout/hello_world_layout.xml
...
# 文本控件
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
...
1.3.2 详解我的项目中的资源
res/drawable 图片目录
res/drawable-xxhdpi 图片目录,倡议放在此目录
res/layout 布局文件
res/mipmap-hdpi 利用图标
res/mipmap-mdpi 利用图标
res/mipmap-xhdpi 利用图标
res/mipmap-xxhdpi 利用图标,倡议放在此目录
res/mipmap-xxxhdpi 利用图标
res/values-w820dp 字符串、款式、色彩等配置
res/values 字符串、款式、色彩等配置
# app/src/main/res/values/strings.xml
# 定义字符串
<resources>
<string name="app_name">HelloWorld</string>
</resources>
# 代码中应用
R.string.app_name
# XML 中应用
@string/app_name
应用示例。
# HelloWorld/app/src/main/AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher" # 指定图标配置,应用 @mipmap 援用图标
android:label="@string/app_name" # 指定利用名称配置,应用 @string 援用字符串
android:supportsRtl="true"
android:theme="@style/AppTheme"> # 指定主题配置,应用 @style 援用格调目录
1.3.3 详解 build.gradle 文件
# build.gradle
buildscript {
repositories {
// 申明代码托管仓库
jcenter()}
dependencies {
// 应用 gradle 构建 Android 我的项目
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
allprojects {
repositories {
// 申明代码托管仓库
jcenter()}
}
# app/build.gradle
// 利用的插件:com.android.application 为利用程序模块;com.android.library 为库模块
apply plugin: 'com.android.application'
android {
// 指定我的项目的编译版本
compileSdkVersion 24
// 指定我的项目构建工具的版本
buildToolsVersion "24.0.2"
defaultConfig {
// 指定我的项目包名
applicationId "com.example.helloworld"
// 指定我的项目最低兼容的安卓版本
minSdkVersion 15
// 指定在该版本上曾经做了充沛的测试,启动最新的性能和个性
targetSdkVersion 24
// 指定我的项目的版本号
versionCode 1
// 指定我的项目的版本名称
versionName "1.0"
}
// 生成安装文件的相干配置
buildTypes {
// 生成正式版安装文件的相干配置
release {
// 是否对我的项目代码进行混同
minifyEnabled false
// 代码混同时应用的规定文件:安卓通用混同规定 & 我的项目混同规定
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
// 指定我的项目的依赖关系
dependencies {
// 本地依赖申明
compile fileTree(include: ['*.jar'], dir: 'libs')
// 近程依赖申明
compile 'com.android.support:appcompat-v7:24.2.1'
// 测试用例库申明
testCompile 'junit:junit:4.12'
}
1.4 日志工具的应用
Log.v() verbose 级别,琐碎的、意义最小的日志
Log.d() debug 级别,调试剖析的日志
Log.i() info 级别,重要的数据的日志
Log.w() warn 级别,潜在危险的日志
Log.e() error 级别,谬误的的日志
public class HelloWorldActivity extends AppCompatActivity {
private static final String TAG = "HelloWorldActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate execute");
setContentView(R.layout.hello_world_layout);
}
}
打印的日志位于:Android Monitor -> logcat 面板。