Vapor Trail

明るく楽しく元気よく

react-native-renameでAndroidのパッケージ名を変更する

ReactNativeでプロジェクトを作成するとデフォルトでcom.プロジェクト名となってしまう。

npx react-native init AwesomeTSProject --template react-native-template-typescript

この場合Androidのパッケージ名がcom.awesometsprojectとして作成される。

日本でアプリを作る場合、jp.domain.awesometsprojectみたいな名前で作ることが多いと思うが、手動でファイル内の値やパッケージ構造を変えるのはめんどくさい。
でもreact-native-renameならなんと自動で書き換えてくれる! github.com

$ npx react-native-rename 新しいプロジェクト名 -b 変更後のパッケージ名で変更できる

➜  AwesomeTSProject npx react-native-rename AwesomeTSProject -b jp.domain.awesometsproject
npx: 56個のパッケージを4.068秒でインストールしました。
Please try a different name.

プロジェクト名はそのままでパッケージ名だけ変更することはできないようなので、一旦別のプロジェクト名でrenameしてみる。

➜  AwesomeTSProject npx react-native-rename AwesomeTSProjectRename -b jp.domain.awesometsproject
npx: 56個のパッケージを3.475秒でインストールしました。
/ios/AwesomeTSProjectRename RENAMED
/ios/AwesomeTSProjectRename-tvOS RENAMED
/ios/AwesomeTSProjectRename-tvOSTests RENAMED
/ios/AwesomeTSProjectRename.xcodeproj RENAMED
/ios/AwesomeTSProjectRenameRename.xcodeproj/xcshareddata/xcschemes/AwesomeTSProject-tvOS.xcscheme RENAMED
/ios/AwesomeTSProjectRenameRename.xcodeproj/xcshareddata/xcschemes/AwesomeTSProject.xcscheme RENAMED
/ios/AwesomeTSProjectRenameTests RENAMED
/ios/AwesomeTSProjectRenameRenameTests/AwesomeTSProjectTests.m RENAMED
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProject.xcworkspace
Ignore above error if this file doesn't exist
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProjectRename/AwesomeTSProject.entitlements
Ignore above error if this file doesn't exist
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProject-Bridging-Header.h
Ignore above error if this file doesn't exist
/android/app/src/main/res/values/strings.xml MODIFIED
/index.js MODIFIED
/ios/AwesomeTSProjectRename/Info.plist MODIFIED
/package.json MODIFIED
/app.json MODIFIED
/ios/AwesomeTSProjectRename.xcodeproj/project.pbxproj MODIFIED
/ios/AwesomeTSProjectRename/AppDelegate.m MODIFIED
/android/settings.gradle MODIFIED
/ios/Podfile MODIFIED
/app.json MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject BUNDLE INDENTIFIER CHANGED
/android/app/src/main/java/jp/domain/awesometsproject/MainActivity.java MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainApplication.java MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainActivity.java MODIFIED
/android/app/build.gradle MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainApplication.java MODIFIED
/android/app/src/main/AndroidManifest.xml MODIFIED
Done removing previous bundle directory.
Done removing builds.
APP SUCCESSFULLY RENAMED TO "AwesomeTSProjectRename"! 🎉 🎉 🎉
Podfile has been modified, please run "pod install" inside ios directory.
Please make sure to run "watchman watch-del-all" and "npm start --reset-cache" before running the app. 

希望のプロジェクト名とパッケージ名で再度実行する。

➜  AwesomeTSProject npx react-native-rename AwesomeTSProject -b jp.domain.awesometsproject 
npx: 56個のパッケージを3.366秒でインストールしました。
/ios/AwesomeTSProject RENAMED
/ios/AwesomeTSProject-tvOS RENAMED
/ios/AwesomeTSProject-tvOSTests RENAMED
/ios/AwesomeTSProject.xcodeproj RENAMED
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProject.xcodeproj/xcshareddata/xcschemes/AwesomeTSProjectRename-tvOS.xcscheme
Ignore above error if this file doesn't exist
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProject.xcodeproj/xcshareddata/xcschemes/AwesomeTSProjectRename.xcscheme
Ignore above error if this file doesn't exist
/ios/AwesomeTSProjectTests RENAMED
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProjectTests/AwesomeTSProjectRenameTests.m
Ignore above error if this file doesn't exist
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProjectRename.xcworkspace
Ignore above error if this file doesn't exist
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProject/AwesomeTSProjectRename.entitlements
Ignore above error if this file doesn't exist
mv: no such file or directory: /home/kyamashiro/workspace/AwesomeTSProject/ios/AwesomeTSProjectRename-Bridging-Header.h
Ignore above error if this file doesn't exist
/android/app/src/main/res/values/strings.xml MODIFIED
/index.js MODIFIED
/ios/AwesomeTSProject/Info.plist MODIFIED
/package.json MODIFIED
/app.json MODIFIED
/ios/AwesomeTSProject.xcodeproj/project.pbxproj MODIFIED
/ios/AwesomeTSProject.xcodeproj/xcshareddata/xcschemes/AwesomeTSProject-tvOS.xcscheme MODIFIED
/ios/AwesomeTSProject.xcodeproj/xcshareddata/xcschemes/AwesomeTSProject.xcscheme MODIFIED
/ios/AwesomeTSProject/AppDelegate.m MODIFIED
/android/settings.gradle MODIFIED
/ios/AwesomeTSProjectTests/AwesomeTSProjectTests.m MODIFIED
/ios/Podfile MODIFIED
/app.json MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainActivity.java MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainApplication.java MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainActivity.java MODIFIED
/android/app/build.gradle MODIFIED
/android/app/src/main/java/jp/domain/awesometsproject/MainApplication.java MODIFIED
/android/app/src/main/AndroidManifest.xml MODIFIED
Bundle directory was not changed. Keeping...
Done removing builds.
APP SUCCESSFULLY RENAMED TO "AwesomeTSProject"! 🎉 🎉 🎉
Podfile has been modified, please run "pod install" inside ios directory.
Please make sure to run "watchman watch-del-all" and "npm start --reset-cache" before running the app. 

ちなみにandroid/app/src/debug内のパッケージはrenameされない。動作に問題はないが気持ち悪いので修正しておこう。