React NativeでAndroidのパッケージ名を変更する


179

以前react-native init MyAppは新しいReact Nativeアプリを初期化していました。これにより、パッケージとともにAndroidプロジェクトが作成されましたcom.myapp

このパッケージ名を変更する最良の方法は何com.mycompany.myappですか。

私はそれを変更しようとしましたAndroidManifest.xmlが、それは他のエラーを作成したので、私はそれが方法ではないと仮定しています。

何か案が?


パッケージ名を左クリックし、[リファクタリング]-> [名前変更]オプションを選択して、パッケージ名を変更します。
kunal

現在私にとって最も効果的なのは、検索と置換だけです
mllm '29



私にとって、検索と置換は機能しました
シェッシュ・ナス

回答:


411

プロジェクトのサブフォルダの名前を「android / app / src / main / java / MY / APP / OLD_ID /」から「android / app / src / main / java / MY / APP / NEW_ID /」に変更しました

次に、古いパッケージIDと新しいパッケージIDを手動で切り替えます。

で: android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java

package MY.APP.NEW_ID;

ではアンドロイド/アプリ/ srcに/メイン/ javaの/ MY / APP / NEW_ID / MainApplication.java

package MY.APP.NEW_ID;

ではアンドロイド/アプリ/ srcに/メイン/ 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

23
また、古いパッケージの値を新しい値に置き換えるには、ファイルBUCKを編集する必要があります。ところで、MainAcitivity.javaとMainApplication.javaという2つのファイルは、新しい物理パスに再配置する必要があります。
Golden Thumb 2016

4
また、ディレクトリの名前をに変更しましたandroid/app/src/main/java/com/old_app_name/...com/new_app_name/、動作するようです。
ニコラス2017年

Androidデバイスシミュレーターを手動で強制的にクリーニングするまで、「セッションの終了に失敗しました:INSTALL_FAILED_UPDATE_INCOMPATIBLE」というエラーが発生しました:adb uninstall my.package.name ...そのため、指示は問題ありませんが、Androidシミュレーターは古い情報を方向が機能しないように見える悪い方法。(そして単にアプリをアンインストールしてもこれは修正されませんでした!)
Bill Patterson

私はこれについて読んでいて、このライブラリを試しました: npmjs.com/package/react-native-rename はこれでかなりうまく機能しているようです。アプリの名前を変更するだけでなく、バ​​ンドル識別子を変更することもできます
fray88

1
でそれを行うアンドロイド/フォルダ@Anuj
Cherniv

77

私はreact-native-rename * npmパッケージを使用しています。経由でインストール

npm install react-native-rename -g

次に、React Nativeプロジェクトのルートから、以下を実行します。

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

これはシンプルでトリッキーなものです。MainApplication.javaを手動で更新するだけです。
Gopal Devra

59
おかげで、プロジェクトを
Leap Hawk

@AkashRajput問題を解決しましたか?解決策が見つかった場合はお知らせください
Saleem Khan

@SaleemKhanプロジェクトを再度作成する必要がありました。今回は、react-native initを使用します。ファイルをコピーするだけです。
Leap Hawk、

