Uniapp打包apk,添加/res/raw目錄資源


最近在使用極光推送,想要自定義鈴聲,極光要求鈴聲的文件放在/res/raw目錄下,這本是很簡單的放置操作,卻是令我苦惱,因為我是用uniapp項目來開發android的,文件目錄跟原生android根本不一樣,打包后也只是一個apk,后來網上了解到打包后的apk實際上也是一個壓縮包,可以解壓的。解壓后的文件目錄,活脫脫就是原生android。於是,就開始了添加/res/raw目錄資源的操作,同時也是一大推的坑。

一、uniapp打包apk

如果你還在uniapp社區官網繼續尋找“如何添加res/raw文件”的解決問題,我勸你停止,目前為止,uniapp暫不支持此類功能。所以,還是要我們從原生的問題去解決。首先你得先拿到apk,在這里我選擇的是自定義調試基座(你可以選擇正式包),拿到這個apk后,后面的操作基本上跟Hbuilder打包工具無關了,我理解為這個apk已經跟Hbuilder沒有聯系了

 

二、找到這個apk,並解壓

APK文件其實是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是DalvikVM executes的簡稱,即Android Dalvik執行程序,並非Java ME的字節碼而是Dalvik字節碼。Android在運行一個程序時首先需要UnZip,然后類似Symbian那樣直接,和Windows Mobile中的PE文件有區別。

三、 解壓的文件里有res文件夾,編輯文件夾

從上面的文件目錄可以看出,就是原生的android開發目錄,找到了res目錄,添加raw目錄和添加資源就變成了很簡單。文件添加完畢后,再將這些解壓出來的這些文件壓縮回去

 然后將后綴名zip改為apk

四、解壓后的apk,簽名文件已經失效,需要重新簽名

因為你解壓了這apk,就已經是改動了這個apk,導致簽名文件失效了,所以手機上無法安裝。我們就要對改動后的apk進行重新簽名。我用的是jar工具來進行簽名的(安裝了Java環境)。將壓縮得apk解壓回去,我們還需要一個無簽名的apk,找到目錄META-INF,留下MANIFEST.MF這一文件,其余的刪除。然后再將這些文件夾壓縮回zip,改后綴名apk。一個無簽名的apk就有了

 五、jar簽名打包

沒安裝java的道友,可去官網安裝,將一個無簽名的apk進行簽名,還需要一個自有證書,沒有自有證書的朋友也可以參考https://www.cnblogs.com/murenziwei/p/12937512.html,也是需要java環境,為了不出問題的使用jar,我直接找到了java的安裝目錄,在bin目錄下找到了jarsigner.exe,並且在此目錄下打開終端,開始進行命令簽名

 

 終端命令很長,但我會一一注釋,最終命令:

./jarsigner.exe -digestalg SHA1 -sigalg MD5withRSA
-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp
-keystore ./lcqs.keystore -storepass 123456
-signedjar D:\liwei\lcyg\uni\lcqs\unpackage\debug\android_debug\lcqsalias.apk D:\liwei\lcyg\uni\lcqs\unpackage\debug\android_debug\android_debug.apk lcqsalias

參數說明

./jarsigner.exe -digestalg SHA1 -sigalg MD5withRSA
-tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp
-keystore 自有證書文件路徑 -storepass 證書私鑰密碼
-signedjar 簽名后的apk保存路徑 無簽名的apk文件路徑 別名

其它參數

【-digestalg】 摘要算法的名稱
【-sigalg】簽名算法的名稱
【-tsa】時間戳機構的位置
【-alias】別名(證書有一個別名,最好取這個)

簽名成功的效果

 

不出問題的話,在簽名apk保存路徑下會生成一個apk,這個apk就可以成功安裝了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM