古詩詞大全網 - 個性簽名 - APK包名修改 請問如何修改APK包名

APK包名修改 請問如何修改APK包名

基本過程如下:

1、將apk解包成壹個文件夾

2、修改AndroidManifest.xml中對應的包名

3、修改smali目錄下中的包

4、將文件夾打包成apk

5、將apk重新簽名

6、驗證apk的簽名

7、優化apk

8、安裝apk,並測試

基本前提條件:

1、java的環境

2、Eclipse及android的開發環境(這個主要是用來進行調試)

3、text文本編輯器,本人用的是UEdit,也可以用類似的,主要是利用其查找及替換功能

這篇文章主要用來反編譯apk得到源碼,但google進行了反制,只能得到壹些可讀性不高的源碼,這裏主要是利用反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件.

參考文獻裏提到的apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip均可以從/p/android-apktool/上下載,下載好之後,將涉及的命令行目錄及exe目錄添加到電腦的path路徑中,這樣就便於操作了,如檢測apktool是否可以,可以在命令行中輸入apktool,如果可以識別就表示OK了。

參考了國內的技術文章後,有人發帖以上面的思路進行操作,但沒有發技術文章,所以筆者只能去國外論壇中逛逛了,在Stack Overflow中,找到了相關的帖子,有老外留言"you can't do this",這個的確有違技術道德,但這裏只做學習參考或交流。找到了壹片帖子/questions/9218641/renaming-the-package-name-inside-an-apk,這篇帖子的回答給了比較詳細的步驟(如上),他的情況比這個還稍微復雜點,簡化後就是我要的結果,我就是按照這個基本步驟來的,回答的英文比較好懂(很有可能是國人)。

下面就按照上面的步驟壹步步操作:我是已QQ瀏覽器4.0版的apk來操作的。

1、我的apktool安裝到了E盤下的apktool目錄下,所以的操作也在這個目錄下進行?E:\apkTool

  ?將apk復制到E:\apkTool目錄下,重命名為qq4.0.apk(這個沒有要求,隨意就好)

?將apk解包 ?命令行下cd到E:\apkTool這個目錄 ?apktool d qq4.o.apk qq4 ?將apk解包到qq4(這個也可以隨意)這個目錄

?E:\apkTool\qq4這個目錄下內容如下:

2、修改AndroidManifest.xml中的包名,

?將package後面的包名com.tencent.qbx改為妳想要的新包名,我改為了com.tianxiao.tencentweb

?將涉及原包名的com.tencent.qbx的相關activity的聲明中的包名均改為新包名com.tianxiao.tencentweb

  ?至於intent-filter裏面的action名中包含原包名的,則可以不改,如果改的話,代碼中也要相應的改變

?另外,如果有provider,provider的authorities也得改,這個在同壹手機上必須唯壹,否則安裝會失敗

3、在E:\apkTool\qq4\smali目錄下,有很多子目錄,子目錄下的文件多以smali結尾,這中文件的語法有點類似於匯編語言,具體原理就不深究了。

  ?將smali目錄下的所有文件中的原包名的聲明形式com/tencent/qbx改為新包名com/tianxiao/tencentweb

  ?具體如下,用UEdit在文件中替換即可,將目標目錄指向E:\apkTool\qq4\smali,這個將近1000條左右

?如果之前改為action裏面的包名,也要將字符串形式的包名com.tencent.qbx改為com.tianxiao.tencentweb

?如果有provider也要講原來的authorities值改為在AndroidManifest.xml中新改的authorities值。

4、將E:\apkTool\qq4重新打包為apk

?apktool b qq4 newqq.apk

5、將新的newqq.apk 重新簽名

?簽名的方法很多,壹主要是手動生成簽名,用命令行簽名

?我采用的現成的,下載了壹個Auto-sign的文件夾,進行了簽名,這個比較簡單,網上帖子很多,就不贅述。

?新簽名後的apk名為 ?newqq4signed.apk

6、驗證簽名 是否正確

?jarsigner -verify ?-verbose -certs newqq4signed.apk

?壹般來說,沒問題,略過

7、優化apk

zipalign -v 4 newqq4signed.apk latestqq.apk 優化過的apk名為latestqq.apk

8、安裝新的apk,驗證是否成功

?這個最好把Eclipse打開,手機連上,查看logcat的安裝信息。

?我嘗試了3次才成功,主要是忘了?provider的authorities的處理,

出錯信息如下:?Can't install because provider name qbx_bookmarks (in package com.tianxiao.tencentweb) is already used by com.tencent.qbx

原因很清楚,所以debug還是相當給力的,原來不喜歡debug,看debug過程可以更好的了解執行過程。