5
それは私のプロジェクトを壊し、新しいプロジェクトを作成しなければなりませんでした:(
MujtabaFR '06

24

パッケージ名を次のように変更するcom.myappには:(com.mycompany.myapp例)、

  1. 反応アプリのiOSアプリの場合は、xcodeを使用します-一般的な場合。
  2. Androidアプリの場合は、モジュールレベルでbuild.gradleを開きます。1つandroid/appのフォルダ。見つけるだろう
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

com.myappを必要なものに変更します。

お役に立てれば。


4
これは、パッケージ名を変更する最も簡単な方法です。ローカルパッケージ名を変更しないと、次のビルドパッケージが変更されます。ありがとう!これを実行したら./gradlew clean、次に実行し./gradlew app:assembleReleaseます。
マイケルハーレー

2
「ただし、applicationIdとローカルpackage名は互いに独立していapplicationIdます」、「デバイスとGoogle Playストアでアプリを一意に識別します」– developer.android.com/studio/build/application-id
eightyfive

私には効かないNo matching client found for package name 'xxxxx'
MichaelMao

10

あなたは単に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

しかし告知ことは、このLIBはあなたの取り外しMainActivity.javaMainApplication.java。パッケージ名を変更する前に、この2つのファイルからバックアップを作成し、パッケージ名を変更した後、元の場所に戻します。この解決策は私にとってうまくいきます

詳細: react-native-rename


1
アプリ名「別の名前でお試しください」を変更しないと効果はありません。
ムン製

1
実際、プロジェクトに別の名前を付けています。しかし、プロジェクト名を変更すると、react-native-renameはプロジェクトからその2つのファイルを削除します。
Moein Hosseini、

8

Androidスタジオに移動

パッケージを右クリックします(おそらくcom)-> Refractor-> Rename->ダイアログに新しいパッケージ名を入力-> Do Refractor

どこでもパッケージ名を変更します。


プロジェクト構造全体には影響しないと思います。
Kishan Oza

React-Native JSプロジェクトをどのように使用できますか?
Arifur Ra​​hman、2018

8

initスクリプトは、あなたがそれを与えた(例えば、名前に基づいて、アンドロイドのためのユニークな識別子を生成com.acmeappするためにAcmeApp)。

でapplicationIdキーを検索すると、生成された名前を確認できますandroid/app/build.gradle

その一意の識別子を変更する必要がある場合は、次に説明するようにしてください。

では/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/


7

Android Studioを使用している場合

変更com.myappcom.mycompany.myapp

  1. 下に新しいパッケージ階層com.mycompany.myappを作成します。 android/app/src/main/java

  2. からすべてのクラスをコピーcom.myappcom.mycompany.myappてAndroid Studio GUIを使用する

  3. Android Studioは、コピーされたすべてのクラスに適切なパッケージ名を配置します。これは、カスタムモジュールがあり、すべての.javaファイルを手動で置き換えたくない場合に便利です。

  4. アップデートandroid/app/src/main/AndroidManifest.xmlandroid/app/build.gradle(置き換えcom.myappcom.mycompany.myapp

  5. プロジェクトを同期する(gradle build)


5

@Chernivの答えに基づいた解決策があります(私にとってはmacOSで動作します)。2つの違い:私は同じことをするjavaフォルダーにMain2Activity.javaがあり、。/ gradlew cleanを呼び出すことはありません。

とにかく、私のソリューションはChernivの機能を実行しますが、1つのコードセットを使用して複数のアプリを構築していて、npmスクリプトを実行するたびにパッケージ名を簡単に変更できるようにしたいため、bashシェルスクリプトを作成しました。

これが私が使った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のコメントを編集する必要があります。コメントに「パッケージ」という単語が含まれています。スクリプトがどのように機能するかにより、「package」という単語が含まれる行をすべて置き換えて置き換えます。このため、同じスクリプトが別の場所で使用されている可能性があるため、このスクリプトは将来の保証がない可能性があります。

2番目の免責事項:最初の3つのsedコマンドは、javaFilesと呼ばれるディレクトリからJavaファイルを編集します。私はこのディレクトリを自分で作成しました。これは、そこからコピーされる1組のJavaファイルが必要なためです(将来、新しいパッケージを追加する可能性があるため)。あなたはおそらく同じことをしたいと思うでしょう。したがって、javaフォルダーからすべてのファイルをコピーし(そのサブフォルダーに移動して実際のJavaファイルを見つけます)、それらをjavaFilesという新しいフォルダーに配置します。

3番目の免責事項:スクリプトの上部と下部のパス(com.MyWebsite.MyAppNameからcom / MyWebsite / MyAppNameへのパス)と一致するように、packageName変数を編集する必要があります。


2

VS Codeで、を押しCtrl + Shift + Fて[検索]に古いパッケージ名を入力し、[置換]に新しいパッケージを入力します。次に、[すべての出現箇所を置換]を押します。

確かに実用的な方法ではありません。しかし、それは私のためのトリックを行いました。


2

使用する npx react-native-rename <newName>

カスタムバンドル識別子を使用(Androidのみ。iOSの場合は、Xcodeを使用してください)

$ npx react-native-rename <newName> -b <bundleIdentifier>

まず、新しいブランチに切り替えます(オプションですが推奨)

$ git checkout -b rename-app

次に、アプリの名前を変更します$ npx react-native-rename "Travel App"

カスタムバンドルIDを使用

$ npx react-native-rename "Travel App" -b com.junedomingo.travelapp 

名前を変更したら、必ずandroidフォルダーに移動してを実行してくださいgradlew clean。次に、メインプロジェクトに戻って実行しnpx react-native run-androidます。

また、以前のプロジェクトにgoogle-services.jsonファイルがある場合は、それに応じて新しいファイルに変更します...次に行ってください:)

詳細はこちらhttps://github.com/junedomingo/react-native-rename#readme


1

あなたの名前を変更するための簡単な手順に従いますapp nameし、Package name場合にあなたがアンドロイドフォルダ内の任意のカスタム変更を加えていない(すなわち。uはちょうどプロジェクトを初期化したシナリオ)

  1. 必要に応じnamepackage.jsonファイルのを変更して保存します。
  2. androidという名前のフォルダを削除します
  3. コマンドを実行する react-native upgrade

注:ivoteje50のコメントで述べたように、公式の手順に従ってキーストアを生成している場合は、androidフォルダーを削除しないでください。キーストアが削除され、新しいアプリに再度署名することはできません。


1
公式の手順に従ってキーストアを生成している場合は、androidフォルダーを削除しないでください。削除すると、キーストアが削除され、新しいアプリに再度署名できなくなります。
Ivotje50

2
やめろ!再作成されない大量のカスタムコードがAndroidコードに含まれている可能性があります
pie6k

1

Android Studioに移動し、アプリを開いて、javaを右クリックし、[新規]、[パッケージ]の順に選択します。

希望する名前を付けます(例:com.something)。

他のパッケージ(名前を変更したい)から新しいパッケージにファイルを移動します。古いパッケージを削除します。

エディターでプロジェクトに移動し、ショートカットを使用してすべてのファイルを検索します(Macではshift cmd F)。古いパッケージの名前を入力します。すべての参照を新しいパッケージ名に変更します。

Android Studioに移動し、プロジェクトのビルド、クリーンアップ、プロジェクトの再ビルドを行います。

できた!

ハッピーコーディング:)


