【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )
文章目錄
- 一、 Android 工程修改包名流程
- 二、 修改 applicationId
- 三、 修改 package 包名
- 四、 AndroidManifest.xml 清單文件組件
- 五、 修改 R 資源引用、修改 BuildConfig 引用
- 六、 修改 FileProvider
- 七、 博客資源
需要將一份工程源碼編譯出的應用 , 在同一手機上運行多個 , 這里不修改源碼中的包名 , 僅修改當前工程配置中的包名 ;
如果當前工程中源碼數量較多 , 幾百個或幾千個的量級 , 不推薦修改代碼中的實際包名 ;
剛移植了一個幾千個源碼文件的工程 , 記錄下流程 ;
一、 Android 工程修改包名流程
Android 工程修改包名流程 :
- ① 修改 applicationId : 修改 Module 下的 build.gradle 中的 applicationId ;
- ② 修改 package : 修改 AndroidManifest.xml 清單文件中的 packge 包名 ;
- ③ 修改 R 引用 : 修改 Java 代碼中的 package.R 引用 ;
- ④ 修改 BuildConfig 引用 : 修改 Java 代碼中的 package.BuildConfig 引用 ;
- ⑤ AndroidManifest.xml 清單文件修改 : 所有的組件都使用全路徑名稱 , FileProvider 的 authorities 也要進行相應修改 ;
二、 修改 applicationId
在 Module 下的 build.gradle 中 , 修改 applicationId , 該配置在 android / defaultConfig 層級下 ;
將 applicationId 修改為 “kim.hsl.package_change2” ;
( 修改后 )
三、 修改 package 包名
在 AndroidManifest.xml 清單文件中 , 修改 manifest 根節點的 package 包名屬性 ,
( 修改前 )
將其修改為與 applicationId 相同 , “kim.hsl.package_change2” ;
( 修改后 )
四、 AndroidManifest.xml 清單文件組件
AndroidManifest.xml 清單文件中注冊的所有 Activity , Service 等組件 , 其 android:name 屬性 , 都使用該組件的完整的包名類名 , 避免使用如下缺省包名的形式 :
包名缺省 , 如果修改根節點的 package 屬性 , 就無法找到對應的組件了 , 這里建議使用組件的全路徑名稱 ;
( 推薦使用方式 )
五、 修改 R 資源引用、修改 BuildConfig 引用
包名修改后 , 對應生成的資源類 R , 編譯配置類 BuildConfig 的包名也發生了相應的改變 ;
需要將
修改為
import kim.hsl.package_change2.R; import kim.hsl.package_change2.BuildConfig;對于源碼中修改的 R 較多時 , 選中源碼目錄 src , 使用 " Ctrl + Shift + R " 快捷鍵 , 也可以右鍵點擊 src 目錄 , 選擇 " Replace in Path… " 選項 ,
修改 R 資源引用 : 在 " Replace in Path " 對話框中 ,
搜索 “import kim.hsl.package_change.R;”
替換為 “import kim.hsl.package_change2.R;”
直接點擊下方的 " Replace All " 按鈕 , 替換工程中所有的導入選項即可 ;
修改 BuildConfig 引用 : 在 " Replace in Path " 對話框中 ,
搜索 “import kim.hsl.package_change.BuildConfig;”
替換為 “import kim.hsl.package_change2.BuildConfig;”
( 在該示例中只有一個 , 如果是一個大型項目 , 會有幾百上千的匹配 )
六、 修改 FileProvider
由于忽略了該步驟 , 導致出錯 , 【錯誤記錄】Android 應用安裝報錯 ( The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER ) ;
如果在代碼中使用了 FileProvider , 需要修改 provider 標簽的 android:authorities 屬性 , 該屬性的屬性值是 包名.fileProvider , 這里的包名需要替換成修改后的包名 ;
修改前 :
修改后 :
<providerandroid:name="androidx.core.content.FileProvider"android:authorities="kim.hsl.package_change.fileProvider"android:grantUriPermissions="true"android:exported="false"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_path" /></provider>對應的 provider_path 文件中的相關包名 , 也要進行相應修改 ;
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path path="Android/data/kim.hsl.package_change2/" name="files_root" /><files-path path="." name="files-path" /><cache-path path="." name="cache-path" /><external-files-path path="." name="external_file_path" /><external-cache-path path="." name="external_cache_path" /> </paths>七、 博客資源
源碼 : Package_Change 是原始工程 , Package_Change_2 是修改后的工程 ;
https://download.csdn.net/download/han1202012/15712500
總結
以上是生活随笔為你收集整理的【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【错误记录】VMware 虚拟机报错 (
- 下一篇: 【运筹学】指派问题、匈牙利法总结 ( 指