प्रतिक्रियाशील मूल में Android के लिए पैकेज का नाम बदलें


179

मैं react-native init MyAppएक नया रिएक्टिव नेटिव ऐप इनिशियलाइज़ करता था। इसने पैकेज के साथ दूसरों के बीच एक एंड्रॉइड प्रोजेक्ट बनाया com.myapp

इस पैकेज का नाम बदलने का सबसे अच्छा तरीका क्या है, उदाहरण के लिए com.mycompany.myapp:?

मैंने इसे बदलने की कोशिश की, AndroidManifest.xmlलेकिन इसने अन्य त्रुटियां पैदा कीं, इसलिए मैं मान रहा हूं कि यह ऐसा नहीं है।

कोई उपाय?


पैकेज के नाम पर बायाँ-क्लिक करें और रिफैक्टर के लिए जाएँ -> पैकेज का नाम बदलने के लिए नाम बदलें।
कुणाल

मेरे लिए अब जो सबसे अच्छा काम करता है वह है बस ढूंढना और बदलना
mllm



मेरे लिए खोज और प्रतिस्थापित काम
shesh nath

जवाबों:


411

": मैं से परियोजना 'सबफ़ोल्डर नाम दिया गया है एंड्रॉयड / ऐप्स / src / मुख्य / जावा / मेरी / एपीपी / OLD_ID / " के लिए: " एंड्रॉयड / ऐप्स / src / मुख्य / जावा / मेरी / एपीपी / NEW_ID / "

फिर मैन्युअल रूप से पुराने और नए पैकेज आईडी को स्विच किया:

में: android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java :

package MY.APP.NEW_ID;

में एंड्रॉयड / ऐप्स / src / मुख्य / जावा / मेरी / एपीपी / 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"
)

अंत में ग्रेड की सफाई (in / android फोल्डर):

./gradlew clean

23
मुझे पुराने पैकेज मान को नए के साथ बदलने के लिए फ़ाइल BUCK को संपादित करने की भी आवश्यकता है। BTW, 2 फाइलें MainAcitivity.java और MainApplication.java को नए भौतिक पथ पर स्थानांतरित किया जाना चाहिए।
गोल्डन थंब

4
मैंने निर्देशिका android/app/src/main/java/com/old_app_name/का नाम भी बदल दिया ...com/new_app_name/और यह काम करने लगती है।
निकोलस

मेरे पास "सत्र को अंतिम रूप देने में विफल रहा: INSTALL_FAILED_UPDATE_INCOMPATIBLE" जब तक कि मैं Android डिवाइस सिम्युलेटर की मैन्युअल रूप से सफाई करने के लिए मजबूर नहीं किया गया: adb my.package.name की स्थापना रद्द करें ... इसलिए निर्देश ठीक हैं, लेकिन Android सिम्युलेटर एक पुरानी जानकारी के लिए "पकड़" कर सकता है। बुरा तरीका है कि यह दिशाओं की तरह लग रहा है काम नहीं करते। (और केवल ऐप को अनइंस्टॉल करने से यह ठीक नहीं हुआ!)
बिल पैटरसन

मैं इस बारे में पढ़ रहा था और मैंने इस पुस्तकालय की कोशिश की: npmjs.com/package/react-native-rename इसके लिए बहुत अच्छा काम कर रहा है, यह न केवल ऐप का नाम बदल देता है, बल्कि यह बंडल पहचानकर्ता को भी बदल सकता है
fr8888

1
इसे एंड्रॉइड / फोल्डर @Anuj
Cherniv

76

मैं प्रतिक्रिया-मूल-नाम * npm पैकेज का उपयोग करता हूं । इसके माध्यम से स्थापित करें

npm install react-native-rename -g

फिर, अपनी प्रतिक्रिया मूल परियोजना की जड़ से, निम्नलिखित को निष्पादित करें:

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

सरल और मुश्किल एक, मैं सिर्फ MainApplication.java को मैन्युअल रूप से अद्यतन करने की आवश्यकता है।
गोपाल देवरा

59
धन्यवाद, परियोजना को तोड़ दिया
लीप हॉक

@ आकाशराजपूत क्या आपने अपना मुद्दा ठीक किया? कृपया हमें बताएं कि क्या आपको कोई समाधान मिला है
सलीम खान

@SaleemKhan को फिर से प्रोजेक्ट बनाना पड़ा। इस बार प्रतिक्रिया-मूल init के साथ .. बस फ़ाइलों की प्रतिलिपि बनाएँ।
लीप हॉक

