gradle打包教程,gradle打包

來源:互聯網
上載者:User

gradle打包教程,gradle打包

需求:開發了一個App,賣給了A公司(baidustore),此時B公司(lestore)找上門要定製+額外的功能模組……

我們統計一下這兩個項目有什麼區別

公司名稱 baidustore lestore
包名 com.baudustore.test com.lestore.test
Umeng渠道號 BAIDUSTORE LESTORE
應用程式名稱 AndroidDemoForBaidu AndroidDemoForLeStore
資源 res res
版本號碼 1.0_baidu 1.0_lestore
簽名 huangyanan.keystore huangyn1.keystore
功能A
功能B
功能CDEFG等
…… …… ……

我們可以看到絕大部分功能都是一樣的,我們可以先把功能全做了,後期打包時通過配置項分別打出滿足A公司B公司需求的app,還可以為CDE公司做私人定製……
gradle可以做這樣的事情,現在知道的有兩種方法:
1、建立檔案方法
2、不需要建立檔案,使用gradle的manifestPlaceholders方法

主要步驟:
1、添加不同的signing
開啟project structure選擇signing tab添加不同的簽名key,如:

2、添加不同的打包資訊
開啟flavors tab,添加flavor,添加包名、簽名配置、版本名等,如:

修改之後,開啟gradle.build檔案,可以看到如下內容:

android {    signingConfigs {        huangyanan {            storeFile file('/Users/huangyanan/huangyanan.keystore')            keyAlias 'huangyanan'            keyPassword '111111'            storePassword '111111'        }        huangyn1 {            storeFile file('/Users/huangyanan/Documents/huangyn1.keystore')            keyAlias 'huangyn1'            keyPassword '111111'            storePassword '111111'        }    }……省略……    productFlavors {        baidustore {            minSdkVersion 21            applicationId 'com.baudustore.test'            signingConfig signingConfigs.huangyanan            targetSdkVersion 21            versionCode 1            versionName '1.0_baidu'        }        lestore {            minSdkVersion 21            applicationId 'test.lestore.test'            signingConfig signingConfigs.huangyn1            targetSdkVersion 21            versionCode 1            versionName '1.0_lestore'        }    }}……省略……

此時打包,就有不同的包名對應不同的簽名key的release包了
3、修改umeng 渠道號:
開啟AndroidManifest.xml檔案,添加如下代碼:

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

開啟app的build.gradle檔案,在productFlavors中的lestore和baidustore的{}中分別添加

manifestPlaceholders = [UMENG_CHANNEL: "LESTORE"]
manifestPlaceholders = [UMENG_CHANNEL: "BAIDUSTORE"]

這裡使用的是gradle的manifestPlaceholders方法

4、修改應用程式名稱和資源
在app/src目錄下建立和Flavor名稱一致的檔案夾,如:

按照目錄結構把我們想要進行替換或修改的資源放進來:

這裡簡單修改了圖片的launcher_icon和app_name

渠道號修改也可以用這種方法來做,去替換AndroidManifest.xml中某些節點的東西。

5、打包
先clean project,然後在項目所在目錄輸入命令
mac 和linux輸入

./gradlew build 

windows系統

gradlew.bat build 

執行完畢,可以在app/build/outputs/apk目錄下看到打包好的app了

6、問題
看有的人說可以使用manifestPlaceholders方法去替換activity名稱,試了一下沒有成功,後續看看怎麼弄的。

demo

參考:
http://tools.android.com/tech-docs/new-build-system/user-guide

Gradle Android外掛程式使用者指南中文版

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.