設定建構變化版本  AndroidStudio  AndroidDevelopers

每個「建構變化版本」都代表您可以建構的不同應用程式版本。例如,您可能想建構兩個應用程式版本:一個是包含有限內容的免費版應用程式,另一個則是提供更多內容的付費版應用程式。您也可以根據API級別或其他裝置變化版本,為應用程式建構針對各種裝置所設計的不同版本。

Gradle透過一組特定規則,結合建構類型和變種版本中設定的各項設定、程式碼及資源後,就會產生建構變化版本。雖然您無法直接設定建構變化版本,但可以設定組成這類變化版本的建構類型和變種版本。

舉例來說,「demo」的「變種版本」可能會指定某些功能和裝置需求,例如自訂原始碼、資源和最低API級別;「debug」的「建構類型」則會套用不同的建構與封裝設定,例如偵錯選項及簽署金鑰。兩者結合後的建構變化版本即為應用程式的「demoDebug」版本,當中包含「demo」變種版本、「debug」建構類型和main/來源集所含設定與資源的組合。

所有變種版本都必須屬於已命名的版本維度,也就是一組變種版本。您必須將所有變種版本指派給版本維度,否則會收到下列建構錯誤訊息:

Error:Allflavorsmustnowbelongtoanamedflavordimension.Theflavor'flavor_name'isnotassignedtoaflavordimension.如果某個模組只指定一個版本維度,AndroidGradle外掛程式就會自動將此模組的所有變種版本指派給該維度。

建立及設定變種版本後,請按一下通知列中的「SyncNow」。同步處理完成後,Gradle會根據您的建構類型和變種版本自動建立建構變化版本,並依照為其命名。舉例來說,假設您建立了「demo」和「full」變種版本,並保留預設的「debug」和「release」建構類型,Gradle會建立下列建構變化版本:

android{defaultConfig{applicationId="com.example.myapp"}productFlavors{create("free"){applicationIdSuffix=".free"}create("pro"){applicationIdSuffix=".pro"}}}Groovyandroid{defaultConfig{applicationId"com.example.myapp"}productFlavors{free{applicationIdSuffix".free"}pro{applicationIdSuffix".pro"}}}這樣一來,「free」變種版本的應用程式ID即為「com.example.myapp.free」。

android{...buildTypes{getByName("debug"){applicationIdSuffix=".debug"}}}Groovyandroid{...buildTypes{debug{applicationIdSuffix".debug"}}}由於Gradle會在變種版本之後套用建構類型設定,因此「freedebug」建構變化版本的應用程式ID為「com.example.myapp.free.debug」。若希望同一部裝置同時具有debug和release建構類型,這項功能就很實用,因為兩個應用程式無法使用相同的應用程式ID。

在某些情況下,您可能會想結合多種變種版本的設定。舉例來說,您可能想針對以API級別為依據的「full」和「demo」變種版本,建立不同設定,AndroidGradle外掛程式即可用來建立多組變種版本做為版本維度。

Gradle建構應用程式時,會將您定義的各種版本維度中的變種版本設定,結合建構類型設定,以便建立最終的建構變化版本。Gradle不會結合同一版本維度的不同變種版本。

以先前的建構設定為例,Gradle共建立12個採用下列命名配置的建構變化版本:

除了可以為個別變種版本和建構變化版本建立來源集目錄外,您也可以為每個變種版本「組合」建立來源集目錄。舉例來說,您可以建立Java來源並添加至src/demoMinApi24/java/目錄,只有在建立結合這兩種變種版本的變化版本時,Gradle才會使用這些來源。

Gradle會針對您設定的變種版本與建構類型的所有可能組合,建立建構變化版本。不過,某些建構變化版本可能並不符合您的需求,或者對您的專案沒有意義。如要移除特定建構變化版本設定,請在模組層級build.gradle.kts檔案中建立變化版本篩選器。

舉例來說,您可以在main/來源集中定義基本功能,並使用變種版本來源集變更不同用戶端的應用程式品牌資訊,或者只針對使用debug建構類型的建構變化版本,加入特殊權限和記錄功能。