1

私はreact-native-renameパッケージを使用しました。

ターミナルでコマンドを実行してインストールします:

npm install react-native-rename -g

React Nativeプロジェクトのルートで、次のコマンドを実行します。

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp

0

以下でパッケージ名に必要なすべての変更を反映するreact-native-renameパッケージを使用できます。

app / mainapplication.java

AndroidManifest.xml

ただし、java / comフォルダーにあるすべてのファイルのパッケージ名を手動で変更してください。スプラッシュスクリーンアクティビティを作成したときに、古いパッケージ名が更新されないためです。

https://www.npmjs.com/package/react-native-rename


0

私のIDEの検索と置換ツールを使用するだけでうまくいきました。


0

これを実行した後:

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

Build.gradle下に移動android/app/... して、アプリケーションIDの名前を次のように変更してください。

defaultConfig {
        applicationId:com.appname.xxx
........
}

-3

android / app / src / main / AndroidManifest.xmlファイルに移動します-

更新:

要素アプリケーションの attr android:label as:

古い値-android:label = "@ string / app_name"

新しい値-android:label = "(配置する文字列)"

そして

要素アクティビティの attr android:label as:

古い値-android:label = "@ string / app_name"

新しい値-android:label = "(配置する文字列)"

私のために働いた、うまくいけばそれが助けになるでしょう。


2
正直に言って、この回答がこれまでのように反対投票されるべきだったとは思わない。ただし、この回答で 、質問で尋ねられた内容(パッケージ名の変更方法)については取り上げていませ。それでも、「ランチャーに表示されるアプリのタイトルを変更する方法」という質問に答えます。それは適切な答えですか?あんまり。役立つ情報が含まれていますか?はい。したがって、ランチャーのタイトルについて尋ねる質問を見つけて、ここではなくそこでソリューションを投稿することをお勧めします。
Dev-iL 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.