私はreact-native init MyApp
を使って新しいReact Nativeアプリを初期化しました。これはとりわけcom.myapp
パッケージを持つAndroidプロジェクトを作成しました。
このパッケージ名を変更するための最善の方法は何ですか。例えば、com.mycompany.myapp
?
私はAndroidManifest.xml
でそれを変更しようとしましたが、それは他のエラーを引き起こしたので、私はそれが方法ではないと思います。
何か案が?
プロジェクトのサブフォルダー名を "Android/app/src/main/Java/MY/APP/OLD_ID /"から "Android/app/src/main/Java/MY/APP/NEW_ID / "
次に手動で新旧のパッケージIDを切り替えます。
で:アンドロイド/アプリ/ソース/メイン/ Java/MY/APP/NEW_ID/MainActivity.Java:
package MY.APP.NEW_ID;
In Android/app/src/main/Java/MY/APP/NEW_ID/MainApplication.Java:
package MY.APP.NEW_ID;
In Android/app/src/main/AndroidManifest.xml:
package="MY.APP.NEW_ID"
そしてAndroid/app/build.gradle:
applicationId "MY.APP.NEW_ID"
(オプション)Android/app/BUCK:
Android_build_config(
package="MY.APP.NEW_ID"
)
Android_resource(
package="MY.APP.NEW_ID"
)
最後にGradle '(/ Androidフォルダ内)をクリーニングします。
./gradlew clean
私はreact-native-renamenpmパッケージを使います。
を使用してインストールする
npm install react-native-rename -g
それからReact Nativeプロジェクトのルートから以下を実行してください。
react-native-rename "MyApp" -b com.mycompany.myapp
パッケージ名をcom.myappからcom.mycompany.myappに変更するには(たとえば)、
Androidアプリの場合は、モジュールレベルでbuild.gradleを開きます。 Android/appフォルダ内のもの。見つけるだろう
... defaultConfig { applicationId com.myapp ... } ...
"com.myapp"を必要なものに変更してください。
お役に立てれば。
あなたは単にreact-native-rename npmパッケージを使うことができます。
を使用してインストールする
npm install react-native-rename -g
それからReact Nativeプロジェクトのルートから以下を実行してください。
react-native-rename "MyApp" -b com.mycompany.myapp
react-native-rename on npm
しかし、このライブラリはあなたのMainActivity.Java
とMainApplication.Java
を削除します。あなたのパッケージ名を変更する前に、この2つのファイルからバックアップをとってください、そして、パッケージ名を変更した後にちょうど彼らの場所にそれを戻してください。この解決策は私のために働く
詳細情報: react-native-rename
Initスクリプトはあなたが与えた名前に基づいてAndroidのためのユニークな識別子を生成します(例えばAcmeApp
のためのcom.acmeapp
)。
Android/app/build.gradle
でapplicationIdキーを探すことで、どの名前が生成されたかを見ることができます。
その一意の識別子を変更する必要がある場合は、以下の説明に従って変更してください。
/Android
フォルダーで、すべてのcom.acmeapp
をcom.acme.app
に置き換えます。
その後、次のコマンドでディレクトリ構造を変更します。
mkdir Android/app/src/main/Java/com/acme
mv Android/app/src/main/Java/com/acmeapp Android/app/src/main/Java/com/acme/app
アプリ識別子の各ドットにフォルダレベルが必要です。
ソース: https://blog.elao.com/en/dev/from-react-native-init-to-app-stores-real-quick/
Android Studioを使用している場合
com.myapp
をcom.mycompany.myapp
に変更
Android/app/src/main/Java
の下に新しいパッケージ階層com.mycompany.myappを作成します。
Android Studio GUIを使用して、すべてのクラスをcom.myapp
からcom.mycompany.myapp
にコピーします。
Androidスタジオは、コピーされたすべてのクラスに適したパッケージ名を付けるようにします。これは、カスタムモジュールがあり、すべての.Javaファイルを手動で置き換えたくない場合に便利です。
Android/app/src/main/AndroidManifest.xml
とAndroid/app/build.gradle
を更新します(com.myapp
をcom.mycompany.myapp
に置き換えます)
プロジェクトを同期させる(グラドルビルド)
後藤アンドロイドスタジオ
パッケージを右クリックし(ほとんどの場合はcom) - > Refractor - >名前の変更 - >ダイアログに新しいパッケージ名を入力 - > Do Refractor
それはどこでもあなたのパッケージ名を改名します。
私は@ Chernivの答えに基づいた解決策を持っています(私にとってはmacOSで動作します)。 2つの違い:私は同じことをするためにJavaフォルダーにMain2Activity.Javaを持っています、そしてそれは反応ネイティブパッケージャがとにかく自動的にそれをするように思われるので私は./gradlew cleanを呼ぶことを煩わしません。
とにかく、私の解決策はChernivがすることをすることを除いて私がそれのためにbashシェルスクリプトを作ったことを除いて私は1セットのコードを使って複数のアプリケーションを構築しています。
これが私が使ったbashスクリプトです。あなたが使いたいpackageNameを修正し、それにあなたがそれに欲しいものを追加する必要があるでしょう…しかし、ここで基本があります。 .shファイルを作成し、権限を付与してから、react-nativeを実行したのと同じフォルダーから実行します。
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
免責事項:あなたは最初にJavaファイルの下部近くにMainApplication.Javaのコメントを編集する必要があります。コメントにWordの「パッケージ」があります。このスクリプトはどのように機能するのかという理由で、その中のWordの「パッケージ」を含む任意の行を取り、それを置き換えます。このため、同じWordが他の場所で使用されている可能性があるため、このスクリプトは将来的には保証されない可能性があります。
免責事項:最初の3つのsedコマンドは、javaFilesというディレクトリからJavaファイルを編集します。このディレクトリを自分で作成したのは、そこからコピーした1組のJavaファイルが欲しいからです(将来新しいパッケージを追加する可能性があるため)。あなたはおそらく同じことをしたくなるでしょう。そのため、Javaフォルダからすべてのファイルをコピーし(そのサブフォルダをたどって実際のJavaファイルを見つけて)、それらをjavaFilesという新しいフォルダに配置します。
免責事項3:スクリプトの上部と下部のパスに一致するようにpackageName変数を編集する必要があります(com.MyWebsite.MyAppNameからcom/MyWebsite/MyAppNameへ)。
簡単な手順に従って、app name
とPackage name
の名前を変更します。 Androidフォルダにカスタム変更を加えていない(つまり、プロジェクトを初期化しただけのシナリオ)
package.json
ファイルのname
を変更して保存します。react-native upgrade
注: ivoteje5 のコメントに記載されているように、キーストアを生成するための公式の指示に従っている場合はAndroidフォルダを削除しないでください。これで新しいアプリに再度サインすることはできません。
Android Studioに移動してアプリを開き、Javaを右クリックして[New]、[Package]の順に選択します。
好きな名前を付けます(例:com.something)。
他のパッケージ(名前を変更したいパッケージ)から新しいパッケージにファイルを移動します。古いパッケージを削除してください。
エディタでプロジェクトに移動し、すべてのファイルを検索するためのショートカットを使用します(Macではshift cmd F)。古いパッケージの名前を入力してください。すべての参照を新しいパッケージ名に変更してください。
Android Studio、ビルド、プロジェクトのクリーンアップ、プロジェクトの再ビルドに移動します。
完了しました。
ハッピーコーディング:)
VS Codeで、Ctrl + Shift + F
を押して「検索」に古いパッケージ名を入力し、「置換」に新しいパッケージを入力します。次に、[すべての出現箇所を置換]を押します。
絶対に実用的な方法ではありません。しかし、それは私にとってはうまくいきました。