與main/來源集類似,Gradle會預期以特定方式整理來源集檔案和目錄。舉例來說,Gradle會預期「debug」建構類型專屬的Kotlin或Java類別檔案位於src/debug/kotlin/或src/debug/java/目錄中。

AndroidGradle外掛程式提供實用的Gradle工作,展示如何整理每個建構類型、變種版本和建構變化版本的檔案。例如,下列工作輸出內容中的範例說明Gradle預期在哪裡找到「debug」建構類型的某些檔案:

------------------------------------------------------------Project:app------------------------------------------------------------...debug----Compileconfiguration:debugCompilebuild.gradlename:android.sourceSets.debugJavasources:[app/src/debug/java]Kotlinsources:[app/src/debug/kotlin,app/src/debug/java]Manifestfile:app/src/debug/AndroidManifest.xmlAndroidresources:[app/src/debug/res]Assets:[app/src/debug/assets]AIDLsources:[app/src/debug/aidl]RenderScriptsources:[app/src/debug/rs]JNIsources:[app/src/debug/jni]JNIlibraries:[app/src/debug/jniLibs]Java-styleresources:[app/src/debug/resources]如要查看此輸出內容,請按照下列步驟操作:

建立新的建構變化版本時,AndroidStudio不會為您建立來源集目錄,但會為您提供幾個實用選項。舉例來說,如果只要建立「debug」構建類型的java/目錄,請按照以下步驟操作:

AndroidStudio會為您的debug建構類型建立來源集目錄,然後在其中建立java/目錄。或者,當您在專案中新增特定建構變化版本的檔案時,AndroidStudio也可以為您建立目錄。

舉例來說,如要為「debug」建構類型建立值的XML檔案,請按照以下步驟操作:

由於「debug」建構類型是指定為目標來源集,因此AndroidStudio會在建立XML檔案時自動建立必要目錄。產生的目錄結構如圖1所示。

圖1:「debug」建構類型的新來源集目錄。

來源集在圖示中顯示的綠色指標代表有效狀態。debug來源集後方會加上[main],表示本身將合併至main來源集中。

下列程式碼範例會將app/other/目錄中的來源對應至main來源集的某些元件,並變更androidTest來源集的根目錄:

您可以使用來源集目錄,在當中加入只想與某些設定一起封裝的程式碼和資源。舉例來說,如果您打算建立的「demoDebug」建構變化版本是「demo」變種版本和「debug」建構類型的交叉產品,Gradle會檢視這些目錄,並設定以下優先順序:

為變種版本組合建立的來源集必須包含所有版本維度。舉例來說,建構變化版本來源集必須是建構類型與所有版本維度的組合。若程式碼和資源涉及涵蓋多個(但非全部)版本維度的資料夾,系統並不支援合併這類程式碼與資源。

當Gradle結合程式碼和資源時,上述順序將決定優先順序較高的來源集。demoDebug/來源集目錄可能含有建構變化版本專屬的檔案,因此如果demoDebug/包含debug/中一併定義的檔案,Gradle就會使用demoDebug/來源集中的檔案。同樣地,針對建構類型與變種版本來源集中的檔案,Gradle會為其指定高於main/中相同檔案的優先順序。Gradle套用下列建構規則時,會考量這個優先順序:

AndroidGradle外掛程式3.0.0以上版本包含新的依附元件機制,可在使用程式庫時自動比對變化版本。這表示應用程式的debug變化版本會自動採用程式庫的debug變化版本,以此類推。此機制也適用於變種版本:應用程式的freeDebug變化版本會使用程式庫的freeDebug變化版本。

舉例來說,假設應用程式設定了名為「staging」的建構類型,但其中一個程式庫依附元件並未設定該類型。當外掛程式嘗試建構「staging」版應用程式時,將無法得知要使用的程式庫版本,這時系統會顯示類似下方的錯誤訊息:

