最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 配置gradle實現(xiàn)VersionCode自增實例

 更新時間:2020年03月24日 12:01:53   作者:Ikulm  
今天小編就為大家分享一篇Android 配置gradle實現(xiàn)VersionCode自增實例,具有很好的 參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我是因為構(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"
}

補充知識: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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Canvas繪制文字橫縱向?qū)R

    Android Canvas繪制文字橫縱向?qū)R

    這篇文章主要介紹了Android Canvas繪制文字橫縱向?qū)R,Align屬性決定了使用該畫筆時,相較于繪制點的水平對稱方式,分別是LEFT、CENTER、RIGHT,更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章詳細(xì)內(nèi)容
    2022-06-06
  • 讓Android應(yīng)用不被殺死(killer)的方法

    讓Android應(yīng)用不被殺死(killer)的方法

    這篇文章主要介紹了讓Android應(yīng)用不被殺死(killer)的方法,本文講解了實現(xiàn)方法和原理分析,需要的朋友可以參考下
    2015-04-04
  • Android頁面之間進行數(shù)據(jù)回傳的方法分析

    Android頁面之間進行數(shù)據(jù)回傳的方法分析

    這篇文章主要介紹了Android頁面之間進行數(shù)據(jù)回傳的方法,結(jié)合實例形式分析了Android頁面之間進行數(shù)據(jù)的傳遞與處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Android實現(xiàn)鎖屏熒光效果

    Android實現(xiàn)鎖屏熒光效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)熒光效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Android中Listview點贊功能的實現(xiàn)

    Android中Listview點贊功能的實現(xiàn)

    最近一段時間在研究android方面的知識,利用listview實現(xiàn)點贊功能,下面小編通過本文給大家介紹下基本思路,需要的朋友可以參考下
    2016-11-11
  • Delphi在Android下使用Java庫的方法

    Delphi在Android下使用Java庫的方法

    這篇文章主要介紹了Delphi在Android下使用Java庫的方法,本文以Android的USB串口通訊庫為例,給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Android開發(fā)中synchronized的三種使用方式詳解

    Android開發(fā)中synchronized的三種使用方式詳解

    這篇文章主要介紹了Android開發(fā)中synchronized的三種使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • 福利來了!帶你“愛上Android”

    福利來了!帶你“愛上Android”

    送書!一言不合就送書,《愛上Android》一書深入淺出,詳細(xì)講解了Android開發(fā)的知識,帶著大家愛上Android,帶領(lǐng)大家開啟真正的Android開發(fā)之旅
    2017-08-08
  • Android 中ListView setOnItemClickListener點擊無效原因分析

    Android 中ListView setOnItemClickListener點擊無效原因分析

    這篇文章主要介紹了Android 中ListView setOnItemClickListener點擊無效原因分析的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Android?無障礙服務(wù)?performAction?調(diào)用過程分析

    Android?無障礙服務(wù)?performAction?調(diào)用過程分析

    這篇文章主要介紹了Android?無障礙服務(wù)?performAction?調(diào)用過程分析,無障礙服務(wù)可以模擬一些用戶操作,無障礙可以處理的對象,通過類?AccessibilityNodeInfo?表示,通過無障礙服務(wù),可以通過它的performAction方法來觸發(fā)一些action
    2022-06-06

最新評論

潍坊市| 卢氏县| 云阳县| 黄石市| 共和县| 喀喇| 海阳市| 介休市| 古交市| 玛纳斯县| 宜兴市| 六盘水市| 曲麻莱县| 芜湖市| 遂平县| 岳阳市| 绥阳县| 安塞县| 武功县| 旅游| 辽宁省| 临沭县| 聂拉木县| 信宜市| 安福县| 霞浦县| 长乐市| 铁岭县| 墨江| 彭阳县| 栾城县| 莎车县| 苍梧县| 林芝县| 桓台县| 阿拉善左旗| 思南县| 漳平市| 耿马| 泰安市| 三明市|