gradle 和 android plugin fore gradle 都是獨(dú)立于android studio 運(yùn)行。
構(gòu)建流程圖
您可以在模塊級(jí) build.gradle 文件的 android {} 代碼塊內(nèi)部創(chuàng)建和配置構(gòu)建類型。當(dāng)您創(chuàng)建新模塊時(shí),Android Studio 會(huì)自動(dòng)為您創(chuàng)建調(diào)試和發(fā)布這兩種構(gòu)建類型。盡管調(diào)試構(gòu)建類型不會(huì)出現(xiàn)在構(gòu)建配置文件中,Android Studio 會(huì)將其配置為 debuggable true。這樣,您可以在安全的 Android 設(shè)備上調(diào)試應(yīng)用并使用通用調(diào)試密鑰庫(kù)配置 APK 簽署。
如果您希望添加或更改特定設(shè)置,您可以將調(diào)試構(gòu)建類型添加到您的配置中。以下示例為調(diào)試構(gòu)建類型指定了 applicationIdSuffix,并配置了一個(gè)使用調(diào)試構(gòu)建類型中的設(shè)置進(jìn)行初始化的“jnidebug”構(gòu)建類型。
android { ... defaultConfig {...} buildTypes { release { minifyEnabled true PRoguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { applicationIdSuffix ".debug" } /** * The 'initWith' property allows you to copy configurations from other build types, * so you don't have to configure one from the beginning. You can then configure * just the settings you want to change. The following line initializes * "jnidebug" using the debug build type, and changes only the * applicationIdSuffix and versionNameSuffix settings. */ jnidebug { // This copies the debuggable attribute and debug signing configurations. initWith debug applicationIdSuffix ".jnidebug" jniDebuggable true } }} buildTypes 可以配置各個(gè)版本需要的相應(yīng)屬性,例如發(fā)布版本需要 混淆, 而debug版本不需要, 或者其他自定義版本的屬性。 在buildTypes區(qū)域中可以配置許多構(gòu)建的屬性,例如: 混淆文件 --proguardFiles、是否過(guò)濾掉未使用的資源 -- shrinkResources (默認(rèn)為false: 未使用 是指代碼中從未引用過(guò)的resource資源)、開(kāi)啟多個(gè)Dex文件--multiDexEnabled (在android 5.0之前需要使用,用于突破65K方法數(shù))等。更多的屬性可以參考官方文檔。創(chuàng)建產(chǎn)品風(fēng)味與創(chuàng)建構(gòu)建類型類似:只需將它們添加到 productFlavors {} 代碼塊并配置您想要的設(shè)置。產(chǎn)品風(fēng)味支持與 defaultConfig 相同的屬性,這是因?yàn)?defaultConfig 實(shí)際上屬于 ProductFlavor 類。這意味著,您可以在 defaultConfig {} 代碼塊中提供所有風(fēng)味的基本配置,每種風(fēng)味均可替換任何默認(rèn)值,例如 applicationId。
注:您仍需在 main/ 清單文件中使用 package 屬性指定程序包名稱。您還必須在源代碼中使用此程序包名稱引用 R 類或者解析任何相關(guān)的 Activity 或服務(wù)注冊(cè)。這樣,您可以使用 applicationId 為每個(gè)產(chǎn)品風(fēng)味分配一個(gè)唯一的 ID,以用于打包和分發(fā),而不必更改您的源代碼。以下代碼示例創(chuàng)建了一個(gè)“演示”和“完整”產(chǎn)品風(fēng)味并賦予其自己的 applicationId 和 versionName
android { ... defaultConfig {...} buildTypes {...} productFlavors { demo { applicationId "com.example.myapp.demo" versionName "1.0-demo" } full { applicationId "com.example.myapp.full" versionName "1.0-full" } } }配置此參數(shù)之后,gradle可以根據(jù)你的配置生成相應(yīng)的apk,每一個(gè)配置對(duì)應(yīng)的一個(gè)apk。 配置完成后, 你也可以單獨(dú)的為每個(gè)flavors配置他們獨(dú)有的功能代碼。可以參考 官網(wǎng)的 “構(gòu)建配置”章節(jié)里面的”創(chuàng)建用于構(gòu)建變體的源集” 小節(jié)
除非您為發(fā)布構(gòu)建顯式定義簽署配置,否則,Gradle 不會(huì)簽署發(fā)布構(gòu)建的 APK。您可以輕松創(chuàng)建發(fā)布密鑰并使用 Android Studio 簽署發(fā)布構(gòu)建類型。
要使用 Gradle 構(gòu)建配置為您的發(fā)布構(gòu)建類型手動(dòng)配置簽署配置:
1.創(chuàng)建密鑰庫(kù)。密鑰庫(kù)是一個(gè)二進(jìn)制文件,它包含一組私鑰。您必須將密鑰庫(kù)存放在安全可靠的地方。 2.創(chuàng)建私鑰。私鑰代表將通過(guò)應(yīng)用識(shí)別的實(shí)體,如某個(gè)人或某家公司。 3.將簽署配置添加到模塊級(jí) build.gradle 文件中:
...android { ... defaultConfig {...} signingConfigs { release { storeFile file("myreleasekey.keystore") storePassWord "password" keyAlias "MyReleaseKey" keyPassword "password" } } buildTypes { release { ... signingConfig signingConfigs.release } }}因?yàn)閍ndorid要求所有的apk先簽名才能安裝。所有你可以在這里配置相應(yīng)的秘鑰,用于發(fā)布 和 調(diào)試版本。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注