Error:Failedtoresolve:Couldnotresolveproject:mylibrary.Requiredby:project:app解決關於比對變化版本的建構錯誤應用程式與依附元件之間若無法直接比對變化版本,這個外掛程式包含的DSL元素可協助控管Gradle解決這個狀況。

如要透過Gradle建構設定,手動指定release建構類型的簽署設定,請按照下列步驟操作:

注意:最好不要在建構檔案中加入發布金鑰和KeyStore的密碼,因為這並不安全。請改為設定建構檔案,從環境變數取得這些密碼,或者讓建構程序提示您輸入這些密碼。

THE END
1.甘肃十大品牌甘肃著名品牌大全甘肃上市公司甘肃老字号→买购网3 兰州市西固区 兰州尚古堂食品有限公司 良工尚品 百合 4 兰州市西固区 兰州菁叶商贸有限公司 菁叶 百合 5 兰州市红古区 兰州鑫源现代农业科技开发有限公司 鑫源 葡萄、樱桃 6 兰州市榆中县 榆中茂源土豆产销专业合作社 儱上黑皇后 马铃薯 7 兰州市榆中县 榆中兴业养殖有限公司 祥泰农 驴肉、鸡肉 8 兰州市永https://www.maigoo.com/news/479054.html
2.兰州征集以旧换新居家适老化改造服务企业条件是……七里河区民政局:5115966 西固区民政局:7541267 安宁区民政局:7784769 红古区民政局:6252938 永登县民政局:6422216 榆中县民政局:5221238 皋兰县民政局:5721191 本次征集活动咨询、问答,请按以下方式联系: 联系人:倪楠 联系电话:8238090 邮箱:lzsmzjfcc@163.com (观澜新闻)https://i.ifeng.com/c/8cg0na7uZ2G
3.肛门坠涨,异物感,好像老要大便有问必答你好,肛门对症有异物感,一般是痔疮引起的,可以来医院查个肛门镜或者结肠镜检查看看,排除肠道有无肿瘤https://www.120ask.com/question/77066708.htm
4.钢铁精神永放光芒朱存成多次回到老部队看望和慰问,他先后给五个连队荣誉室,团史、师史馆建设出资200多万元,还从全国各地广泛收集大量历史文献资料无偿捐献部队。他主动拿出50万元帮助红古区武装部新建办公楼,离开部队近30年里,朱存成先后五次赴边疆拜谒烈士墓地祭奠长眠的战友;2016年8月1日,他组织几十名战友,专程到陕北为2连排长https://www.meipian.cn/3epzsv5j
5.供应珍藏普洱老饼珍藏普洱老饼采购有机绿茶九江特产中国名茶庐山云雾明前茶 江西绿茶 南昌市古今茶事实业有限公司 20.00元 点此询价 明前香茶 有机芽茶 绿茶 随州神农茶业进出口有限公司 480.00元 点此询价 中华狗牯脑茶叶批发 高档礼盒绿茶 遂川县大井冈贸易有限责任公司 1500.00元 点此询价 全国连锁加盟 茶叶批发 新茶春茶上市 早春乌牛早3Ahttps://m.makepolo.com/product/31307108.html
6.“老沈阳”文献史料(1)姜公祠郭松龄(绰号郭鬼子),反奉初起时,声势浩大,绝望之中的张作霖,一度都想和平交权了。但姜登选在郭松龄得势之时,主动上门去见,当即便被扣押劝降。姜登选痛骂郭松龄,并历数叛上之罪。https://www.jianshu.com/p/4e302ac91362
7.红古区红古镇召开禁毒专干网格员业务培训会2024-12-10 11:14·红古发布 【红古区融媒体中心讯】为进一步提升禁毒专干业务知识,巩固禁毒工作成果,夯实禁毒基层工作,进一步提升禁毒专干及网格员的禁毒业务水平和工作能力。12月9日,红古区红古镇召开禁毒业务知识培训会,镇禁毒专干、网格员参加了会议。 培训会依据红古区禁毒工作考核办法对村、社区毒品预防宣传https://www.toutiao.com/article/7446599108724408841/