您的位置:

Android打包流程

一、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进行测试以减少错误。