多渠道打包和一鍵完成(全部產品)打包並簽名
多渠道打包
方法1
第一步:新增渠道表示標籤
<!-- UMeng 配置-->
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
- 1
- 2
- 完整截圖
第二步:新增渠道
productFlavors { xiaomi {} qihu360 {} baidu {} wandoujia {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 完整的截圖
新增完之後我們在點選一下Gradle 的構建按鈕重新構建一下
第三步:測試
我們通過java程式碼獲取到meta標籤中的value來測試是否成功實現了多渠道打包:
public class MainActivity extends AppCompatActivity {
TextView tv_channel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_channel= (TextView) findViewById(R.id.main_tv_channel);
tv_channel.setText(getApplicationMetaValue("UMENG_CHANNEL" ));
}
private String getApplicationMetaValue(String name) {
String value= "";
try {
ApplicationInfo appInfo =getPackageManager()
.getApplicationInfo(getPackageName(),
PackageManager.GET_META_DATA);
value = appInfo.metaData.getString(name);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return value;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 完整截圖
測試程式碼新增完畢之後,我們現在點選AS右側的Gradle,我們此時就可以看到我們剛才新增的xiaomi、qihu360、baidu、wandoujia都出現了,如下圖
此時我們雙擊[installBaiduDebug],然後就可以看到如下結果:
這說明你沒有連結手機,連結上手機繼續重新雙擊一下,結果如下
這就說明你成功的安裝到你的手機上了,此時不會自動給你開啟app,需要手動開啟,效果如下:
然後我們在雙擊[installXiaomiDebug],然後看看
效果
到這裡我們來做一個小結,這裡我們在ManiFest中添加了meta標籤、在gradle(app)中添加了渠道產品對應的渠道名稱 ,最後我們測試多渠道打包,這裡還最重要的一點就是我這裡沒有讓大家去執行什麼命令,全部是讓大家點選來實現的,其實點選就是在執行命令:
./gradew installXiaomiDebug
效果如下:
一鍵完成打包(全部產品)並簽名
正如標題所示,我們如果要打包所有的產品,肯定不能像剛才一樣一個一個來打,那麼現在來使用另外一個按鈕(命令)
assemble
然後切換專案到Project檢視,找到app>build>outputs>apk,結果如下我們看到所有版本的apk都有了,有debug版的,debug沒有簽名的,release沒有簽名的。
如果我們現在只想打包所有的release版本怎麼辦呢?看下面的圖,如果想打release版就雙擊[assembleRelease] ,如果想打所有的debug版本就雙擊[assembleDebug]
- 小測試(我現在把apk目錄下的所有apk都刪除掉,然後只打所有release版本),效果如下:
- 問題(所有的apk生成了,但是沒有簽名是釋出不了的,腫莫辦?)
點選專案架構按鈕,如下:
然後點選app>Signing>+,然後填寫上簽名資訊,最後點選OK
我們做的上述操作其實就是在gradle檔案中新增如下資訊,不信你開啟你的gradle看看:
signingConfigs {
release {
keyAlias '測試程式'
keyPassword '證書密碼'
storeFile file('/Users/zsl/Downloads/android/appkey/test.keystore')
storePassword '簽名密碼'
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 完整截圖
此時我們把apk下面的apk檔案刪掉,然後雙擊[assembleRelease],結果發現還是沒有簽名啊
這是因為我們只是配置了簽名信息,但是我們沒有給產品(apk)指定,我們只需要在Gradle檔案中新增如下的程式碼就 ok了,我們來試試看看
//指定簽名為release
signingConfig signingConfigs.release
- 1
- 2
- 完整截圖
我們現在刪掉apk資料夾下所有的apk,然後選擇[assembleRelease]然後點選run按鈕,如下圖,這裡的run會記錄我們最近使用的run指令碼名稱,
現在我們來看看apk目錄下的安裝包是否簽名:
總結
開始我們在manifast檔案中添加了meta渠道標籤,然後修改了gradle的檔案添加了不同的渠道產品,最後我們在程式碼中讀取了meta標籤的value並且顯示在一個textview上,我們做了測試。
接下來我們又添加了簽名配置,最後我們指定了給release版本的簽名,簽名的名稱是release,最後我們終於搞定了一鍵多渠道打包簽名,下一篇給大家分享AS生成jks簽名證書,並且apk簽名。
有興趣的童鞋可以關注我的Blog,我的專欄會持續更新Android Studio 權威教程,以及2015 I/O大會上的NDK的配置和編譯,我也全部會分享給大家。
並且我收到了CSND 的講師邀請,後期我會把這些Android Studio的使用教程錄製成視訊。
/**
* --------------
* 歡迎轉載 | 轉載請註明
* --------------
* 如果對你有幫助,請點選|頂|
* --------------
* 請保持謙遜 | 你會走的更遠
* --------------
* @author zsl
* @github https://github.com/yy1300326388
* @blog http://blog.csdn.net/yy1300326388
*/