0x01 准备
(1)概述
安卓(Android)基于 Linux 内核开发的操作系统,由 Google 等领导开发。
(2)版本
| Android 版本号 |
API |
发布时间 |
| Android 14 |
- |
2023 |
| Android 13 |
33 |
2022.2 |
| Android 12 |
31 |
2021.10 |
| Android 11 |
30 |
2020.9 |
| Android 10 |
29 |
2019.8 |
| Android 9 |
28 |
2018.8 |
| Android 8 |
26/27 |
2017.8 |
| Android 7 |
24/25 |
2016.8 |
| Android 6 |
23 |
2015.9 |
| Android 5 |
21/22 |
2014.6 |
| Android 4.4 |
19/20 |
2013.9 |
以上可见 Android 技术迭代非常快,既体现了 Android 开发社区的活跃,也说明了面对新版本的新特性需要不断学习。
(3)开发工具
- 集成开发工具:Android Studio
- 软件开发工具包:Android SDK
0x02 第一个项目
(1)创建项目
-
选择新建项目
-
选择 Phone and Tablet 下的 Empty Activity
Activity 是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务
-
设置:语言为 Java,最低 SDK 为 API 28
-
选择完成
-
暂时忽略代理连接
(2)创建内置虚拟手机
- 在右侧选项卡栏中,选择 Device Manager
- 选择 Create device
- 选择屏幕尺寸
- 选择在该设备安装 Android 11
- 完成
异常处理:
- 启动模拟手机错误:the emulator process for AVD Pixel_xxx_API_xx has terminated.
(3)观察 App 运行日志
log.e:error,错误消息,可能导致程序崩溃的异常
log.w:warn,警告信息
log.i:info,一般信息
log.d:debug,调试信息,可把程序运行时的变量值打印出来,方便跟踪调试
log.v:verbose,冗余信息
举例:
// 在 MainActivity.java 中
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 添加下述代码
Log.d("testTags", "onCreate");
}
}
执行后打开 Logcat,通过筛选 Debug 信息可以发现以下信息:
202x-xx-xx xx:xx:xx.xxx 7709-7709/com.example.myapplication D/testTags: onCreate
0x03 开发基础
(1)运行环境
-
在虚拟手机上运行
-
在真实手机上运行
-
在手机上执行以下操作:设置 > 关于手机 > 点击版本号(反复点击直至提示已经打开了开发者模式)
-
在开发者选项中,启动 USB 调试
-
使用 USB 将手机与电脑连接
-
在电脑上执行命令adb devices -l来查看已连接的设备
adb 为 Android SDK 目录中 platform-tools 内的程序,将其设置为系统变量 adb
adb:Android Debug Bridge
调试运行原理:
graph LR
PC--adb-->A(Android OS<br/>AVD)
A--adb-->PC
(2)开发语言
- App 开发路线:原生开发、混合开发
- 原生开发包括 Java、Kotlin、C/C++、XML,性能更好
- 混合开发包括 HTML5、Flutter、React Native 等,可以跨平台
- Android 官方编程语言:Java、Kotlin
(3)使用数据库
Android 内置了专门的数据库—— SQLite,其语法类似于 MySQL,属于嵌入式数据库
(4)工程结构
-
App 工程分为两个层次:项目、模块
- 模块依附于项目,项目之下可以由多个模块
- 每个模块对应实际的 App
-
App 项目分为两类:app、Gradle Scripts
graph TB
a(App 项目)-->b
a-->c
b(app)-->manifests
b-->java
b-->res
c(Gradle Scripts)-->build.gladle
c-->proguard-rules.pro
c-->gradle.properties
c-->settings.gradle
c-->local.properties
-
manifests:仅有 AndroidManifest.xml,是 App 的运行配置文件
| application 节点属性 |
说明 |
android:allowBackup |
是否允许应用备份,true 或 false |
android:icon |
显示的图标 |
android:label |
显示的名称 |
android:roundIcon |
圆角图标 |
android:supportRtl |
是否支持阿拉伯语等从右到左文字排列顺序 |
android:theme |
显示风格 |
-
java:有三个 com.example.myapp 包,第一个存放当前模块 Java 源代码,其他存放测试用
-
res:存放当前模块的资源文件
- drawable:存放图形描述文件和图片文件
- layout:存放 App 页面的布局文件
- mipmap:存放 App 的启动图标
- values:存放常量定义文件
- 字符串常量:strings.xml
- 像素常量:dimens.xml
- 颜色常量:colors.xml
- 样式风格定义:styles.xml
-
build.gradle:分为项目级、模块级,描述 App 工程的编译规则
- 项目级:指定了当前项目的总体编译规则
- 模块级:指定了当前模块的总体编译规则
-
proguard-rules.pro:描述 Java 代码的混淆规则
-
gradle.properties:配置编译工程的命令行参数
-
settings.gradle:配置了需要编译哪些模块
-
local.properties:项目的本地配置文件
(5)设计规范
(6)Activity 的创建与跳转
可以直接右键 package(即com.example.application) 新建项目:/Activity/Empty_Activity
-
在 layout 目录下创建 XML 文件
创建 activity_main2.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" />
</androidx.constraintlayout.widget.ConstraintLayout>
其中,TextView 标签中的 Text 属性值可以在 values/strings.xml 中设置:
<resources>
<string name="app_name">My Application</string>
<string name="text2">Activity Main 2</string>
</resources>
修改 activity_main.xml,添加按钮用于跳转:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Skip" />
-
创建与 XML 文件对应的 Java 文件
创建 MainActivity2.java:
package com.example.myapplication;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity2 extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
}
修改 MainActivity.java,添加按钮事件:
package com.example.myapplication;
import // ...
import android.content.Intent;
import android.widget.Button
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, MainActivity2.class);
startActivity(intent);
}
});
}
}
-
在 AndroidManifest.xml 中注册页面配置
在 application 标签下添加新 activity 标签:
<activity android:name=".MainActivity2"></activity>
点我进入下一节
来源:https://www.cnblogs.com/SRIGT/p/17233904.html |