1.1 Android 简介

1.1.1 Android 零碎架构

  1. Linux 内核层:为各种硬件提供底层驱动
  2. 零碎运行库层:通过 C/C++ 库提供次要的个性反对。
  3. 利用框架层:提供构建应用程序时须要用到的各种 API。
  4. 应用层:装置在手机上的应用程序。

1.1.2 Android 已公布的版本

Android APIAndroid版本散布比例
28Android 9 (Pie)10.40%
27Android 8.1 (Oreo)15.40%
26Android 8.0 (Oreo)12.90%
25Android 7.1.1 (Nougat)7.80%
24Android 7.0 (Nougat)11.40%
23Android 6.0 (MarshMallow)16.90%
22Android 5.1 (Lollipop)11.50%
21Android 5.0 (Lollipop)3.00%
19Android 4.4 (Kitkat)6.90%
18Android 4.3 (Jelly Bean)0.50%
17Android 4.2.x (Jelly Bean)1.50%
16Android 4.1.x (Jelly Bean)1.20%
15Android 4.0.3 - 4.0.4 (Ice Cream Sandwich)0.30%
10Android 2.3.3 - 2.3.7 (Gingerbread)0.30%

1.1.3 Android 利用开发特色

  1. 四大组件:流动、服务、播送接收器、内容提供器
  2. 丰盛的零碎控件
  3. SQLite 数据库
  4. 弱小的多媒体
  5. 地理位置定位

1.2 搭建开发环境

  • JDK8 或以上版本
  • Android SDK
  • Android Studio

1.3 创立 Android 我的项目

  1. Start a new Android Studio project
  2. 启动模拟器
  3. 运行 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// 流动代码,须要继承 AppCompatActivitypublic 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.gradlebuildscript {    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 面板。