Gradle多渠道打包[umeng]

轉(zhuǎn)發(fā)請注明出處:
安卓猴的博客(http://sunjiajia.com)


前言

國內(nèi)Android應用市場品種太多眯亦,血統(tǒng)不純,每次上線App都打包打到手軟较解,上傳上到吐血!好在我們有了Android studio和gradle,一條命令打包各種渠道版本App书闸!

正文

Umeng多渠道

我們在項目中會使用統(tǒng)計SDK尼变,用的最流行的當屬umeng了吧。這里我們就用友盟來說明浆劲。
用了友盟的App的清單文件AndroidManifest.xml中都會寫上meta-data嫌术,來區(qū)分不同的渠道:

<meta-data
    android:name="UMENG_CHANNEL"
    android:value="Channel_ID" />

1.將Channel_ID更改為${UMENG_CHANNEL_VALUE},如下:

<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />

2.在appbuild.gradle設置produceFlavors

  productFlavors {
    xiaomi {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
    }
    qihoo {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qihoo"]
    }
    baidu {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
    }
    wandoujia {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
    }
    qq {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qq"]
    }
  }

3.來看看我在項目中使用的build.gradle文件內(nèi)容:

apply plugin: 'com.android.application'

def releaseTime() {
  return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

android {
  compileSdkVersion 23
  buildToolsVersion "23.0.0"

  defaultConfig {
    // 這里的applicationId根據(jù)自己的替換
    applicationId "com.sunjiajia.xxxxx"
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 1
    versionName "0.0.1"
    multiDexEnabled true //dex突破65535限制
    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
  }
  lintOptions {
    disable 'MissingTranslation', 'ExtraTranslation'
    abortOnError false
  }

  signingConfigs {
    // /home/monkey/Projects/AndroidStudioProjects/debug.jks是簽名文件所在全路徑

    // debug時打包用的簽名
    debug {
      keyAlias 'debug'
      keyPassword '123456'
      storeFile file('/home/monkey/Projects/AndroidStudioProjects/debug.jks')
      storePassword '123456'
    }

     // release時打包用的簽名
    release {
      keyAlias 'monkey'
      keyPassword '123123'
      storeFile file('/home/monkey/Projects/AndroidStudioProjects/monkey.jks')
      storePassword '123123'
    }
  }

  buildTypes {
    debug {
      // 顯示Log
      buildConfigField "boolean", "LOG_DEBUG", "true"

      versionNameSuffix "-debug"
      minifyEnabled false
      zipAlignEnabled false
      shrinkResources false
      signingConfig signingConfigs.debug
    }
    release {
      // 不顯示Log
      buildConfigField "boolean", "LOG_DEBUG", "false"

      minifyEnabled true
      zipAlignEnabled true
      // 移除無用的resource文件
      shrinkResources true

      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      signingConfig signingConfigs.release

      applicationVariants.all { variant ->
        variant.outputs.each { output ->
          def outputFile = output.outputFile
          if (outputFile != null && outputFile.name.endsWith('.apk')) {
            // 輸出apk名稱為appname_v1.0_2015-09-15_09-57-58_wandoujia.apk
            // 下面的appname改為你自己的app name
            def fileName = "appname_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
            output.outputFile = new File(outputFile.parent, fileName)
          }
        }
      }
    }
  }

  packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/notice.txt'
    exclude 'META-INF/license.txt'
    exclude 'META-INF/dependencies.txt'
    exclude 'META-INF/LGPL2.1'
  }

  // 友盟多渠道打包
  productFlavors {
    xiaomi {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
    }
    qihoo {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qihoo"]
    }
    baidu {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
    }
    wandoujia {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
    }
    qq {
      manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qq"]
    }
  }
}

dependencies {
  testCompile 'junit:junit:4.12'
  compile 'com.android.support:appcompat-v7:23.0.1'
  compile 'com.android.support:design:23.0.1'
}

命令創(chuàng)建task

1.進入項目的根目錄:

// 打包全部Debug版本
./gradlew assembleDebug
// 打包全部Release版本
./gradlew assembleRelease

2.assembleProduct Flavor 結(jié)合創(chuàng)建指定渠道的任務版本牌借。例如:

// 打包wandoujia渠道的Release版本和Debug版本
./gradlew assembleWandoujia
// 打包wandoujia渠道的Release版本
./gradlew assembleWandoujiaRelease

結(jié)語

大家有什么問題度气,在下面留言就可以了,也可以關(guān)注我的微博@安卓猴膨报,交流更及時磷籍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市现柠,隨后出現(xiàn)的幾起案子院领,更是在濱河造成了極大的恐慌,老刑警劉巖够吩,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件比然,死亡現(xiàn)場離奇詭異,居然都是意外死亡周循,警方通過查閱死者的電腦和手機强法,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門万俗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饮怯,你說我怎么就攤上這事闰歪。” “怎么了硕淑?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵课竣,是天一觀的道長。 經(jīng)常有香客問我置媳,道長于樟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任拇囊,我火速辦了婚禮迂曲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寥袭。我一直安慰自己路捧,他們只是感情好,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布传黄。 她就那樣靜靜地躺著杰扫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膘掰。 梳的紋絲不亂的頭發(fā)上章姓,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機與錄音识埋,去河邊找鬼凡伊。 笑死,一個胖子當著我的面吹牛窒舟,可吹牛的內(nèi)容都是我干的系忙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼惠豺,長吁一口氣:“原來是場噩夢啊……” “哼银还!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洁墙,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤见剩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扫俺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苍苞,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羹呵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骂际。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冈欢,靈堂內(nèi)的尸體忽然破棺而出歉铝,到底是詐尸還是另有隱情,我是刑警寧澤凑耻,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布太示,位于F島的核電站,受9級特大地震影響香浩,放射性物質(zhì)發(fā)生泄漏类缤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一邻吭、第九天 我趴在偏房一處隱蔽的房頂上張望餐弱。 院中可真熱鬧,春花似錦囱晴、人聲如沸膏蚓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驮瞧。三九已至,卻和暖如春枯芬,著一層夾襖步出監(jiān)牢的瞬間论笔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工破停, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翅楼,地道東北人尉剩。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓真慢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親理茎。 傳聞我的和親對象是個殘疾皇子黑界,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容