Gradle自动打包文档

背景

为了保证App上线前测试环境正式环境切换不需要改变代码,提高效率,使用Gradle脚本配置正式包和测试包。

Gradle配置与打包 build.gradle 文件的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
buildTypes {
/** 正式环境*/
release {
/** 定义开关*/
buildConfigField("boolean", "IsDebug", "false")
/** 定义正式环境 腾讯云bucket*/
buildConfigField("String", "TENCENT_UPLOAD_BUCKET", "\"topworld\"")
/** 定义正式环境 HOST*/
buildConfigField("String", "HOST", "\"www.lovbook.net\"")
/** 打开 代码混淆*/
minifyEnabled true
/** 打开 应用程序进行优化*/
zipAlignEnabled true
/** 打开 移除无用资源*/
shrinkResources true
/** 加载 签名文件*/
signingConfig signingConfigs.release
/** 加载 混淆文件*/
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
/** 输出 混淆apk release_vxx_codexx_yyyyMMddHH.apk*/
}
/** 测试环境*/
debug {
/** 定义开关*/
buildConfigField("boolean", "IsDebug", "true")
/** 定义测试环境 腾讯云bucket*/
buildConfigField("String", "TENCENT_UPLOAD_BUCKET", "\"lovebook\"")
/** 定义测试环境 HOST*/
buildConfigField("String", "HOST", "\"api.lovbook.net\"")
/** 关闭 代码混淆*/
minifyEnabled false
/** 关闭 优化*/
zipAlignEnabled false
/** 关闭 移除无用资源*/
shrinkResources false
/** 加载 签名文件*/
signingConfig signingConfigs.debug
/** 输出 apk debug_vxx_codexx_yyyyMMddHH.apk*/

其中release版本的log默认关闭,如果需要在该环境下看log,修改lovebook module的gradle配置文件。将IsDebug变量修改为true。

1
2
3
4
release {
/** 定义开关*/
buildConfigField("boolean", "IsDebug", "true")
}

在release版本中开启“shrinkResources true”,移除无用资源,会导致某些书籍的详情页面图片显示为黑框。是因为移除了不应该被移除的资源导致。所以release版本中该开关暂时关闭设置为false。后期继续优化这个问题。

代码中的配置:

在BuildConfig类中会生成如下代码:

gradle签名文件的获取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
signingConfigs {
release {
try {
storeFile file(RELEASE_STOREFILE)
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD
storePassword RELEASE_STOREPASSWORD
} catch (ex) {
throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.");
}
}
debug {
}
}

keystore签名文件的保存

签名文件keystore密码的常量配置在gradle.properties文件中(原则上这个文件不上传SVN):其中RELEASE_STOREFILE 对应你自己签名文件的路径。

编译app

生成apk配置完毕之后,重新编译之后,这时候AndroidStudio工具栏的左下方的Build Variants窗口里面的lovebook Module可以选择编译方式:release 和debug
(打包之前clean一下项目)

选择完毕,连接手机,运行编译器。会安装对应的relase或者debug包。同时在你的项目目录D:\as_pj\androidProject\lovebook\build\outputs\apk 也会生成对应的apk文件。

使用命令行打包

可以使用androidstudio工具下的 命令行使用gradlew命令进行打包,然后根据需要执行(1)/(2) /(3),生成的文件在 app–>build–>outputs–>apk下
(如果配置了gradle的环境变量 也可以使用gradle命令进行操作)。

(1). gradlew build <注:这个是打所有的包>

(2). gradlew assembleDebug <注:这个是打Debug包>

(3). gradlew assembleRelease <注:这个是打Release包>

总结

后期会根据情况添加多渠道打包.