平時項目開發(fā)中,有時候維護項目多,有的項目結(jié)構(gòu)需要改變,這就需要我們?nèi)バ薷捻椖棵Q或者修改包名。下面介紹一下怎樣修改項目名稱和包名。
創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元襄城做網(wǎng)站,已為上家服務(wù),為襄城各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
1)打開項目根目錄下的 setting.gradle 文件,修改該文件中的 rootProject.name='新項目名' ;
2)點擊 Sync Now 重新編譯項目;
★ 如果只是簡單修改至此,會發(fā)現(xiàn)項目名稱后依然備注著舊項目名,并沒有徹底更換新的項目名。緊接著下面操作:
3)關(guān)閉 Android Studio;
4)修改項目所在路徑的文件名為新的項目名;
5)打開AS,重新導(dǎo)入修改后的項目即可;
★ 如果是 AS 4.0之后 的版本,修改至此就算修改完成;如果是 AS 4.0之前 的版本,會出現(xiàn)一些配置文件信息還是引用原來的項目名,并沒有更換為新的項目名。緊接著下面操作:
6)找到項目根目錄下的 xx.iml 文件,右鍵 Refactor —— Rename 打開修改編輯框;
7)輸入新的項目名,點擊 Refactor 修改;
8)打開項目根目錄下的 xx.iml 文件,修改該文件中的 project.id 字段: external.linked.project.id="新項目名"
9)打開項目下 .idea/modules.xml 文件,修改該文件中的 fileurl 和 filepath 字段: module fileurl="新項目名.iml" filepath="$PROJECT_DIR$/新項目名.iml" /
10)點擊 Rebuild Project 重構(gòu)項目,即可修改完成項目名稱。
1)選中項目中藥修改的包名;
2)更改項目結(jié)構(gòu)顯示方式,取消 Compact Middle Packages 選項;
3)右鍵要修改的包名,選擇 Refactor —— Rename 打開修改編輯框;
4)點擊 Rename package 修改包名;
5)輸入新的包名,點擊 Refactor 修改;
6)點擊 Do Refactor 確定修改;
7)打開項目 app/main 目錄下的 AndroidManifest.xml 文件,修改該文件中的 package="新包名" 字段;
8)修改項目 app 下的 build.gradle 中的 applicationId "新包名" 字段;
9)點擊 Sync Now 同步,即可修改完成項目包名。
注意:
修改完包名,項目出現(xiàn)錯誤無法運行,解決方法請移步 —— 《Android Studio修改包名導(dǎo)致引用R文件報錯問題》
對于修改包名,一般有兩種情況:
1)一個是包名目錄結(jié)構(gòu)不變,比如說,將包名“com.zlc.xuexi”,改成"com.xuexi.zlc"
2)另一個是包名目錄結(jié)構(gòu)改變了,目錄級數(shù)改變了,比如說,從"com.xuexi.zlc",改變成"com.xuexi.zlc.zlc",這里包名的目錄結(jié)構(gòu)就從3級改變成為了4級
下面分別來講解一下這兩種情況
針對第一種情況,其實特別好改,步驟截圖如下:
切換的Progject結(jié)構(gòu),查看java包名結(jié)構(gòu),一般是這樣的
點擊show options menu按鈕
去掉勾上的 Hide Empty Middle Packages 和 Show Members
java包的展示目錄結(jié)構(gòu)就改變了
對于包名目錄結(jié)構(gòu)不改變的。就分別改各個層次對應(yīng)的包名或者直接按快捷鍵 Shift + F6
同理,假如是3級目錄結(jié)構(gòu)包名,每一個都要改變的話,就按照上圖的做法一個個更改
接著,去改app模塊下的build.gradle文件
然后去修改AndroidManifest.xml文件
最后,點擊sync同步一下就大功告成了
針對第二種情況,步驟截圖如下:
點擊show options menu按鈕
去掉勾上的 Hide Empty Middle Packages 和 Show Members
java包的展示目錄結(jié)構(gòu)就改變了
對于包名目錄結(jié)構(gòu)不改變的。就分別改各個層次對應(yīng)的包名或者直接按快捷鍵 Shift + F6
假如是3級目錄結(jié)構(gòu)包名,改成4級包名目錄機構(gòu),首先要新建包然后去移動其他的目錄包
新建好多一級的目錄包之后,需要移動啟動文件夾到該目錄包下
接著,去改app模塊下的build.gradle文件
然后去修改AndroidManifest.xml文件
最后,點擊sync同步一下就大功告成了
如果項目上用了DataBinding框架,特別是第二種情況,恭喜你,你肯能有得忙了。項目上有DataBinding框架的時候,當(dāng)你按照上面的步驟修改了包名,就會報一個這樣的錯
遇到這個情況,肯定是修改包名或者移動了包名結(jié)構(gòu),但是布局文件或者java文件的的dataBinding的引用沒有改變
這里我沒找到特別快速修改的方法,放在我是一個個去檢查java文件的導(dǎo)包和xml布局文件的應(yīng)用,看對不對,不對就要手動改過來了,嗚嗚。。。。。。
如果,確定全部改完無誤之后,重新Rebuild Project
萬一,還是有剛才那個錯誤的話,記得再回頭檢查一遍java文件和布局文件,看看各自的引用對不對,如果全部都改對之后,還是有錯誤的話,哪就靜下心來錯誤提示
如果不是DataBinding引起的話,一般都會找到比較明顯的提示
==========我是有分割線的:2019.04.15更新=================================
如果真不好遇到第二種情況的話,面對databanding這種框架,那就只能使用全局替換的方法了
ctrl + Shift + R
android studio軟件怎么重命名文件包名?重命名文件包名很有可能會導(dǎo)致程序編譯錯誤的問題發(fā)生,但是很多情況下程序開發(fā)者都有可能會需要對程序進行重命名的操作,如何操作才能使android studio軟件正確重命名呢?下面為大家整理了幾種方法,其中第二種最好用,大家可以看看。
android studio軟件中重命名快捷鍵:
shift+F6:可對類、方法、變量進行重命名
android studio軟件重命名文件包名方法一:
首先創(chuàng)建一個新的軟件包所需的名字通過右鍵點擊文件夾-新建- Java包
然后,選擇并拖動你的所有類的新方案。androidstudio將重構(gòu)包名隨處可見。
最后,刪除舊的包。
android studio軟件重命名文件包名方法二:
比如 我們需要把 package="com.net.studyplayer.chinese" 修改成 "com.net.studyplayer.english"
這樣 我們就可以在同一臺機子上安裝這兩個APK了 因為他們的包名已經(jīng)不一樣了
但是我們需要修改的地方不只是這一處,還有原文件夾名也要修改
在我們先修改了AndroidManifest.xml 中的名字之后 會發(fā)現(xiàn)文件中凡是有用到R文件的地方都會報錯
其實這個就非常簡單了
右鍵點擊上圖中 "chinese"的那個包
這樣子基本上就所有的報錯信息都消失了 clean一遍 然后重新編譯 就OK了
Eclipse和Android Studio都提供了自動修改包名的工具,Android Studio在選中包名后,使用快捷鍵 shift+(Fn+)F6 或者選中菜單 Refactor-》Rename 進行重命名。
不要選中下面提供的兩個選項,重命名后,我們還需要 手動修改AndroidManifest.xml 文件
修改的工作理論上已經(jīng)完成, clean下項目,運行!如果此時出現(xiàn)錯誤,【內(nèi)容中還包含之前包名的信息】 ,
Android studio無法使用F2的方式直接重新命名。
android studio軟件重命名文件包名方法三:
1、進行打開電腦中已經(jīng)安裝好的Android studio的應(yīng)用程序,并在在Android studio中加載項目的文件。
2、選中完項目之后,進入到項目中找到需要重新命名的文件。
3、然后就可以點擊Android studio菜單中列表中的Refactor的選項。
4、這樣就會彈出了一個下拉菜單中選項,進行選擇下拉菜單中的“rename”的選項。
5、彈出rename的選項框,在輸入框中輸入需要重新的命名的名稱。
6、可以看到了該的文件名稱被重新命名成功了。
目的聲明:本文只是為了滿足DIY的需要,并不是為了成為打包黨,竊取別人的勞動成果,本文所涉及的工具也均為開源的,僅供學(xué)習(xí)交流之用。
DIY前提:在國內(nèi)的論壇里,搜索了一下,找到了各種解包,打包的技術(shù)內(nèi)容,以及各種漢化、去廣告的帖子,但這個并不是本文的目的。以前見過打包黨不僅修改了別人apk的廣告用來獲利,還將別人apk的包名修改了,所以有人早就實現(xiàn)了,但未能找到相關(guān)的技術(shù)文章,本文涉及的知識都還是比較淺顯的,沒有深入的研究底層原因,也參考了網(wǎng)上幾個帖子。
PS:在國內(nèi)論壇上,找一篇原創(chuàng)的帖子很難,基本都是轉(zhuǎn)載的,還不附原文鏈接,引入了的很多錯誤,想找到原文都很難,真是很悲劇。國內(nèi)論壇里,熱心人還是少了點,很多問題都死了,無人回答,筆者嘗試在CSDN、ITEYE、EOE發(fā)過幾個帖子,但很少能解決問題,于是只能求助于國外論壇,這也是一個悲劇。
這個問題解決完了,也很簡單,至少我這個比較簡單,我是想多安裝幾個QQ瀏覽器(有IT屌絲安裝了10個微信的,這個我表示很汗),基本過程如下:
1、將apk解包成一個文件夾
2、修改AndroidManifest.xml中對應(yīng)的包名
3、修改smali目錄下中的包
4、將文件夾打包成apk
5、將apk重新簽名
6、驗證apk的簽名
7、優(yōu)化apk
8、安裝apk,并測試
基本前提條件:
1、java的環(huán)境
2、Eclipse及android的開發(fā)環(huán)境(這個主要是用來進行調(diào)試)
3、text文本編輯器,本人用的是UEdit,也可以用類似的,主要是利用其查找及替換功能
這篇文章主要用來反編譯apk得到源碼,但google進行了反制,只能得到一些可讀性不高的源碼,這里主要是利用反編譯apk生成程序的源代碼和圖片、XML配置、語言資源等文件.
參考文獻里提到的apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip均可以從code.google.com/p/android-apktool/上下載,下載好之后,將涉及的命令行目錄及exe目錄添加到電腦的path路徑中,這樣就便于操作了,如檢測apktool是否可以,可以在命令行中輸入apktool,如果可以識別就表示OK了。
參考了國內(nèi)的技術(shù)文章后,有人發(fā)帖以上面的思路進行操作,但沒有發(fā)技術(shù)文章,所以筆者只能去國外論壇中逛逛了,在Stack Overflow中,找到了相關(guān)的帖子,有老外留言"you can't do this",這個的確有違技術(shù)道德,但這里只做學(xué)習(xí)參考或交流。找到了一片帖子stackoverflow.com/questions/9218641/renaming-the-package-name-inside-an-apk,這篇帖子的回答給了比較詳細(xì)的步驟(如上),他的情況比這個還稍微復(fù)雜點,簡化后就是我要的結(jié)果,我就是按照這個基本步驟來的,回答的英文比較好懂(很有可能是國人)。
下面就按照上面的步驟一步步操作:我是已QQ瀏覽器4.0版的apk來操作的。
1、我的apktool安裝到了E盤下的apktool目錄下,所以的操作也在這個目錄下進行 E:\apkTool
將apk復(fù)制到E:\apkTool目錄下,重命名為qq4.0.apk(這個沒有要求,隨意就好)
將apk解包 命令行下cd到E:\apkTool這個目錄 apktool d qq4.o.apk qq4 將apk解包到qq4(這個也可以隨意)這個目錄
E:\apkTool\qq4這個目錄下內(nèi)容如下:
2、修改AndroidManifest.xml中的包名,
將package后面的包名com.tencent.qbx改為你想要的新包名,我改為了com.tianxiao.tencentweb
將涉及原包名的com.tencent.qbx的相關(guān)activity的聲明中的包名均改為新包名com.tianxiao.tencentweb
至于intent-filter里面的action名中包含原包名的,則可以不改,如果改的話,代碼中也要相應(yīng)的改變
另外,如果有provider,provider的authorities也得改,這個在同一手機上必須唯一,否則安裝會失敗
3、在E:\apkTool\qq4\smali目錄下,有很多子目錄,子目錄下的文件多以smali結(jié)尾,這中文件的語法有點類似于匯編語言,具體原理就不深究了。
將smali目錄下的所有文件中的原包名的聲明形式com/tencent/qbx改為新包名com/tianxiao/tencentweb
具體如下,用UEdit在文件中替換即可,將目標(biāo)目錄指向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 重新簽名
簽名的方法很多,一主要是手動生成簽名,用命令行簽名
我采用的現(xiàn)成的,下載了一個Auto-sign的文件夾,進行了簽名,這個比較簡單,網(wǎng)上帖子很多,就不贅述。
新簽名后的apk名為 newqq4signed.apk
首先java SDK
然后配置java環(huán)境
然后反編譯軟件
然后找到里面的AndroidManifest.xml 里面第一行就有包名,版本等等信息,
然后打包
然后安裝測試
回答不容易,希望能幫到您,滿意請幫忙采納一下,謝謝
基本過程如下:
1、將apk解包成一個文件夾
2、修改AndroidManifest.xml中對應(yīng)的包名
3、修改smali目錄下中的包
4、將文件夾打包成apk
5、將apk重新簽名
6、驗證apk的簽名
7、優(yōu)化apk
8、安裝apk,并測試
基本前提條件:
1、java的環(huán)境
2、Eclipse及android的開發(fā)環(huán)境(這個主要是用來進行調(diào)試)
3、text文本編輯器,本人用的是UEdit,也可以用類似的,主要是利用其查找及替換功能