欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android 二次打包完成apk多渠道打包的方法

 更新時間:2017年10月30日 09:18:42   作者:君莫醉  
本篇文章主要介紹了android 二次打包完成apk多渠道打包的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹將渠道號寫入assets文件里面,通過解壓apk修改assets里的文件,用Java代碼生成jarsigner腳本并運(yùn)行腳本二次打包的方式來獲取新的渠道包

此打包方式一個渠道包只需要5秒左右,可實(shí)現(xiàn)快速打渠道包

對于為了在assets獲取渠道號來打渠道包的方法,其實(shí)很簡單,你只要知道apk里面裝的什么東西,就會了

將apk用壓縮方式解壓,你會得到像

這樣的文件列表,其中就有assets文件夾;當(dāng)然前提條件是你在項(xiàng)目中必須創(chuàng)建assets文件夾。既然有了這個文件夾,安卓里面又能通過代碼獲取這個文件夾里面的文件,并讀取文件:

  private static String getChannel(Context context){
    try {
      InputStream in = context.getAssets().open("qudao.txt");
      int size = in.available();
      byte[] buffer = new byte[size];
      in.read(buffer);
      in.close();
      String txt = new String(buffer, "utf-8");
      Log.d("qudaobiaoji:",txt);
      return txt;
    } catch (IOException e) {
      e.printStackTrace();
    }
    return "未知";
  }

那么接下來就只需要通過修改里面的文件,并重新打包,簽名來打渠道包了。

如何修改里面的文件,并打包簽名,我特地寫了一個打包工具,通過java工程生成jar,通過命令行運(yùn)行jar讀取配置文件然后生成打包腳本,自動運(yùn)行腳本進(jìn)行打包

介紹

在java工程中的入口是

main函數(shù),

 public static void main(String[] args) {}

以前一直不知道args是干嘛的,后來通過命令行傳入?yún)?shù),才知道args可以帶入命令行的參數(shù)

1.讀取配置文件:

通過文件的方式傳入要打的渠道包,及渠道包的名字,渠道號

讀文件操作很簡單,就是通過流的形式,不多介紹,可以自行閱讀源碼

文件配置:

app_path=app-release_aligned_signed.apk;
keystore=ej_v3.jks;
keyAlias=ej_v3;
keyPassword=123456;
storePassword=123456;
contents=優(yōu)億,魅族;
apkname=youyi,meizu;

2.解壓apk文件

  1. 通過java代碼將apk解壓出來、
  2. 通過ZipFile來解壓文件
  3. 解壓完后刪除簽名文件

3.替換渠道號文件

獲取解壓后的assets路徑,并修改里面的渠道文件內(nèi)容,

        //------修改內(nèi)容
        String content = contents[i];
        String apkn = apkNames[i];
        buffer.setLength(0);
        String path = buffer
            .append(prefixName).append(ZipUtil.UPDATE_PATH_NAME).toString();
        System.out.println("path:"+path);
        br = new BufferedReader(new InputStreamReader(new FileInputStream(path),"UTF-8"));
        while ((br.readLine()) != null) {
          osw = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");
          osw.write(content, 0, content.length());
          osw.flush();
        }

4.重新壓縮生成.apk文件,此文件是未簽名文件

ZipUtil.compress(prefixName,targetPath+"\\"+unsing+"\\"+apkn+"_unsin.apk");

5.生成簽名腳本內(nèi)容

復(fù)制代碼 代碼如下:

batStr+="jarsigner -verbose -keystore "+keystore+" -signedjar "+targetPath+"\\"+sing+"\\"+apkn+"_sin.apk "+targetPath+"\\"+unsing+"\\"+apkn+"_unsin.apk"+" "+keyAlias+"\n";

6.運(yùn)行簽名腳本

  public static void runbat(String batName) {
    String cmd = "cmd /c start "+ batName;// pass
    try {
      Process ps = Runtime.getRuntime().exec(cmd);
      ps.waitFor();
    } catch (IOException ioe) {
      ioe.printStackTrace();
    }
    catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    System.out.println("child thread donn");
  }

有興趣的同學(xué)可以看下源碼,在增加別的渠道的情況下不需要另外配置gradle參數(shù),直接修改配置文件,運(yùn)行腳本就行了

今天網(wǎng)上查了下jarsigner打包命令,發(fā)現(xiàn)可以直接在腳本中輸入密碼,可直接打包,不用反復(fù)輸入密碼
腳本:

jarsigner -verbose -keystore test.jks -storepass 123456 -keypass 123
456 -signedjar target\sing\youyi_sin.apk target\unsing\youyi_unsin.apk test

源碼地址:https://github.com/dengzhi00/ApkQuDao

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android studio 快捷鍵大全

    Android studio 快捷鍵大全

    android studio使用教程,主要為大家介紹的是android studio快捷鍵,如果我們掌握了一些常用快捷鍵,那么在使用android studio的過程中會達(dá)到事半功倍的效果哦
    2016-01-01
  • Android編程中全局變量問題分析

    Android編程中全局變量問題分析

    這篇文章主要介紹了Android編程中全局變量,較為詳細(xì)的分析了全局變量的功能并結(jié)合案例形式講述了全局變量所引起的問題及相應(yīng)的解決技巧,需要的朋友可以參考下
    2016-11-11
  • Android異步回調(diào)中的UI同步性問題分析

    Android異步回調(diào)中的UI同步性問題分析

    這篇文章主要為大家詳細(xì)分析了Android異步回調(diào)中的UI同步性問題,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Kotlin語言使用BroadcastReceiver示例介紹

    Kotlin語言使用BroadcastReceiver示例介紹

    Android開發(fā)的四大組件分別是:活動(activity),用于表現(xiàn)功能;服務(wù)(service),后臺運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個應(yīng)用中存儲和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫,本篇著重介紹廣播組件
    2022-09-09
  • Android使用BroadcastReceiver監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)的改變

    Android使用BroadcastReceiver監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)的改變

    這篇文章主要為大家詳細(xì)介紹了Android使用BroadcastReceiver監(jiān)聽網(wǎng)絡(luò)連接狀態(tài)的改變,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android使用貝塞爾曲線仿QQ聊天消息氣泡拖拽效果

    Android使用貝塞爾曲線仿QQ聊天消息氣泡拖拽效果

    這篇文章主要為大家詳細(xì)介紹了Android使用貝塞爾曲線仿QQ聊天消息氣泡拖拽效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android實(shí)現(xiàn)定時器的五種方法實(shí)例詳解

    Android實(shí)現(xiàn)定時器的五種方法實(shí)例詳解

    這篇文章主要介紹了Android實(shí)現(xiàn)定時器的五種方法,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • Android開發(fā)之Socket通信傳輸簡單示例

    Android開發(fā)之Socket通信傳輸簡單示例

    這篇文章主要介紹了Android開發(fā)之Socket通信傳輸實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android socket傳輸?shù)脑?、?shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-08-08
  • android真機(jī)調(diào)試時無法顯示logcat信息的解決方法介紹

    android真機(jī)調(diào)試時無法顯示logcat信息的解決方法介紹

    以下是對android真機(jī)調(diào)試時無法顯示logcat信息的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-07-07
  • android多開器解析與檢測實(shí)現(xiàn)方法示例

    android多開器解析與檢測實(shí)現(xiàn)方法示例

    最近有業(yè)務(wù)上的要求,要求app在本地進(jìn)行諸如軟件多開、hook框架、模擬器等安全檢測,防止作弊行為,下面這篇文章主要給大家介紹了關(guān)于android多開器解析與檢測實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評論