• 配置应用程序的构建类型
    • 新增一个构建类型:

    配置应用程序的构建类型

    构建类型 Build Types非常重要,在这里可以配置构建版本的一些非常重要的参数,默认有两个构建版本:debug和release。

    默认的debug和release的区别只有Debugable(是否可调试),debug默认可调试,release默认不可以调试.

    Name: 构建类型名称

    Debugable: 是否可以调试

    Jin Debuggable: Jin是否可以调试

    Signing Config: 指定签名,同样是在signing中配置的,如果为空则不签名,打出来的包也是未签名过的.

    Renderscript Debuggale: 是否使用渲染脚本(一种低级的高性能编程语言,用于3D渲染和处理密集型计算)

    Renderscript Optim Level: Rendescript版本.

    Minify Enabled: 是否混淆

    Pseudo Locales Enabled: 是否支持本地化整理

    Proguard File: 指定混淆文件路径

    Application Id Suffix: 应用程序Id后缀

    Version Name Suffix: 版本名称后缀

    Zip Align Enabled: 是否支持Zip Align(字节码对齐)

    新增一个构建类型:

    修攺后build.gradle文件中同步修攺为:

    1. buildTypes {
    2. release {
    3. minifyEnabled false
    4. proguardFiles getDefaultProguardFile\('proguard-android.txt'\), 'proguard-rules.pro'
    5. }
    6. bbbbb {
    7. debuggable true
    8. jniDebuggable true
    9. renderscriptDebuggable true
    10. minifyEnabled true
    11. pseudoLocalesEnabled true
    12. proguardFile '\/Users\/bixiaopeng\/proguard-android.txt'
    13. applicationIdSuffix '.daily'
    14. versionNameSuffix '\_0705'
    15. zipAlignEnabled true
    16. }
    17. }

    如果我们指定打某个构建类型的包可以这样指定:

    打出Debug的包: .\/gradlew assembleDebug

    打出Release的包: .\/gradlew assembleRelease

    打出Bbbbb的包: .\/gradlew assembleBbbbb

    我们试着打出Bbbbb这种类型的包:

    1. $ ./gradlew assembleBbbbb
    2. :app:preBuild UP-TO-DATE
    3. :app:preBaiduBbbbbBuild UP-TO-DATE
    4. :app:checkBaiduBbbbbManifest
    5. ...
    6. :app:packageXiaomiBbbbb
    7. :app:assembleXiaomiBbbbb
    8. :app:assembleBbbbb
    9. BUILD SUCCESSFUL
    10. Total time: 25.301 secs

    在app\/build\/output\/apk目录下就会打出相应的apk包.

    解析apk,查看包名和版本号跟我们配置的一致.

    1. ~$ aapt d badging /Volumes/FirstApp/app/build/outputs/apk/app-baidu-bbbbb-unsigned.apk
    2. package: name='com.baidu.firstapp.daily' versionCode='1' versionName='1.0_0705'
    3. sdkVersion:'8'
    4. targetSdkVersion:'22'
    5. ....

    Project Structure中没有的配置但buildTypes中支持的属性还有很多,我们举个例子:

    1. // 显示Log
    2. buildConfigField "boolean", "LOG_DEBUG", "true"
    3. // 移除无用的resource文件,minifyEnabled必须为true
    4. shrinkResources true