关于android:Android-开发入门简介

31次阅读

共计 4261 个字符,预计需要花费 11 分钟才能阅读完成。

1.1 Android 简介

1.1.1 Android 零碎架构

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

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 利用开发特色

  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

// 流动代码,须要继承 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 面板。

正文完
 0