Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
我是因為構建多渠道包的時候有這個需求,平常工作多個渠道包頻繁的打包,總會忘記versioncode提高一下,從而打包出來的apk無法覆蓋原先的安裝包,這里只介紹了自增VersionCode,網上還有動態設置versionName,有需要也可以看看其他人的實現。
以下介紹下配置Gradle自動增加versionCode的值
一、項目的根目錄新建一個文件version.properties
二、文件內容寫上初始的versioncode
三、主gradle配置
defgetVersionCode(){defversionFile=file('version.properties')if(versionFile.canRead()){defPropertiesversionProps=newProperties()versionProps.load(newFileInputStream(versionFile))defversionCode=versionProps['VERSION_CODE'].toInteger()defrunTasks=gradle.startParameter.taskNames//僅在assembleRelease任務是增加版本號,其他渠道包在此分別配置if('assembleInsectRelease'inrunTasks){versionProps['VERSION_CODE']=(++versionCode).toString()versionProps.store(versionFile.newWriter(),null)}returnversionCode}else{thrownewGradleException("Couldnotfindversion.properties!")}}android{....}
只在release模式下才自增,保證測試的時候versionCode不增加
四、調用
defcurrentVersionCode=getVersionCode()defaultConfig{applicationId'com.chongzzz.texas'minSdkVersion15targetSdkVersion25multiDexEnabledtrueversionCodecurrentVersionCodeversionName"1.0.1.21"}
補充知識:Android 動態替換 Manifest.xml中的值
根據情況替換 Manifest.xml 中的值
android 中有很多個渠道,每個渠道都有 debug 和 release 版本, 如果Manifest.xml 中每個版本有不同的值
一般的可以用 manifestPlaceholders = [APP_KEY : '對應的值'] 來替換,在 debug和 release 的時候也可以,但是多渠道的時候可能就會有些問題了
解決方式
1、簡單
兩個渠道
flavorDimensions'defaultDimension'productFlavors{alibaba{}tencent{}}
每個渠道的版本的不同的值
ext{alibabaDebug='alibabaDebug'alibabaRelease='alibabaRelease'tencentDebug='tencentDebug'tencentRelease='tencentRelease'}
替換值
afterEvaluate{project.android.applicationVariants.all{variant->//最簡單的方法variant.mergedFlavor.manifestPlaceholders=[APP_KEY:project."${variant.name}"]}}
2、自定義任務,和上面的其實差不多
兩個渠道
flavorDimensions'defaultDimension'productFlavors{alibaba{}tencent{}}
每個渠道的版本的不同的值
ext{alibabaDebug='alibabaDebug'alibabaRelease='alibabaRelease'tencentDebug='tencentDebug'tencentRelease='tencentRelease'}
替換值
afterEvaluate{project.android.applicationVariants.all{variant->//自定義任務tasks.create("${variant.name}ManifestPlaceHolder",ManifestPlaceHolder){current=variant}variant.outputs.first().processManifest.dependsOn"${variant.name}ManifestPlaceHolder"}}classManifestPlaceHolderextendsDefaultTask{@Inputdefcurrent@TaskActiondefchangeManifestPlaceHolder(){current.mergedFlavor.manifestPlaceholders=[APP_KEY:project."${current.name}"]}}
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
什么是股權投資咨詢業務?股權咨詢業務是指投資咨詢機構接受委托,對擬投資項目涉及的資產評估、股權轉讓、并購等事項提供意見。股權投資一般多少錢?股權投資就是購買看中企業的股份,如果該企業處于上升期,那么購買股份會增值。投資就會有風險,股權投資也屬于投資也是會有風險的。一般股權投資金額為100萬元起?!端侥纪顿Y基金監督管理暫行辦法》采取了適度監管的原則,在準入環節不對私募基金管理人、私募基金進行前置審批...
余額寶保本嗎?余額寶對接的是貨幣型基金,原則上是不保本的,但從余額寶歷年的數據來看,收益穩定且風險極小,沒有虧損的情況。貨幣型基金投資的標的一般都是無風險的貨幣市場工具,需要安全性高期限短,比如:現金、大額存單、一年以內(含一年)的銀行定期存款等資產,不得投資于風險較高,期限較長的資產,比如:股票、可轉換債券、信用等級在AAA級以下的企業債券和收流通限制的證券等資產。長期存在余額寶的錢有風險嗎?有...
據了解,2021年12月31日20:30,羅振宇將準時獨自登臺,為大家奉上一場“特殊的跨年演講”,深圳衛視、抖音、西瓜視頻和得到APP全程直播。12月28日消息,得到App微博宣布,因疫情防控,得到App創始人羅振宇的跨年演講《時間的朋友》將不能安排觀眾進場,已啟動退票程序。不過羅振宇將準時登臺,他將面對12000個空座位用最大的心力為大家奉上一場特殊的跨年演講。對于此次跨...