Run ProGuard (混淆)

例子:
android {  ...  buildTypes {    release {      runProguard true      proguardFiles getDefaultProguardFile('proguard-android.txt'), \             'proguard-rules.txt'    }  }}
getDefaultProguardFiel('proguard-android-txt') 从android sdk中获取默认的混淆设置,Android studio在 root module中添加proguard-rules.txt来添加一些自定义的设置

Configure signing setting(签名设置)

debug和release版本的应用差别在于应用是否可以在安全的设备上调试以及APK是如何签名的。构建系统对debug版本的应用默认使用一个默认的key和certificate来避免在编译期间出现密码弹窗。对于release版本的打包,如果不明确指定签名设置,构建系统不会对APK进行签名 1. 将release key拷贝到app的根目录下,"app/" 2. 在app根目录下的build file中添加签名配置
...android {  ...  defaultConfig { ... }  signingConfigs {    release {      storeFile file("myreleasekey.keystore")      storePassword "password"      keyAlias "MyReleaseKey"      keyPassword "password"    }  }  buildTypes {    release {      ...      signingConfig signingConfigs.release    }  }}...

3. 通过android studio或者命令行调用 "assembleRelease" 构建任务 在构建文件中直接保存打包密码不是个好措施,可以通过环境变量设置密码:
storePassword System.getenv("KSTOREPWD")keyPassword System.getenv("KEYPWD")
或者可以通过弹窗的方式获取密码:
storePassword System.console().readLine("\nKeystore password: ")keyPassword System.console().readLIne("\nKey password: ")


Work with build variants

这个不知道怎么翻译了,我个人理解这里是构建目标,跟xcode中的target有些相似。通过build variants可以对同一个工程,创建不同版本的应用,比如对于免费版和付费版,还有各个渠道的版本。构建系统使用"product flavors"来创建不同版本的应用,应用的不同版本可以有不同特性或者设备要求,构建系统会对应每个版本的应用生成不同的APK文件。

Build variants

每个版本的应用都是通过一个"build variants"在构建系统中表示的。build variants是build type 和 product flavor configuration来进行组合构成的,Android studio默认情况下,有debug和release两种build type,没有默认的 product flavor 设置。例如,定义了两个product flavor,demo和full,这时候,就会生成4个"build variants",对应地会生成4个APK文件。
  • demo-debug
  • demo-release
  • full-debug
  • full-release

Source directories

构建系统会从将下面的代码和资源进行结合来编译各个不同版本的App:
  • src/main/ - 主要的源目录,对所有的variant都有用
  • src/<buildType>/ - 各个不同build类型的源目录
  • src/<flavorName>/ - 各个不同flavor类型的源目录
NOTE:需要注意的是,这些目录结构是可选的,如果你不自己创建目录,构建系统就不会使用这些目录。
对于源代码,每个build variant目录下面的源代码会组合在一起进行编译。如果两个目录下面的源代码不会包含在一个build variant中,你可以在这两个目录下面创建同名的文件。 对于manifest,构建系统会将所有的manifests文件合并为一个最终的manifest,对于每个build variant 都可以有不同manifest,即有定义不同的组件和权限。 对于资源文件,构建系统会将每个build variant所有目录下的资源合并到一起。对于同一个build variant,不同目录下面的同名资源,他们会按一定优先级进行覆盖,build type资源 > product flavor资源 > 主目录资源
NOTE: 通过build variant,可以在不同版本的应用中,灵活重用很多东西,例如 activities,应用逻辑和资源文件等

Build output

可以通过Android Studio或者命令行来调用 "assemble" 任务。编译生成为每个 build variant 都生成一个APK文件: "app/build/apk"目录包含命名规则为 "app-<flavor>-<buildtype>.apk"包。

更多相关文章

  1. 播放系统铃音 android
  2. 《ArcGIS API for Android 案例教程》PDF版本
  3. android proc 虚拟文件系统
  4. Android 同步请求导致系统崩溃android.os.NetworkOnMainThreadEx
  5. android 文件系统分析
  6. 基于Android系统软件管理器源码
  7. android 获取系统默认路径
  8. Android P Launcher APP替换图标不随系统固定格式而改变
  9. Android 系统图标

随机推荐

  1. Eclipse编译Anroid引用程序的出错处理
  2. Android(安卓)Studio中常用设置与快捷键
  3. Android 开发技术周报 Issue#299
  4. 【Android】View组件
  5. android中setVisibility的用法
  6. Android UI性能问题探讨
  7. 下载 android 源码错误curl: (6) couldn'
  8. 聚焦 Android 11:游戏开发新工具
  9. Android-透明状态栏
  10. android jni (jni_onload方式)