gradle多渠道打包及友盟統計-eclipse版本

來源:互聯網
上載者:User

標籤:gradle   eclispe   批量打包   

在進行渠道打包的之前,先看看準備篇,知道打包為了什麼。參見1.0android批量打包認知。eclipse中使用gradle多渠道打包全部流程

一.產生gradle檔案,配置本地的gradle環境1.選中需要打包的項目右鍵選擇expert->產生gradle檔案,如所示

2.完成第一步後,重新整理項目可以得到如所示的檔案


顯然項目中多出了gradle.build檔案,gradle檔案夾。如果沒有出現,點擊項目右鍵-refresh重新整理過後看到已經產生的gradle檔案夾,如:

3.開啟上述gradle-wrapper.properties檔案

紅色表示部分:使用gradle打包的時候,所需要使用的檔案。

4.複製上述的url,或者直接到官網下載相應的gradle-1.12-all.zip.為什麼要下載對應的,可能是由於版本之間的差異,導致打包失敗。應該也可以嘗試升級adt或者eclipse中的gradle外掛程式的版本。

以上是官網下載的,在紅色標誌部分,可以選擇想要下載的對應版本。在初期我下載最高版本,最終打包沒有成功。下載了匹配版本打包成功。可是測試高版本,如果不行,就使用匹配的對應版本。這裡面選擇了匹配的對應版本。5.配置gradle的本地環境。gradle-1.12-all的解壓路徑
  GRADLE_HOME        D:\Gradle\gradle-1.12-all\gradle-1.12

配置一下path(GRADLE_HOME只是作為一個根路徑而已)

建立一個 gradle-repo檔案夾配置環境變數

  GRADLE_USER_HOME

  D:\Gradle\gradle-repo

測試gradle環境是否配置成功。

在命令提示字元中輸入:gradle -version


出現如結果,表示gradle配置成功。

二.使用gradle進行打包

1.查看需要打包的項目中的gradle.build檔案(預設產生的檔案)並添加相關指令碼代碼

buildscript { //buildscript中的聲明是gradle指令碼自身需要使用的資源。 //可以聲明的資源套件括依賴項、第三方外掛程式、maven倉庫地址等    repositories {        mavenCentral()    }    dependencies {        classpath 'com.android.tools.build:gradle:0.12.+'    }}apply plugin: 'android'//在build.gradle檔案中直接聲明的依賴項、倉庫地址等資訊是項目自身需要的資源dependencies {    compile fileTree(dir: 'libs', include: '*.jar')}android {    compileSdkVersion 19    buildToolsVersion "19.1.0"    sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src']            resources.srcDirs = ['src']            aidl.srcDirs = ['src']            renderscript.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']        }        // Move the tests to tests/java, tests/res, etc...        instrumentTest.setRoot('tests')        // Move the build types to build-types/<type>        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...        // This moves them out of them default location under src/<type>/... which would        // conflict with src/ being used by the main source set.        // Adding new build types or product flavors should be accompanied        // by a similar customization.        debug.setRoot('build-types/debug')        release.setRoot('build-types/release')    }       lintOptions {     abortOnError false   }  ////////////////////以上代碼打出了最簡單的包,一般情況下產生了兩個包//////////////////// //*-debug-unaligned.apk:未進行zipAlign最佳化的apk包 //*-release-unsigned.apk:未簽名的apk包 //以上兩種包都不是正式所需要的包,添加下面代碼打出簽名包     signingConfigs {   myConfig {        //絕對路徑和相對路徑都可以         storeFile file("E:\\sjjywork\\key\\key4VipOneToOne\\JyVipKey.keystore")        storePassword "sjjy,vip"        keyAlias "jiayuan_vip_key"        keyPassword "sjjy,vip"   }  } buildTypes{      release {      //1.添加簽名      signingConfig  signingConfigs.myConfig      //2.runProguard 執行混淆代碼      runProguard true      //混淆規則檔案       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'      } }      //添加了上述代碼之後,打出了已經簽名的apk:其中xxx-release-unaligned.apk是簽名為進行zipAligned最佳化的包   //xxx-release.apk是簽名和zipAlign最佳化過的包   //添加混淆代碼的執行代碼如上第二步,就可以實現打出混淆包      //下面的代碼開始打批量包      productFlavors {     GooglePlay{      //替換manifest檔案中的預留位置(placeHolder)        manifestPlaceholders = [UMENG_CHANNEL_VALUE:"GooglePlay"]     }     Store360{        manifestPlaceholders = [UMENG_CHANNEL_VALUE:"Store360" ]       }     //在下面繼續添加不同渠道的渠道代碼 } //通過以下方式是批量的設定// productFlavors.all { flavor ->  //  flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]  //}}tasks.withType(Compile) { options.encoding = "UTF-8" }

在這個檔案中手動添加的代碼都已經做了詳細的注釋。
2.manifest中添加友盟統計的key和渠道代碼(關於友盟統計的key的擷取和添加,直接參考友盟統計的文檔,不多做解釋)打渠道包的目的是什嗎?為什麼要打渠道包?這個可以見<<1.0apk批量打包認知>>得到的結論,是要做統計。上面的檔案中,使用了友盟統計。此時需要在manifest.xml添加如下代碼:
<!-- 渠道id,key直接使用umeng的,方便接入umeng sdk -->        <meta-data android:name="UMENG_APPKEY" android:value="YOUR_APP_KEY" ></meta-data>        <!--配置placeHolder(預留位置),用於多渠道打包的時候替換-->        <meta-data            android:name="UMENG_CHANNEL"            android:value="${UMENG_CHANNEL_VALUE}" />

打批量包的時候,主要使用到的placeHolder:${UMENG_CHANNEL_VALUE} 資訊清單檔中的一個預留位置。在批量打包的過程批量替換這個UMENG_CHANNEL_VALUE這個欄位產生不同的apk包。
3.正式執行批量打包在控制台中,進入項目所在的目錄,執行gradle clean,gradle  build。如果沒有報錯,將打包成功如:gradle clean

報錯的原因:注釋和代碼之間添加空行。因為對這個指令碼語言不太熟悉,所以不明具體原因。執行gradle build


到此整個批量打包的過程就完美結束。重新整理專案檔夾看看打出的包:
其中-項目名稱-渠道-release.apk就是最終我們所需的渠道apk。
整個批量打包的過程大概十幾分鐘就搞定了。但是如果對這裡面的打包過程是不是還存在很多疑惑。推薦看如下幾篇文章.
①自動產生的gradle.build檔案 直接進行打包會產生那些包?各種不同的包,有什麼區別?參見2.1 gradle打包blog②zipAlign最佳化是什麼意思?參見2.4③lint工具是做什麼用的?參見2.5④配置和打包的全過程大概十多分鐘。但是如果出現報錯,可就要耗費時間了。常見的報錯參考以下文章:參見2.3gradle打包遇到的錯誤


至此算是打包的所有流程真正的結束了。加入統計功能的代碼,直接根據友盟統計的文檔添加相應位置的代碼就可以了。

以上參見部分,未完待續....








gradle多渠道打包及友盟統計-eclipse版本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.