91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android中如何實現二次打包完成apk多渠道打包的方法

發布時間:2021-07-20 13:54:22 來源:億速云 閱讀:149 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關android中如何實現二次打包完成apk多渠道打包的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

此打包方式一個渠道包只需要5秒左右,可實現快速打渠道包

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

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

android中如何實現二次打包完成apk多渠道打包的方法

這樣的文件列表,其中就有assets文件夾;當然前提條件是你在項目中必須創建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,通過命令行運行jar讀取配置文件然后生成打包腳本,自動運行腳本進行打包

介紹

在java工程中的入口是

main函數,

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

以前一直不知道args是干嘛的,后來通過命令行傳入參數,才知道args可以帶入命令行的參數

1.讀取配置文件:

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

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

文件配置:

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

2.解壓apk文件

  1. 通過java代碼將apk解壓出來、

  2. 通過ZipFile來解壓文件

  3. 解壓完后刪除簽名文件

3.替換渠道號文件

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

//------修改內容
        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.生成簽名腳本內容

復制代碼 代碼如下:


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

6.運行簽名腳本

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

關于“android中如何實現二次打包完成apk多渠道打包的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盈江县| 游戏| 罗平县| 资讯| 胶州市| 英德市| 黔西县| 阿瓦提县| 西平县| 洞头县| 苏尼特左旗| 策勒县| 大悟县| 公主岭市| 肇东市| 时尚| 沭阳县| 岚皋县| 隆回县| 彰化市| 建德市| 辽阳县| 松溪县| 旺苍县| 阆中市| 潜江市| 石台县| 长沙县| 平原县| 巨野县| 福州市| 宁化县| 英吉沙县| 漾濞| 漳平市| 鄂托克前旗| 鄂尔多斯市| 库尔勒市| 鹿邑县| 微博| 白朗县|