Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android-gradle-深入淺出-五:build type

android-gradle-深入淺出-五:build type

編輯:關於Android編程

默認情況下,Android插件自動為項目構建一個debug和一個release版本的應用。這兩個版本的不同主要體現在在非開發機上的調試功能以及APK的簽名方式。debug版本使用一個用公開的name/password創建的key來簽名(這樣構建的時候就不需要提示輸入密碼了)。release版本在構建的時候不會進行簽名,而是稍後在做。
這個可以使用gradle中的BuildType對象來進行配置。默認情況下,2個BuildType的實例會被創建,一個debug,一個release。Android插件允許自定義這兩個實例,當然你也可以創建其他的build type。配置由buildTypes這個DSL來完成:
android {
    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }


        jnidebug.initWith(buildTypes.debug)
        jnidebug {
            packageNameSuffix ".jnidebug"
            jniDebuggable true
        }
    }
}
上面的代碼完成了下列配置:
1.配置默認的debug Build Type
設置debug版本的報名為<應用id>.debug,這樣就可以在設備上同時安裝debug和release版本了。
2.創建一個新的BuildType,名字是jnidebug,同時配置它是復制自debug Build Type。
配置jnidebug開啟debug版本的JNI組件,添加一個不同的包名後綴。


創建一個新的的Build Types非常簡單,只需要在buildTypes下面通過調用initWith或者使用閉包添加一個新的元素。下表是可以配置的屬性以及默認值:


屬性明 debug版本默認值 release或其他版本 默認值
debuggable true false
jniDebuggable false false
renderscriptDebuggable false false
renderscriptOptimLevel 3 3
applicationIdSuffix null null
versionNameSuffix null null
signingConfig android.signingConfigs.debug null
zipAlignEnabled false true
minifyEnabled false false
proguardFile N/A (set only) N/A (set only)
proguardFiles N/A (set only) N/A (set only)


出了這些屬性,Build Types還可以用來配置代碼和資源文件。針對每一個Build Type,一個新的對應的sourceSet會被創建,這個sourceSet使用一個默認的路徑src//。這就意味著Build Type的名字不能是main或者androidTest(這是由插件強制的),同時每個Build Type的名字必須是唯一的。


和其他的source sets一樣,Build Type中的source set路徑也是可以配置
android {
    sourceSets.jnidebug.setRoot('foo/jnidebug')
}

另外,對每一個Build Type,一個新的assemble任務會被創建.前面我已經講過assembleDebug和assembleRelease任務了,這裡就可解釋這兩個任務的來源了.當debug和release Build Types被預先創建的時候,他們對應的assemble任務也會被一起創建.


上面的build.gradle代碼片段還會創建一個assembleJnidebug任務,assemble任務也會添加對assembleJniDebug任務的依賴,正如它對assembleDebug和assembleRelease任務的依賴一樣。


小提示:你可以使用 gradle aJ命令來運行assembleJnidebug任務。


可能是使用場景:
僅在debug模式下使用的權限,release模式不使用。
debug時使用不同的實現
debug模式使用不同的資源(比如當一個資源的值依賴於簽名的時候)


BuildType中的 代碼/資源文件 將會被按照下列方式處理:
manifest配置會被merge到app manifest中
代碼不會被merge,會被當做另一個代碼目錄(source folder)來使用
資源文件會覆蓋同名的main中的資源文件

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved