使用 Android Studio 进行命令行打包
Android Studio 使用的是 Gradle 打包。因此,要想实现命令打包的方式,需要在了解 Gradle。
-
签名
笔者所在的公司打包等操作都是由程序员自己来进行打包的。因此签名信息可以保存于源代码中。
-
编写签名的 keystore 相关信息。这里笔者使用的是 signing.properties 方式保存。
KEYSTORE_FILE=keystore路径 KEYSTORE_PASSWORD=keystore密码 KEY_ALIAS=keystore别名 KEY_PASSWORD=keystore别名密码
-
在 build.gradle 中添加 签名 配置。
Properties props = new Properties() props.load(new FileInputStream(file("../signing.properties"))) signingConfigs { release { keyAlias props['KEY_ALIAS'] keyPassword props['KEY_PASSWORD'] storeFile file(props['KEYSTORE_FILE']) storePassword props['KEYSTORE_PASSWORD'] } }
-
找到 buildTypes 选项,在 Release 中使用配置的签名。
buildTypes { release { ... signingConfig signingConfigs.release } }
到这里,我们在项目的根目录下执行
./gradlew clean
清理一遍,然后使用./gradlew assembleRelease
就可以在命令行中打包了。包的位置在./app/build/outputs/apk/项目名/release
中。 -
-
配置多个 apk 打包
在开发过程中,我们经常的需要针对 qa 和生产环境分开打包。这时候需要配置多个 apk。这时候我们需要使用 productFlavors 标签来完成这个操作。如下:
flavorDimensions "default"//这个名字貌似随便取,也可以有多个,总之一定要有.. //配置多版本的apk productFlavors { Citizen { // 修改打包环境的 url buildConfigField "String", "HOST_URL", "\"https://url1/\"" } RVA311QA { // 修改打包环境的 url buildConfigField "String", "HOST_URL", "\"https://url2/\"" } }
defaultConfig 是默认的 productFlavors。在 productFlavors 中我们可以根据自己的需要配置多个 apk 。apk 的各种需要我们都可以在这里进行配置。这样我们在执行
./gradlew assembleRelease
的时候就会出现多个 apk 了。笔者的项目中要求 qa ,生产环境是两个 url 地址。笔者是这么处理的:在 BuildConfig 文件中添加笔者项目访问的地址,在代码中使用 BuildConfig.HOST_URL。这样就可以在不同的 apk 中使用不同的 url。
注意:我所在的版本的 gradle 如果使用了 productFlavors 必须添加 flavorDimensions。
Gitlab 打包
关于 Gitlab CI 配置,可以参考使用 gitlab 自动打包
碰到的错误
-
我们使用的打包平台是 Mac 平台。由于是刚刚安装 Android Studio,在我们触发 build 的过程中,发生了错误:
SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
。原因:经查看,该错误产生的原因是 Android Studio 在打开我们工程的时候,会默认在我们的工程目录下面产生一个
local.properties
文件。里面包含了当前机器 Android SDK 位置。但是我们在触发 build 的时候,由于没有使用 Android Studio 打开工程,没有产生local.properties
文件。出现错误。解决方案:在系统变量中声明
ANDROID_HOME
变量。
在.bash_profile
添加如下代码export ANDROID_HOME=~/Library/Android/sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools
参考的博客文章:
Android Studio gradle打包实践
Android 使用gradle打包的各种配置
android studio gradle 多版本多apk打包(打包系列教程之五)
Gradle使用技巧总结
Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解
网友评论