Note:在當(dāng)前代碼(59左右)之后著蟹,編譯arm64能夠直接帶32位的so以及snapshot等术唬,也就不需要以下辦法了
目前使用chromium編譯出來的SystemWebView.apk窄俏,僅會(huì)帶一個(gè)當(dāng)前arch的so庫闷营。
即,如果arch設(shè)置為arm,只有armeabi-v7a的lib蝉衣;如果arch為arm64更啄,只有arm64-v8a的lib。
而AOSP給予的供arm64所編譯的webview.apk同時(shí)包含armeabi-v7a與arm64-v8a的lib镀钓。
我們需要使用chromium中的apk_merger.py這個(gè)腳本去做重新打包的工作穗熬。
實(shí)際上就是解壓然后添加32bit lib進(jìn)去然后重新打包,簽名丁溅,對(duì)齊唤蔗。
1.準(zhǔn)備工作
首先我們需要準(zhǔn)備如下幾樣?xùn)|西:
- arch為arm的SystemWebView.apk
- arch為arm64的SystemWebView.apk
- 一個(gè)keystore,目前看來只需要自己生成的即可窟赏。
keystore的生成方法為使用jdk中的keytool工具生成妓柜。
以10.0.0.131服務(wù)器為例,使用如下命令進(jìn)行生成
/usr/lib/jvm/java-7-openjdk-amd64/bin/keytool -genkey -alias sprdwebview.keystore -keyalg RSA -validity 40000 -keystore sprdwebview.keystore
其中alias為之后會(huì)使用的name
validity為有效期涯穷,這里是40000天棍掐,肯定夠了
keystore為輸出目標(biāo)名字,一般和name一樣
之后會(huì)填寫一系列的簽名信息拷况,由于生成了這個(gè)combined webview.apk也會(huì)放在android src中重新make一遍作煌,也就會(huì)重新洗掉這部分簽名信息換上系統(tǒng)的掘殴,故這部分簽名信息應(yīng)該不重要。
2.執(zhí)行命令
我們可以在<font color="#FF0000">[chromium_dir]/chromium/src/android_webview/tools </font> 目錄下找到apk_merger.py這個(gè)腳本
這個(gè)腳本有6個(gè)參數(shù)粟誓,
parser.add_argument('--apk_32bit', required=True, type=os.path.abspath)
parser.add_argument('--apk_64bit', required=True, type=os.path.abspath)
parser.add_argument('--out_apk', required=True, type=os.path.abspath)
parser.add_argument('--zipalign_path', required=True, type=os.path.abspath)
parser.add_argument('--keystore_path', required=True, type=os.path.abspath)
parser.add_argument('--key_name', required=True)
parser.add_argument('--key_password', required=True)
argu | details |
---|---|
--apk_32bit | 32bit apk路徑 |
--apk_64bit | 64bit apk路徑 |
--out_apk | 輸出的apk的路徑 |
--zipalign_path | zip對(duì)齊工具路徑 |
--keystore_path | 剛才生成的keystore路徑 |
--key_name | 剛才生成的keystore名 |
--key_password | 剛才生成的keystore密碼 |
比方說我會(huì)使用如下命令進(jìn)行打包
~/chromium_dev/chromium/src/android_webview/tools/apk_merger.py –apk_32bit ./arm/SystemWebView.apk –apk_64bit ./arm64/SystemWebView.apk –out_apk ./out/webview.apk –zipalign_path ~/chromium_dev/chromium/src/third_party/android_tools/sdk/build-tools/23.0.0/zipalign –keystore_path
./keystore/sprdwebview.keystore –key_name sprdwebview.keystore –key_password s2beryhp
如果信息全部正確奏寨,那么會(huì)在方才設(shè)置的out_apk位置生成一個(gè)新的apk,這個(gè)apk就是我們需要的multi_lib版本apk