Android Studio多渠道打包和一鍵完成(全部產(chǎn)品)打包并簽名

2021-01-12 15:38 更新

好久沒(méi)有更新blog了,今天給大家?guī)?lái)的是AS 的多渠道打包,并且我們還要驗(yàn)證是否實(shí)現(xiàn)了多渠道打包的功能,最后在讓大家爽一下實(shí)現(xiàn)一鍵打包所有的渠道包并且給apk簽名


多渠道打包

方法1

第一步:添加渠道表示標(biāo)簽

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

  • 完整截圖

第二步:添加渠道

productFlavors {
       xiaomi {}
       qihu360 {}
       baidu {}
       wandoujia {}
   }




   productFlavors.all {
       flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
   }

  • 完整的截圖

這里寫圖片描述

添加完之后我們?cè)邳c(diǎn)擊一下Gradle 的構(gòu)建按鈕重新構(gòu)建一下

這里寫圖片描述

第三步:測(cè)試

我們通過(guò)Java代碼獲取到meta標(biāo)簽中的value來(lái)測(cè)試是否成功實(shí)現(xiàn)了多渠道打包:

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;
    }
}

  • 完整截圖

這里寫圖片描述

測(cè)試代碼添加完畢之后,我們現(xiàn)在點(diǎn)擊AS右側(cè)的Gradle,我們此時(shí)就可以看到我們剛才添加的xiaomi、qihu360、baidu、wandoujia都出現(xiàn)了,如下圖

這里寫圖片描述

此時(shí)我們雙擊[installBaiduDebug],然后就可以看到如下結(jié)果:

這里寫圖片描述

這說(shuō)明你沒(méi)有鏈接手機(jī),鏈接上手機(jī)繼續(xù)重新雙擊一下,結(jié)果如下

這里寫圖片描述

這就說(shuō)明你成功的安裝到你的手機(jī)上了,此時(shí)不會(huì)自動(dòng)給你打開app,需要手動(dòng)打開,效果如下:

這里寫圖片描述

然后我們?cè)陔p擊[installXiaomiDebug],然后看看

這里寫圖片描述

效果

這里寫圖片描述

到這里我們來(lái)做一個(gè)小結(jié),這里我們?cè)贛aniFest中添加了meta標(biāo)簽、在gradle(app)中添加了渠道產(chǎn)品對(duì)應(yīng)的渠道名稱 ,最后我們測(cè)試多渠道打包,這里還最重要的一點(diǎn)就是我這里沒(méi)有讓大家去運(yùn)行什么命令,全部是讓大家點(diǎn)擊來(lái)實(shí)現(xiàn)的,其實(shí)點(diǎn)擊就是在運(yùn)行命令:./gradew installXiaomiDebug 效果如下:

這里寫圖片描述


一鍵完成打包(全部產(chǎn)品)并簽名

正如標(biāo)題所示,我們?nèi)绻虬械漠a(chǎn)品,肯定不能像剛才一樣一個(gè)一個(gè)來(lái)打,那么現(xiàn)在來(lái)使用另外一個(gè)按鈕(命令)assemble

這里寫圖片描述

然后切換項(xiàng)目到Project視圖,找到app>build>outputs>apk,結(jié)果如下我們看到所有版本的apk都有了,有debug版的,debug沒(méi)有簽名的,release沒(méi)有簽名的。

這里寫圖片描述

如果我們現(xiàn)在只想打包所有的release版本怎么辦呢?看下面的圖,如果想打release版就雙擊[assembleRelease] ,如果想打所有的debug版本就雙擊[assembleDebug]

這里寫圖片描述

  • 小測(cè)試(我現(xiàn)在把a(bǔ)pk目錄下的所有apk都刪除掉,然后只打所有release版本),效果如下:

這里寫圖片描述

  • 問(wèn)題(所有的apk生成了,但是沒(méi)有簽名是發(fā)布不了的,腫莫辦?)

點(diǎn)擊項(xiàng)目架構(gòu)按鈕,如下:

這里寫圖片描述

然后點(diǎn)擊app>Signing>+,然后填寫上簽名信息,最后點(diǎn)擊OK

這里寫圖片描述

我們做的上述操作其實(shí)就是在gradle文件中添加如下信息,不信你打開你的gradle看看:

signingConfigs {
        release {
            keyAlias '測(cè)試程序'
            keyPassword '證書密碼'
            storeFile file('/Users/zsl/Downloads/android/appkey/test.keystore')
            storePassword '簽名密碼'
        }
    }

  • 完整截圖

這里寫圖片描述

此時(shí)我們把a(bǔ)pk下面的apk文件刪掉,然后雙擊[assembleRelease],結(jié)果發(fā)現(xiàn)還是沒(méi)有簽名啊

這里寫圖片描述

這是因?yàn)槲覀冎皇桥渲昧撕灻畔?,但是我們沒(méi)有給產(chǎn)品(apk)指定,我們只需要在Gradle文件中添加如下的代碼就 ok了,我們來(lái)試試看看

//指定簽名為release
signingConfig signingConfigs.release
  • 完整截圖

這里寫圖片描述

我們現(xiàn)在刪掉apk文件夾下所有的apk,然后選擇[assembleRelease]然后點(diǎn)擊run按鈕,如下圖,這里的run會(huì)記錄我們最近使用的run腳本名稱,

這里寫圖片描述

現(xiàn)在我們來(lái)看看apk目錄下的安裝包是否簽名:

這里寫圖片描述

總結(jié)

開始我們?cè)趍anifast文件中添加了meta渠道標(biāo)簽,然后修改了gradle的文件添加了不同的渠道產(chǎn)品,最后我們?cè)诖a中讀取了meta標(biāo)簽的value并且顯示在一個(gè)textview上,我們做了測(cè)試。

接下來(lái)我們又添加了簽名配置,最后我們指定了給release版本的簽名,簽名的名稱是release,最后我們終于搞定了一鍵多渠道打包簽名,下一篇給大家分享AS生成jks簽名證書,并且apk簽名。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)