一、Android打包流程
Android应用程序是以.apk结尾的Android安装程序包。对于Android开发者,将一个应用打包成.apk是应用程序发布流程中的最后一步。
Android的打包流程主要包括以下几个步骤:
1. 编写代码:
开发人员使用Java编程语言,使用Android软件开发工具包(SDK)中的API编写代码,生成Android应用程序。
2. Build:
在Android Studio中,使用Gradle构建应用程序。Gradle是一个自动化构建工具,提供了丰富的插件和任务来简化构建过程。它采用基于Groovy的DSL(领域特定语言)来定义构建脚本。
//app/build.gradle文件内容
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
3. 签名:
在将应用程序发布到外部服务器或Play商店之前,必须对其进行签名。在Android Studio中,你可以使用带有.keystore文件的Android签名向导完成此过程。
//gradle.properties文件内容
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_KEY_PASSWORD=my-password
MYAPP_RELEASE_STORE_FILE=example.keystore
MYAPP_RELEASE_STORE_PASSWORD=my-release-password
4. 生成.apk包:
使用Gradle Tasks中的assembleRelease任务生成.apk文件。Gradle将在build/outputs/apk/目录中生成一个签名的.apk文件。
二、Android打包成.apk
将Android应用程序打包成.apk时,必须在两个步骤中构建应用程序:编译Java代码并将其转换为可执行的Dalvik字节码。 然后将 APK 打包成.jar文件,然后将其转换为可执行的.dex文件。
1. Dex编译
Android软件开发工具包(SDK)中包含dx工具,可以将Java字节码编译为Dalvik可执行代码(DEX文件)。Dex编译器将所有Java类转换为Dalvik虚拟机(VM)可以理解的格式。
使用以下指令将.jar文件转换为.dex文件:
dx --dex --output=classes.dex myApp.jar
其中,myApp.jar是包含Java类的jar文件,classes.dex是输出的Dex文件。
2. 打包为.apk
Android应用程序包是一种特殊的压缩文件。 它被重命名为.apk(Android Package)作为安装程序的扩展名。 应用程序包包含所有编译后的.dex文件,所有必需的资源文件和清单文件。
使用以下命令将.dex文件和资源文件打包为.apk文件:
aapt package -v -f -M AndroidManifest.xml -S res -I android.jar \
-F myApp.apk classes.dex
其中,AndroidManifest.xml是manifest文件路径,res是资源文件路径,android.jar是SDK中的api文件,classes.dex是上一步生成的dex文件,myApp.apk是输出APK的路径。
三、Android打包apk选取
1. 生成签名密钥
使用以下命令生成密钥库文件:
keytool -genkey -v -keystore my-key.keystore -alias my-key-alias \
-keyalg RSA -keysize 2048 -validity 10000
2. 配置Gradle构建文件
在Android应用程序的build.gradle文件中定义一个签名配置:
android {
...
defaultConfig { ... }
signingConfigs {
release {
keyAlias 'my-key-alias'
keyPassword 'my-key-password'
storeFile file('my-key.keystore')
storePassword 'my-store-password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
3. 生成 APK 文件
在Android Studio中Build > Generate Signed Bundle/APK,选择要打包编译的模块和所需的构建类型(开发构建/发布构建)。最后一步是选择新建/现有密钥。 选择生成的APK文件,并在发布之前对APK进行测试以减少错误。