React Native'de Android için paket adını değiştirme


181

Kullandığım react-native init MyAppyeni Yerli app Tepki başlatılması. Bu diğerleri arasında paketi ile bir Android projesi yarattı com.myapp.

: Örneğin, bu paket adını değiştirmek için en iyi yolu nedir com.mycompany.myapp?

Bunu değiştirmeyi denedim AndroidManifest.xmlama başka hatalar yarattı, bu yüzden yolun olmadığını varsayıyorum.

Herhangi bir fikir?


Paket adına sol tıklayın ve paket adını yeniden adlandırmak için Refactor -> Yeniden Adlandır seçeneğine gidin.
kunal

Şimdi benim için en iyi olan şey sadece bul ve değiştir
mllm



benim için arama ve değiştirme çalıştı
shesh nath

Yanıtlar:


415

": Ne gelen proje' klasörünü yeniden adlandırdık android / app / src / main / java / MY / APP / OLD_ID / " için: " android / app / src / main / java / MY / APP / NEW_ID / "

Ardından eski ve yeni paket kimliklerini manuel olarak değiştirin:

İçinde: android / app / src / main / 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;

Gelen android / app / src / main / AndroidManifest.xml :

package="MY.APP.NEW_ID"

Ve android / app / build.gradle'de :

applicationId "MY.APP.NEW_ID"

In android / app / BUCK :

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

Gradle 'temizleme sonunda ( / android klasöründe):

./gradlew clean

23
Ayrıca eski paket değerini yenisiyle değiştirmek için BUCK dosyasını düzenlemem gerekiyor. BTW, MainAcitivity.java ve MainApplication.java adlı 2 dosyanın yeni fiziksel yola taşınması gerekir.
Altın Başparmak

4
Ayrıca dizin adını android/app/src/main/java/com/old_app_name/etmek ...com/new_app_name/ve onu işe görünüyor.
nicholas

"Android cihaz simülatörünün manuel olarak temizlenmesini zorlayana kadar" oturum tamamlanamadı: INSTALL_FAILED_UPDATE_INCOMPATIBLE "hatası vardı: adb uninstall my.package.name ... Yani talimatlar iyi, ama android simülatör eski bilgilerde" bekleyebilir " kötü yol tarifi çalışmıyor gibi görünüyor. (Ve sadece uygulamayı kaldırmak bunu düzeltmedi!)
Bill Patterson

Bu konuda okuyordum ve bu kütüphaneyi denedim: npmjs.com/package/react-native-rename bunun için gayet iyi çalışıyor gibi görünüyor, sadece uygulamayı yeniden adlandırmakla kalmıyor, aynı zamanda paket tanımlayıcısını da değiştirebilir
fray88

1
bunu yapmak android / klasör @Anuj
Cherniv

77

Kullandığım tepki yerli-yeniden adlandırma * npm paketi. Yoluyla yükleyin

npm install react-native-rename -g

Ardından, React Native projenizin kökünden aşağıdakileri yürütün:

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

Bu basit ve zor olanı, sadece MainApplication.java'yı manuel olarak güncellemem gerekiyor.
Gopal Devra

60
Teşekkürler, projeyi kırdı
Leap Hawk

@AkashRajput sorununuzu çözdünüz mü? Herhangi bir çözüm bulduysanız lütfen bize bildirin
Saleem Khan

@SaleemKhan Projeyi yeniden oluşturmak zorunda kaldı. Reat-native init ile bu sefer .. Sadece dosyaları kopyalayın.
Leap Hawk

