小編給大家分享一下Android 配置gradle如何實現(xiàn)VersionCode自增,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專注于前郭網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供前郭營銷型網(wǎng)站建設(shè),前郭網(wǎng)站制作、前郭網(wǎng)頁設(shè)計、前郭網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造前郭網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供前郭網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。
我是因為構(gòu)建多渠道包的時候有這個需求,平常工作多個渠道包頻繁的打包,總會忘記versioncode提高一下,從而打包出來的apk無法覆蓋原先的安裝包,這里只介紹了自增VersionCode,網(wǎng)上還有動態(tài)設(shè)置versionName,有需要也可以看看其他人的實現(xiàn)。
以下介紹下配置Gradle自動增加versionCode的值
一、項目的根目錄新建一個文件version.properties
二、文件內(nèi)容寫上初始的versioncode
三、主gradle配置
def getVersionCode() { def versionFile = file('version.properties') if (versionFile.canRead()) { def Properties versionProps = new Properties() versionProps.load(new FileInputStream(versionFile)) def versionCode = versionProps['VERSION_CODE'].toInteger() def runTasks = gradle.startParameter.taskNames //僅在assembleRelease任務(wù)是增加版本號,其他渠道包在此分別配置 if ('assembleInsectRelease' in runTasks) { versionProps['VERSION_CODE'] = (++versionCode).toString() versionProps.store(versionFile.newWriter(), null) } return versionCode } else { throw new GradleException("Could not find version.properties!") } } android { .... }
只在release模式下才自增,保證測試的時候versionCode不增加
四、調(diào)用
def currentVersionCode = getVersionCode() defaultConfig { applicationId 'com.chongzzz.texas' minSdkVersion 15 targetSdkVersion 25 multiDexEnabled true versionCode currentVersionCode versionName "1.0.1.21" }
補(bǔ)充知識:Android 動態(tài)替換 Manifest.xml中的值
根據(jù)情況替換 Manifest.xml 中的值
android 中有很多個渠道,每個渠道都有 debug 和 release 版本, 如果Manifest.xml 中每個版本有不同的值
一般的可以用 manifestPlaceholders = [APP_KEY : '對應(yīng)的值'] 來替換,在 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、自定義任務(wù),和上面的其實差不多
兩個渠道
flavorDimensions 'defaultDimension' productFlavors { alibaba { } tencent { } }
每個渠道的版本的不同的值
ext { alibabaDebug = 'alibabaDebug' alibabaRelease = 'alibabaRelease' tencentDebug = 'tencentDebug' tencentRelease = 'tencentRelease' }
替換值
afterEvaluate { project.android.applicationVariants.all { variant -> // 自定義任務(wù) tasks.create("${variant.name}ManifestPlaceHolder", ManifestPlaceHolder) { current = variant } variant.outputs.first().processManifest.dependsOn "${variant.name}ManifestPlaceHolder" } } class ManifestPlaceHolder extends DefaultTask { @Input def current @TaskAction def changeManifestPlaceHolder() { current.mergedFlavor.manifestPlaceholders = [APP_KEY: project."${current.name}"] } }
以上是“Android 配置gradle如何實現(xiàn)VersionCode自增”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
標(biāo)題名稱:Android配置gradle如何實現(xiàn)VersionCode自增
文章地址:http://muchs.cn/article10/gppgdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、小程序開發(fā)、做網(wǎng)站、軟件開發(fā)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)