在開(kāi)發(fā)環(huán)境的時(shí)候,我們?cè)跍y(cè)試機(jī)器上運(yùn)行應(yīng)用程序并安裝它,那么android 二次打包完成apk多渠道打包的方法大家都知道嗎?今天就跟著武林技術(shù)頻道小編來(lái)了解吧!
此打包方式一個(gè)渠道包只需要5秒左右,可實(shí)現(xiàn)快速打渠道包
對(duì)于為了在assets獲取渠道號(hào)來(lái)打渠道包的方法,其實(shí)很簡(jiǎn)單,你只要知道apk里面裝的什么東西,就會(huì)了
將apk用壓縮方式解壓,你會(huì)得到像

這樣的文件列表,其中就有assets文件夾;當(dāng)然前提條件是你在項(xiàng)目中必須創(chuàng)建assets文件夾。既然有了這個(gè)文件夾,安卓里面又能通過(guò)代碼獲取這個(gè)文件夾里面的文件,并讀取文件:
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 "未知"; }那么接下來(lái)就只需要通過(guò)修改里面的文件,并重新打包,簽名來(lái)打渠道包了。
如何修改里面的文件,并打包簽名,我特地寫(xiě)了一個(gè)打包工具,通過(guò)java工程生成jar,通過(guò)命令行運(yùn)行jar讀取配置文件然后生成打包腳本,自動(dòng)運(yùn)行腳本進(jìn)行打包
介紹
在java工程中的入口是
main函數(shù),
public static void main(String[] args) {}以前一直不知道args是干嘛的,后來(lái)通過(guò)命令行傳入?yún)?shù),才知道args可以帶入命令行的參數(shù)
1.讀取配置文件:
通過(guò)文件的方式傳入要打的渠道包,及渠道包的名字,渠道號(hào)
讀文件操作很簡(jiǎn)單,就是通過(guò)流的形式,不多介紹,可以自行閱讀源碼
文件配置:
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文件
3.替換渠道號(hào)文件
獲取解壓后的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+"http://"+unsing+"http://"+apkn+"_unsin.apk");
5.生成簽名腳本內(nèi)容
?
?
?
?
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
上文就是武林技術(shù)頻道小編為大家?guī)?lái)的android 二次打包完成apk多渠道打包的方法,大家都了解了嗎?按照上述的介紹,就能達(dá)到你想要的效果了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注