5
Projemi bozdu ve yeni bir proje oluşturmak zorunda kaldı :(
MujtabaFR

24

Paket adını olarak değiştirmek com.myappiçin: com.mycompany.myapp(örneğin),

  1. Reaksiyon uygulamasının iOS uygulaması için xcode'u kullanın - genel olarak.
  2. Android uygulaması için modül düzeyinde build.gradle dosyasını açın. Bir android/appklasörde. Bulacaksın
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

com.myappİhtiyacınız olanı değiştirin .

Bu yardımcı olur umarım.


4
Paket adınızı değiştirmenin en kolay yolu budur. Tho, yerel paket adınızı değiştirmezseniz, bu bir sonraki derleme paketinizi değiştirir. Teşekkürler! Bunu yaptıktan sonra yapın ./gradlew cleanve sonra ./gradlew app:assembleRelease.
Michael Harley

2
"Bununla birlikte, applicationIdve yerel packagead birbirinden bağımsızdır", " applicationIduygulamanızı cihazda ve Google Play Store'da benzersiz bir şekilde tanımlar" - developer.android.com/studio/build/application-id
eightyfive

benim için çalışmıyorNo matching client found for package name 'xxxxx'
MichaelMao

10

reat-native-rename npm paketini kullanabilirsiniz.

Kullanarak yükleyin

npm install react-native-rename -g

Ardından React Native projenizin kökünden aşağıdakileri yürütün

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

react-native-rename on npm

ama dikkat edin, bu lib kaldır MainActivity.javave MainApplication.java. paket adınızı değiştirmeden önce, bu iki dosyadan bir yedek verin ve paket adını değiştirdikten sonra yerine geri koyun. bu çözüm benim için çalışıyor

daha fazla bilgi: reat-native-rename


1
Uygulama adını değiştirmezseniz etkisi olmaz "Lütfen farklı bir ad deneyin."
Ay'da Yapıldı

1
aslında projem için farklı bir isim deniyorum. ancak proje adımı değiştirdiğimde tepki-native-yeniden adlandır projeden bu iki dosyayı kaldırır.
Moein Hosseini

8

Android stüdyosuna git

Paketinizi sağ tıklayın (büyük olasılıkla com) -> Refrakter -> Yeniden Adlandır -> İletişim kutusuna yeni paket adı girin -> Refraktör Yap

Paket adınızı her yerde yeniden adlandırır.


Sanırım tüm proje yapısını etkilemeyecektir.
Kishan Oza

React-Native JS projesi ile nasıl yapabilirim?
Arifur Rahman

8

İnit betiği, verdiğiniz ada (ör com.acmeapp. AcmeApp) Göre Android için benzersiz bir tanımlayıcı oluşturur .

ApplicationId anahtarını arayarak hangi adın oluşturulduğunu görebilirsiniz android/app/build.gradle.

Bu benzersiz tanımlayıcıyı değiştirmeniz gerekirse, şimdi aşağıda açıklandığı gibi yapın:

Gelen /androidklasörün, tüm tekrarlarını değiştirmek com.acmeapptarafındancom.acme.app

Ardından dizin yapısını aşağıdaki komutlarla değiştirin:

mkdir android/app/src/main/java/com/acme

mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app

Uygulama tanımlayıcısındaki her nokta için bir klasör düzeyine ihtiyacınız vardır.

Kaynak: https://blog.elao.com/en/dev/from-react-native-init-to-app-stores-real-quick/


7

Android Studio kullanıyorsanız

değişen com.myappiçincom.mycompany.myapp

  1. com.mycompany.myapp altında yeni bir paket hiyerarşisi oluştur android/app/src/main/java

  2. Adlı kullanıcıdan tüm sınıfları kopyala com.myapp için com.mycompany.myappkullanan Android stüdyo GUI

  3. Android stüdyosu, kopyalanan tüm sınıflar için uygun paket adı koymaya özen gösterir. Bazı özel modülleriniz varsa ve tüm .java dosyalarında el ile değiştirmek istemiyorsanız bu yararlıdır.

  4. Güncelle android/app/src/main/AndroidManifest.xmlve android/app/build.gradle(değiştircom.myapp etmekcom.mycompany.myapp

  5. Projeyi senkronize etme (sınıf oluşturma)


5

@ Cherniv'in cevabına (benim için macOS üzerinde çalışıyor) dayalı bir çözümüm var. İki fark: java klasöründe aynı şeyi yaptığım bir Main2Activity.java var ve ben tepki yerel gibi paketleyici otomatik olarak zaten yaptığı gibi ./gradlew temiz çağırmak zahmet etmeyin.

Her neyse, benim çözüm Cherniv's ne yapar, bunun dışında bir kod kümesi kullanarak birden fazla uygulama inşa ediyorum ve npm betiklerimi çalıştırdığımda paket adını kolayca değiştirmek istiyorum çünkü bunun için bir bash kabuk komut dosyası yaptım.

İşte kullandığım bash betiği. Kullanmak istediğiniz packageName öğesini değiştirmeniz ve buna istediğiniz herhangi bir şeyi eklemeniz gerekecek ... ama işte temel bilgiler. Bir .sh dosyası oluşturabilir, izin verebilir ve ardından reaktif-native komutunu çalıştırdığınız klasörden çalıştırabilirsiniz:

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

YASAL UYARI: Önce MainApplication.java'nın java dosyasının alt kısmındaki açıklamasını düzenlemeniz gerekir. Yorumda 'paket' kelimesi var. Komut dosyasının çalışma biçimi nedeniyle içinde 'paket' kelimesi olan herhangi bir satırı alır ve onun yerine geçer. Bu nedenle, bu komut dosyası başka bir yerde kullanılan aynı kelime olabileceğinden geleceğe karşı kanıtlanmış olmayabilir.

İkinci Feragatname: ilk 3 sed komutu java dosyalarını javaFiles adlı bir dizinden düzenler. Bu dizini kendim oluşturdum çünkü oradan kopyalanan bir java dosyası kümesi istiyorum (gelecekte yeni paketler ekleyebileceğim için). Muhtemelen aynı şeyi yapmak isteyeceksiniz. Bu nedenle, java klasöründeki tüm dosyaları kopyalayın (gerçek java dosyalarını bulmak için alt klasörlerine gidin) ve bunları javaFiles adlı yeni bir klasöre koyun.

Üçüncü Feragatname: packageName değişkenini, komut dosyasının üstündeki ve altındaki yollarla aynı hizada olacak şekilde düzenlemeniz gerekir (com.MyWebsite.MyAppName / com / MyWebsite / MyAppName)


2

VS Kodunda, Ctrl + Shift + F ve 'Bul'a eski paket adınızı girin ve' Değiştir'e yeni paketinizi girin. Ardından 'Tüm tekrarlamaları değiştir'e basın.

Kesinlikle pragmatik bir yol değil. Ama benim için hile yapıldı.


2

kullanım npx react-native-rename <newName>

Özel Paket Tanımlayıcı ile (yalnızca Android. İOS için lütfen Xcode kullanın)

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

İlk olarak, yeni şubeye geç (isteğe bağlı ancak önerilir)

$ git checkout -b rename-app

Ardından, uygulamanızı yeniden adlandırın $ npx tepki-yerel-yeniden adlandır "Seyahat Uygulaması"

Özel Paket Tanımlayıcı ile

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

Adı değiştirdikten sonra, lütfen android klasörüne gidip çalıştırdığınızdan emin olun gradlew clean. sonra ana projeye geri dönün ve çalıştırın npx react-native run-android.

Ayrıca önceki projenizde google-services.json dosyanız varsa, yenisiyle uygun olarak değiştirin ... o zaman gitmek iyidir :)

Buradan daha fazlasını görün https://github.com/junedomingo/react-native-rename#readme


1

Senin adlandırmak basit adımları izleyin app nameve Package namedurumda android klasöründe herhangi özel bir değişiklik yapmadıysanız (yani. U sadece projeyi başlatıldı senaryo)

  1. Basitçe değiştirmek nameiçindepackage.json istediğiniz kadar dosya ve kaydedin.
  2. Android adlı klasörü kaldır
  3. komutu çalıştır react-native upgrade

Not: Yorumda belirtildiği gibi , anahtar deposunu kaldırmak için resmi talimatları izlediyseniz android klasörünü kaldırmayın, çünkü anahtar deposunu kaldıracak ve yeni bir uygulamayı tekrar imzalayamayacaksınız.


1
Bir anahtar deposu oluşturmak için resmi talimatları izlediyseniz android klasörünü kaldırmayın, çünkü anahtar deposunu kaldıracak ve yeni bir uygulamayı tekrar imzalayamayacaksınız.
'19

2
Yapma! Android kodunda yeniden oluşturulmayacak tonlarca özel kod olabilir
pie6k

1

Android Studio'ya gidin, uygulamayı açın, java'yı sağ tıklayın ve Yeni'yi ve ardından Paket'i seçin.

İstediğiniz adı verin (ör. Com.something).

Dosyaları diğer paketten (yeniden adlandırmak istediğiniz) yeni Paket'e taşıyın. Eski paketi silin.

Düzenleyicinizde projenize gidin ve tüm dosyalarda arama yapmak için kısayolu kullanın (Mac'te shift cmd F'dir). Eski paketinizin adını yazın. Tüm başvuruları yeni paket adıyla değiştirin.

Android Studio, Build, Clean Project, Rebuild Project'e gidin.

Bitti!

Mutlu kodlama :)


