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

首頁 > 系統 > Android > 正文

修改APK包名

2020-02-21 17:30:46
字體:
來源:轉載
供稿:網友

  包名都是在安裝之后才可以看到,想要自己的安裝包變得個性那么我們就需要更改APK包名,你怎么如何修改APK包名嗎?

  想在android手機上安裝兩個相同的應用,本以為可以安裝不同版本的,試了幾次,均相互覆蓋了,于是,只能設法修改apk所對應的包名(package name)。

  目的聲明:本文只是為了滿足DIY的需要,并不是為了成為打包黨,竊取別人的勞動成果,本文所涉及的工具也均為開源的,僅供學習交流之用。

  DIY前提:在國內的論壇里,搜索了一下,找到了各種解包,打包的技術內容,以及各種漢化、去廣告的帖子,但這個并不是本文的目的。以前見過打包黨不僅修改了別人apk的廣告用來獲利,還將別人apk的包名修改了,所以有人早就實現了,但未能找到相關的技術文章,本文涉及的知識都還是比較淺顯的,沒有深入的研究底層原因,也參考了網上幾個帖子。

  PS:在國內論壇上,找一篇原創的帖子很難,基本都是轉載的,還不附原文鏈接,引入了的很多錯誤,想找到原文都很難,真是很悲劇。國內論壇里,熱心人還是少了點,很多問題都死了,無人回答,筆者嘗試在CSDN、ITEYE、EOE發過幾個帖子,但很少能解決問題,于是只能求助于國外論壇,這也是一個悲劇。

  這個問題解決完了,也很簡單,至少我這個比較簡單,我是想多安裝幾個QQ瀏覽器(有IT屌絲安裝了10個微信的,這個我表示很汗),基本過程如下:

  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均可以從http//code.google.com/p/android-apktool/上下載,下載好之后,將涉及的命令行目錄及exe目錄添加到電腦的path路徑中,這樣就便于操作了,如檢測apktool是否可以,可以在命令行中輸入apktool,如果可以識別就表示OK了。

  參考了國內的技術文章后,有人發帖以上面的思路進行操作,但沒有發技術文章,所以筆者只能去國外論壇中逛逛了,在Stack Overflow中,找到了相關的帖子,有老外留言"you can't do this",這個的確有違技術道德,但這里只做學習參考或交流。找到了一片帖子http://stackoverflow.com/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過程可以更好的了解執行過程。

  在進行了測試后,筆者有多次重復了2-8這幾個步驟,共得到了4個新的apk,安裝后的結果如下圖:

  如圖,QQ4.0的瀏覽器,原裝的裝了一個,重新打包的有4個,預期目標達到了。

  本次嘗試成功了,花了不少時間查資料,基本原理相當的清楚,本文中筆者盡可能不產生歧義,歡迎各位交流和批評。

  以上就是我們為各位朋友們分享修改APK包名的方法,希望可以幫助到大家,武林技術頻道小編會耐心解答大家的問題。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 榕江县| 凤城市| 高邑县| 台北县| 萨迦县| 中卫市| 阳春市| 肥东县| 永川市| 安宁市| 德庆县| 越西县| 南投县| 沙湾县| 芦山县| 淅川县| 项城市| 乐都县| 南阳市| 娱乐| 景泰县| 孟村| 无极县| 锡林郭勒盟| 额尔古纳市| 德昌县| 邢台县| 新巴尔虎右旗| 二手房| 巴彦县| 虞城县| 定结县| 湘潭县| 疏勒县| 临高县| 望江县| 封开县| 华蓥市| 乌鲁木齐县| 成都市| 重庆市|