5
इसने मेरी परियोजना को तोड़ दिया, और एक नया प्रोजेक्ट बनाना था :(
मुजतबाएफआर

24

से पैकेज का नाम बदलने के com.myappलिए: com.mycompany.myapp(उदाहरण के लिए),

  1. प्रतिक्रिया ऐप के iOS ऐप के लिए, सामान्य रूप से - xcode का उपयोग करें।
  2. Android ऐप के लिए, build.gradle को मॉड्यूल स्तर पर खोलें। android/appफ़ोल्डर में एक । आप पाएंगे
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

com.myappआपको जो भी चाहिए , उसे बदलें ।

उम्मीद है की यह मदद करेगा।


4
यह आपके पैकेज का नाम बदलने का सबसे आसान तरीका है। अपने स्थानीय पैकेज नाम को न बदले, यह आपके अगले बिल्ड पैकेज को बदल देगा। धन्यवाद! ऐसा करने के बाद, करो ./gradlew cleanऔर फिर ./gradlew app:assembleRelease
माइकल हर्ले

2
"हालांकि, applicationIdऔर स्थानीय packageनाम एक-दूसरे से स्वतंत्र हैं", " applicationIdडिवाइस पर और Google Play Store में विशिष्ट रूप से आपके ऐप की पहचान करता है" - डेवलपर.
android.com/studio/build/application-id

मेरे लिए काम नहींNo matching client found for package name 'xxxxx'
MichaelMao

10

आप बस प्रतिक्रिया-मूल-नाम npm पैकेज का उपयोग कर सकते हैं।

का उपयोग कर स्थापित करें

npm install react-native-rename -g

फिर अपने रिएक्टिव नेटिव प्रोजेक्ट की जड़ से निम्नलिखित को निष्पादित करें

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

react-native-rename on npm

लेकिन ध्यान दें कि, यह देयता आपके MainActivity.javaऔर को हटा देती है MainApplication.java। अपना पैकेज नाम बदलने से पहले, इस दो फ़ाइल से बैकअप दें और, पैकेज नाम बदलने के बाद इसे वापस अपनी जगह पर रख दें। यह समाधान मेरे लिए काम करता है

अधिक जानकारी: प्रतिक्रिया-मूल-नाम


1
यदि आप ऐप का नाम नहीं बदलते हैं तो कोई प्रभाव नहीं "कृपया एक अलग नाम का प्रयास करें।"
मून

1
वास्तव में, मैं अपनी परियोजना के लिए अलग नाम की कोशिश करता हूं। लेकिन जब मैं अपना प्रोजेक्ट नाम बदलता हूं तो प्रतिक्रिया-मूल-नाम बदलकर मेरी परियोजना की दो फाइलें हटा देता है।
मोईन होसैनी

8

गोटो एंड्रॉइड स्टूडियो

अपने पैकेज पर राइट-क्लिक करें (शायद कॉम) -> रेफ्रेक्टर -> नाम बदलें -> संवाद में नया पैकेज नाम दर्ज करें -> रिफाइनरी

यह हर जगह आपके पैकेज का नाम बदल देगा।


यह पूरी परियोजना संरचना में मुझे प्रभावित नहीं करता है।
किशन ओझा

रिएक्ट-नेटिव जेएस प्रोजेक्ट के साथ कैसे कर सकते हैं?
आरिफुर रहमान

8

Init स्क्रिप्ट Android के लिए आपके द्वारा दिए गए नाम (उदाहरण के 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.myappहैcom.mycompany.myapp

  1. के तहत एक नया पैकेज पदानुक्रम com.mycompany.myapp बनाएँ android/app/src/main/java

  2. एंड्रॉइड स्टूडियो जीयूआई का उपयोग com.myappकरने से सभी कक्षाओं को कॉपी करेंcom.mycompany.myapp

  3. एंड्रॉइड स्टूडियो सभी कॉपी किए गए वर्गों के लिए उपयुक्त पैकेज नाम रखने का ध्यान रखेगा। यह उपयोगी है यदि आपके पास कुछ कस्टम मॉड्यूल हैं और सभी .java फ़ाइलों में मैन्युअल रूप से प्रतिस्थापित नहीं करना चाहते हैं।

  4. अद्यतन android/app/src/main/AndroidManifest.xmlऔर android/app/build.gradle(की जगह com.myappके लिएcom.mycompany.myapp

  5. परियोजना को सिंक करें (ढाल निर्माण)


5

मेरे पास @ चेर्निव के उत्तर (मेरे लिए मैकओएस पर काम करता है) पर आधारित एक समाधान है। दो अंतर: जावा फोल्डर में मेरे पास एक Main2Activity.java है जो मैं एक ही काम करता हूं, और कॉलिंग को परेशान न करें। जब तक यह प्रतिक्रिया-देशी पैकर की तरह लगता है कि /gradlew साफ है, स्वचालित रूप से वैसे भी।

वैसे भी, मेरा समाधान यही करता है कि चेर्निव क्या करता है, सिवाय इसके कि मैंने इसके लिए एक बैश शेल स्क्रिप्ट बनाई है क्योंकि मैं कोड के एक सेट का उपयोग करके कई ऐप बना रहा हूं और जब भी मैं अपनी एनपीएम स्क्रिप्ट चलाता हूं तो आसानी से पैकेज का नाम बदल सकता हूं।

यहाँ बैश स्क्रिप्ट का उपयोग किया गया है। आपको पैकेजनाम को संशोधित करने की आवश्यकता होगी जिसे आप उपयोग करना चाहते हैं, और जो कुछ भी आप इसे करना चाहते हैं उसे जोड़ दें ... लेकिन यहां मूल बातें हैं। आप .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 की टिप्पणी को संपादित करने की आवश्यकता होगी। यह टिप्पणी में 'पैकेज' शब्द है। स्क्रिप्ट कैसे काम करती है, इसकी वजह से यह 'पैकेज' शब्द के साथ कोई भी लाइन लेता है और इसे बदल देता है। इस वजह से, इस लिपि का भविष्य में प्रमाण नहीं हो सकता है क्योंकि हो सकता है कि वही शब्द कहीं और इस्तेमाल किया गया हो।

दूसरा डिस्क्लेमर: पहले 3 sed कमांड्स java फाइल्स को javaFiles नामक डाइरेक्टरी से एडिट करती हैं। जब से मैं वहाँ से कॉपी की गई जावा फ़ाइलों का एक सेट होना चाहता हूँ (जैसा कि मैं भविष्य में इसमें नए पैकेज जोड़ सकता हूँ) मैंने स्वयं इस निर्देशिका को बनाया। आप शायद यही काम करना चाहेंगे। इसलिए जावा फ़ोल्डर से सभी फाइलों को कॉपी करें (वास्तविक जावा फाइलों को खोजने के लिए अपने सबफ़ोल्डर्स के माध्यम से जाएं) और उन्हें नए फ़ोल्डर में डालें जिसे जावाफाइल्स कहा जाता है।

तीसरा डिस्क्लेमर: आपको स्क्रिप्ट और बॉटम के शीर्ष पर पथ के अनुरूप होने के लिए पैकेजनाम वैरिएबल को एडिट करना होगा।


2

VS कोड में, Ctrl + Shift + F'ढूँढें' में अपना पुराना पैकेज नाम दबाएँ और 'प्रतिस्थापन' में अपना नया पैकेज दर्ज करें। फिर 'सभी घटनाओं को बदलें' दबाएँ।

निश्चित रूप से व्यावहारिक तरीका नहीं है। लेकिन, यह मेरे लिए चाल है।


2

उपयोग npx react-native-rename <newName>

कस्टम बंडल आइडेंटिफायर (केवल iOS के लिए, कृपया Xcode का उपयोग करें)

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

सबसे पहले, नई शाखा पर जाएँ (वैकल्पिक लेकिन अनुशंसित)

$ git checkout -b rename-app

फिर, अपने ऐप का नाम बदलें $ npx प्रतिक्रिया-मूल-नाम "यात्रा ऐप"

कस्टम बंडल पहचानकर्ता के साथ

$ 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यदि आपने एंड्रॉइड फोल्डर में कोई कस्टम परिवर्तन नहीं किया है (जैसे कि परिदृश्य जहां यू केवल प्रारंभिक खाता है)

  1. बस जरूरत के nameअनुसार package.jsonफाइल में बदलाव करें और इसे सेव करें।
  2. Android नाम का फ़ोल्डर निकालें
  3. कमांड चलाएं react-native upgrade

नोट: जैसा कि ivoteje50 ने टिप्पणी में उल्लेख किया है, अगर आपने पहले से ही एक कीस्टोर उत्पन्न करने के लिए आधिकारिक निर्देशों का पालन किया है, तो एंड्रॉइड फ़ोल्डर को न हटाएं, क्योंकि यह कीस्टोर को हटा देगा और आप फिर से एक नया ऐप साइन नहीं कर सकते।


1
अगर आपने पहले ही आधिकारिक निर्देश का पालन करने के लिए कीस्टॉर उत्पन्न करने के लिए एंड्रॉइड फोल्डर को नहीं हटाया है, क्योंकि यह कीस्टोर को हटा देगा और आप फिर से एक नया ऐप साइन नहीं कर सकते।
Ivotje50

2
यह मत करो! आपके पास एंड्रॉइड कोड में कस्टम कोड के टन हो सकते हैं जो कि पुनर्निर्मित नहीं किया जाएगा
pie6k

1

एंड्रॉइड स्टूडियो में जाएं, ऐप खोलें, जावा पर राइट क्लिक करें और नया और फिर पैकेज चुनें।

वह नाम दें जिसे आप चाहते हैं (जैसे com.something)।

अन्य पैकेज (आप का नाम बदलना चाहते हैं) से फ़ाइलों को नए पैकेज में स्थानांतरित करें। पुराने पैकेज को हटा दें।

अपने संपादक में अपनी परियोजना पर जाएं और सभी फाइलों में खोज के लिए शॉर्टकट का उपयोग करें (मैक पर शिफ्ट सीएमडी एफ है)। अपने पुराने पैकेज के नाम पर टाइप करें। सभी संदर्भों को नए पैकेज के नाम में बदलें।

Android Studio पर जाएं, Build, Clean Project, Rebuild Project।

किया हुआ!

मुबारक कोडिंग :)


1

मैंने प्रतिक्रिया-मूल-पुनर्नाम पैकेज का उपयोग किया है।

टर्मिनल में स्थापित करने के लिए कमांड चलाएँ:

npm install react-native-rename -g

अपने रिएक्टिव नेटिव प्रोजेक्ट की जड़ में, निम्न कमांड चलाएँ:

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

0

आप प्रतिक्रिया-मूल-पुनर्नाम पैकेज का उपयोग कर सकते हैं जो पैकेज नाम के सभी आवश्यक परिवर्तनों के तहत ले जाएगा

एप्लिकेशन / mainapplication.java

AndroidManifest.xml

लेकिन जावा / कॉम फ़ोल्डर के तहत सभी फाइलों के पैकेज नाम को मैन्युअल रूप से बदलना सुनिश्चित करें। क्योंकि जब मैंने एक स्प्लैश स्क्रीन गतिविधि बनाई थी तो पुराने पैकेज का नाम अपडेट नहीं किया गया था।

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


0

बस मेरी आईडीई की खोज और प्रतिस्थापन उपकरण का उपयोग करके चाल चली।


0

इसे चलाने के बाद:

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

नीचे दिए गए अनुसार आवेदन पत्र आईडी के Build.gradleतहत गोटो का भी android/app/...नाम बदलें और उसका नाम बदलें:

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

-3

Android / app / src / main / AndroidManifest.xml फाइल करने के लिए जाएं -

अपडेट करें :

Attr android: एलीमेंट एप्लिकेशन का लेबल इस प्रकार है :

पुराना मान - Android: लेबल = "@ string / app_name"

नया मूल्य - android: लेबल = "(स्ट्रिंग जिसे आप रखना चाहते हैं)"

तथा

Attr android: तत्व गतिविधि का लेबल निम्नानुसार है :

पुराना मान - Android: लेबल = "@ string / app_name"

नया मूल्य - android: लेबल = "(स्ट्रिंग जिसे आप रखना चाहते हैं)"

मेरे लिए काम किया, उम्मीद है कि यह मदद करेगा।


2
मुझे ईमानदारी से नहीं लगता कि इस जवाब को उतना ही कम किया जाना चाहिए था जितना कि यह किया गया है। हालांकि, यह उत्तर यह नहीं बताता है कि प्रश्न में क्या पूछा गया था - पैकेज का नाम कैसे बदलना है । फिर भी, यह इस सवाल का जवाब देता है कि "लॉन्चर में दिखाई देने वाले ऐप का शीर्षक कैसे बदलना है"। क्या यह एक प्रासंगिक जवाब है? ज़रुरी नहीं। क्या इसमें उपयोगी जानकारी है? हाँ। इसलिए, मैं आपसे एक प्रश्न जो लांचर शीर्षक के बारे में पूछता है खोजने के लिए और अपने समाधान पोस्ट का सुझाव वहाँ के बजाय यहां।
देव-आईएल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.