1

Kullandığım tepki yerli-yeniden adlandırma paketi.

Terminalde kurulum komutunu çalıştırın:

npm install react-native-rename -g

React Native projenizin kök dizininde aşağıdaki komutu çalıştırın:

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

0

Aşağıdaki paket adındaki tüm gerekli değişiklikleri alacak olan reat-native-rename paketini kullanabilirsiniz

Uygulamanın / mainapplication.java

AndroidManifest.xml

ancak java / com klasörü altındaki tüm dosyaların paket adını elle değiştirdiğinizden emin olun. çünkü bir açılış ekranı etkinliği oluşturduğumda eski paket adı güncellenmiyor.

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


0

Sadece benim IDE arama ve değiştirme aracını kullanarak hile yaptı.


0

Bunu çalıştırdıktan sonra:

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

Ayrıca aşağıda gösterildiği gibi uygulama kimliğinin Build.gradlealtına android/app/...girip yeniden adlandırdığınızdan emin olun :

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

-3

Android / app / src / main / AndroidManifest.xml dosyasına gidin -

Güncelleme :

attr android: Element uygulamasının etiketi :

Eski değer - android: label = "@ string / app_name"

Yeni Değer - android: label = "(koymak istediğiniz dize)"

ve

attr android: Element etkinliğinin etiketi :

Eski değer - android: label = "@ string / app_name"

Yeni Değer - android: label = "(koymak istediğiniz dize)"

Benim için çalıştı, umarım yardımcı olur.


2
Dürüst olmak gerekirse, bu cevabın olduğu kadar düşürülmesi gerektiğini düşünmüyorum. Ancak bu cevap vermez değil nasıl değiştirileceği - Söz konusu isteneni ele paket adı . Ancak, "başlatıcıda görünen uygulamanın başlığının nasıl değiştirileceği" sorusuna cevap veriyor. İlgili bir cevap mı? Pek sayılmaz. Yararlı bilgiler içeriyor mu? Evet. Bu nedenle, başlatıcı başlığını soran bir soru bulmanızı ve çözümünüzü burada yerine göndermenizi öneririm .
Dev-iL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.