国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-12-12 01:47:22
字體:
來源:轉載
供稿:網友

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

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

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

將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+"http://"+unsing+"http://"+apkn+"_unsin.apk");

5.生成簽名腳本內容

復制代碼 代碼如下:

batStr+="jarsigner -verbose -keystore "+keystore+" -signedjar "+targetPath+"//"+sing+"http://"+apkn+"_sin.apk "+targetPath+"//"+unsing+"http://"+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");  }

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

今天網上查了下jarsigner打包命令,發現可以直接在腳本中輸入密碼,可直接打包,不用反復輸入密碼
腳本:

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 恭城| 太白县| 界首市| 潜江市| 岫岩| 行唐县| 沙湾县| 左权县| 桦川县| 易门县| 遵义县| 南皮县| 安徽省| 岳阳市| 长沙市| 永川市| 广灵县| 洛浦县| 微山县| 大兴区| 桦川县| 梨树县| 天全县| 阜新| 牡丹江市| 大洼县| 馆陶县| 肃南| 交城县| 岳西县| 祁东县| 顺平县| 新营市| 青岛市| 峨山| 隆化县| 米林县| 遂川县| 玛多县| 西峡县| 抚松县|