首先APP运行在Android系统之上,Android系统的内核基于Linux,但不等于Linux,所以APP不能运行在Linux系统上。
利用Android studio开发APP项目,可以通过模拟Android手机系统运行APP,也可以选择实际的物理设备进行调试。
安卓开发有两种开发路线,分别是原生开发和混合开发。
原生开发:在移动平台上利用官方提供的编程语言(例如Java、Kotlin等)、开发工具包(SDK)、开发环境(Android
Studio)进行App开发;
混合开发:结合原生与H5技术开发混合应用,也就是将部分App页面改成内嵌的网页,这样无须升级App、只要覆盖服务器上的网页,即可动态更新App页面。
开发常用的几种语言
Java是Android开发的主要编程语言,它是解释型语言,是一门面向对象的编程语言,Java语言具有功能强大和简单易用两个特征。
Kotlin是谷歌官方力推的又一种编程语言,它也是解释型语言,它与Java同样基于JVM(Java Virtual Machine,即Java虚拟机),且完全兼容Java语言。
C/C++是编译型语言,它能够有效弥补解释型语言的性
能缺憾,借助于JNI技术(Java Native Interface,即Java原生接口),Java代码允许调用C/C++编写的程序。事实上,Android的SDK开发包内部定义了许多JNI接口,包括图像读写在内的底层代码均由C/C++编写,再由外部通过封装好的Java方法调用。
它只是一种标记语言,标签内部的属性以“android:”打头。
安卓手机中的数据库与PC上的不同,它的数据库采用SQLite,而SQLite无须单独安装,因为它内嵌到应用进程当中,所以App无须配置连接信息,即可直接对其增删改查。由于SQLite嵌入到应用程序,省去了配置数据库服务器的开销,因此它又被归类为嵌入式数据库。
像我们平常使用的一些需要联网的软件,购物APP或者聊天APP,在本地数据库修改的同时,我们还需要借助HTTP协议与开发商的后端数据库进行连接更新数据。
APP有两个层次,从大的方面先讲,第一个是项目,其次是模块。顾名思义,一个项目里可以有很多模块,模块依赖于项目,每个项目至少有一个模块,也能拥有多个模块。
一个项目的主要生成文件如下:
AndroidManifest.xml:App的运行配置文件。
src目录下,有3个com.example.myapplication包,其中第二个包存放当前模块的Java源代码,上面和下面两个包存放测试用的Java代码。
res子目录在src里面,存放当前模块的资源文件。res下面又有4个子目录:
layout目录存放App页面的布局文件。
mipmap目录存放App的启动图标。
values目录存放一些常量定义文件,例如:
字符串常量strings.xml
像素常量dimens.xml
颜色常量colors.xml
样式风格定义styles.xml等。
Gradle是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的差异管理等工作。就像maven一样。配置文件build.gradle有两种,一种是项目级的,还有一种是模块级的。编辑项目级的配置文件会对整个项目生效,模块级则对模块生效。
proguard-rules.pro:描述Java代码的混淆规则
gradle.properties:配置编译工程的命令行参数
settings.gradle:配置了需要编译哪些模块。初始内容为include ‘:app’,表示只编译app模块。
android {
// 指定编译用的SDK版本号。比如32表示使用Android 12.0编译
compileSdk 32
defaultConfig {
// App的包名
applicationId "com.example.myapplication"
// 指定App适合运行的最小SDK版本号。比如28表示至少要在Android 9上运行
minSdk 28
// 指定目标设备的SDK版本号。表示App最希望在哪个版本的Android上运行
targetSdk 32
// 指定App的应用版本号
versionCode 1
// 指定App的应用版本名称
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
APP利用 XML 标记描绘应用界面,使用Java代码书写程序逻辑。
这就有点像前后端分离,这里的XML相当于HTML,java书写后端的逻辑处理。
把 App 的界面设计与代码逻辑分开的好处:
1.使用 XML 文件描述 APP 界面,可以很方便地在 Android Studio 上预览界面效果。
2.一个界面布局可以被多处代码复用,反过来,一个 Java 代码也可能适配多个界面布局。
参考:安卓动脑学院视频教程