2016-05-23 76 views
56

我使用react-native init MyApp初始化新的React Native應用程序。 這創建了包含com.myapp包的Android項目。在React Native中更改Android的包名稱

什麼是最好的方式來改變這個軟件包的名稱,例如:com.mycompany.myapp

我試着改變它在AndroidManifest.xml但它創造了其他錯誤,所以我假設它不是這樣。

有什麼想法?

+0

軟件包名稱左鍵點擊並去重構 - >重命名選項來命名包名。 – kunal

+0

現在最適合我的是找到並替換 – mllm

+0

你也可以試試https://saumya.github.io/ray/articles/72/ – Andy

回答

129

我從發生改變的項目」子文件夾名稱: 「的Android /應用/ src目錄/主/ JAVA/MY/APP/OLD_ID/」 到:「的Android /應用/ src目錄/主/ JAVA/MY/APP/NEW_ID/

然後手動切換新舊包IDS:

在: 機器人/應用/ SRC /主/爪哇/ MY/APP/NEW_ID/MainActivity。 java

package MY.APP.NEW_ID; 

機器人/應用/ SRC /主/爪哇/ MY/APP/NEW_ID/MainApplication.java

package MY.APP.NEW_ID; 

機器人/應用/ SRC /主/ AndroidManifest.xml中

package="MY.APP.NEW_ID" 

可選)在機器人/應用/ BUCK

android_build_config(
    package="MY.APP.NEW_ID" 
) 
android_resource(
    package="MY.APP.NEW_ID" 
) 

而且在的Android /應用/的build.gradle

applicationId "MY.APP.NEW_ID" 

搖籃」到底清洗(在/安卓文件夾):

./gradlew clean 
+12

我還需要編輯文件BUCK來替換舊的包值新的。BTW,2文件MainAcitivity.java和MainApplication.java應該重新定位到新的物理路徑。 – Donald

+0

@唐納德好趕,會更新答案,謝謝 – Cherniv

+1

我也把目錄'android/app/src/main/java/com/old_app_name /'改名爲'... com/new_app_name /',它似乎工作正常。 – nicholas

-9

轉到文件android/app/src/main/AndroidManifest。XML -

更新:

ATTR 安卓元素應用的標籤爲:

原值 - 機器人:標籤= 「@字符串/ APP_NAME」

新值 - android:label =「(要放的字符串)」

ATTR 安卓元素活動的標籤爲:

原值 - 機器人:標籤= 「@字符串/ APP_NAME」

新值 - android:label =「(你想要放的字符串)」

爲我工作,希望它會有所幫助。

+0

我真的不認爲這個答案應該像過去一樣被低估。但是,這個答案_does_ **不是**地址在問題中提出的問題 - 如何更改包名**。但是,它回答了「如何更改啓動器中顯示的應用程序的標題」這一問題。這是相關的答案嗎?不是真的。它是否包含有用的信息?是。因此,我建議你找到一個問題,詢問有關啓動器的標題,併發布你的解決方案_there_而不是在這裏。 –

1

我有一個解決方案基於@切爾尼夫的答案(適用於macOS對我來說)。兩個區別:我在java文件夾中有一個Main2Activity.java,我做同樣的事情,並且我不打擾調用./gradlew clean,因爲它好像是react-native packager自動執行的那樣。

不管怎麼說,我的解決方案並沒有做切爾諾夫的工作,除了我爲它製作了一個bash shell腳本,因爲我使用一組代碼構建了多個應用程序,並希望能夠在我運行我的npm時輕鬆地更改包名腳本。

這是我使用的bash腳本。你需要修改你想使用的packageName,並添加你想要的任何東西......但這裏有一些基礎知識。您可以創建一個sh文件,給予許可,然後再從您從反應本地同一文件夾中運行它:

rm -rf ./android/app/src/main/java 


mkdir -p ./android/app/src/main/java/com/MyWebsite/MyAppName 
    packageName="com.MyWebsite.MyAppName" 
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/Main2Activity.java 
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainActivity.java 
    sed -i '' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainApplication.java 
    sed -i '' -e "s/.*package=\".*/ package=\""$packageName"\"/" ./android/app/src/main/AndroidManifest.xml 
    sed -i '' -e "s/.*package = '.*/ package = '"$packageName"',/" ./android/app/BUCK 
    sed -i '' -e "s/.*applicationId.*/ applicationId \""$packageName"\"/" ./android/app/build.gradle 

    cp -R ./android/app/src/main/javaFiles/ ./android/app/src/main/java/com/MyWebsite/MyAppName 

免責聲明:您需要編輯附近的底部MainApplication.java的評論首先是java文件。它在評論中有'包'這個詞。由於腳本的工作原理,它會在其中包含「包」一詞並替換它。正因爲如此,這個腳本可能不會被未來證明,因爲可能有其他地方使用的同一個詞。

第二個免責聲明:前3個sed命令從名爲javaFiles的目錄編輯java文件。我自己創建了這個目錄,因爲我想要從那裏複製一組java文件(因爲我將來可能會添加新的軟件包)。你可能會想要做同樣的事情。因此,從java文件夾中複製所有文件(通過它的子文件夾查找實際的java文件)並將它們放在一個名爲javaFiles的新文件夾中。

第三免責聲明:您需要編輯packageName變量,使其與腳本頂部的路徑和底部(com.MyWebsite。MyAppName to com/MyWebsite/MyAppName)

23

我使用react-native-rename npm包。

使用

npm install react-native-rename -g 

然後從根部安裝你的陣營本地項目執行以下

react-native-rename "MyApp" -b com.mycompany.myapp 

react-native-rename on npm

+0

這是一個簡單而棘手的問題,我只需要手動更新MainApplication.java。 –

+0

使用這種方法,它像一個魅力工作.. – FaISalBLiNK

+0

簡單,只是工程。 – BlaShadow

0

如果您使用的是Android工作室 -

改變com.myappcom.mycompany.myapp

  1. 創建採用Android工作室GUI

  2. Android的工作室將負責把適當的包裝下android/app/src/main/java

  3. 複製從com.myapp所有類新包層次com.mycompany.myapp到com.mycompany.myapp所有複製類的名稱。如果您有一些自定義模塊並且不想在所有.java文件中手動替換,這很有用。

  4. 更新android/app/src/main/AndroidManifest.xml和​​(更換com.myappcom.mycompany.myapp

  5. 同步項目(gradle這個版本)

相關問題