Thay đổi tên gói cho Android trong React Native


178

Tôi đã sử dụng react-native init MyAppđể khởi tạo một ứng dụng React Native mới. Điều này tạo ra trong số những người khác một dự án Android với gói com.myapp.

Cách tốt nhất để thay đổi tên gói này là com.mycompany.myappgì?

Tôi đã thử thay đổi nó AndroidManifest.xmlnhưng nó đã tạo ra các lỗi khác, vì vậy tôi cho rằng nó không phải là cách.

Bất kỳ ý tưởng?


Nhấp chuột trái vào tên gói và vào tùy chọn Refactor -> Đổi tên để đổi tên tên gói.
kunal

Những gì làm việc tốt nhất với tôi bây giờ chỉ là tìm và thay thế
mllm

3
Bạn cũng có thể dùng thử saumya.github.io/ray/articles/72
Andy

hãy thử điều này cũng đổi tên gói ứng dụng Android
c49

cho tôi tìm kiếm và thay thế làm việc
shesh nath

Câu trả lời:


411

Tôi đã đổi tên thư mục con của dự án từ: " android / app / src / main / java / MY / APP / OLD_ID / " thành: " android / app / src / main / java / MY / APP / NEW_ID / "

Sau đó, tự chuyển đổi id gói cũ và mới:

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

package MY.APP.NEW_ID;

Trong android / app / src / main / java / MY / APP / NEW_ID / MainApplication.java :

package MY.APP.NEW_ID;

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

package="MY.APP.NEW_ID"

Và trong android / app / build.gradle :

applicationId "MY.APP.NEW_ID"

( Tùy chọn ) Trong android / app / Bucks :

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

Lớp dọn dẹp cuối cùng ( thư mục trong / android ):

./gradlew clean

23
Tôi cũng cần chỉnh sửa tệp Bucks để thay thế giá trị gói cũ bằng giá trị mới. BTW, 2 tệp MainAcergy.java và MainApplication.java sẽ được chuyển đến đường dẫn vật lý mới.
Ngón tay cái vàng

4
Tôi cũng đổi tên thư mục android/app/src/main/java/com/old_app_name/thành ...com/new_app_name/và nó dường như hoạt động.
nicholas

Tôi đã gặp lỗi "Không thể hoàn tất phiên: INSTALL_FAILED_UPDATE_INCOMPATIBLE" cho đến khi tôi buộc phải làm sạch trình giả lập thiết bị Android theo cách thủ công: adb gỡ cài đặt my.package.name ... Vì vậy, các hướng dẫn đều có thể "giữ" thông tin cũ trong một cách xấu làm cho nó trông giống như hướng không hoạt động. (Và chỉ cần gỡ cài đặt ứng dụng KHÔNG khắc phục điều này!)
Bill Patterson

Tôi đã đọc về điều này và tôi đã thử thư viện này: npmjs.com/package/react-native-rename dường như đang hoạt động khá tốt cho việc này, nó không chỉ đổi tên ứng dụng mà còn có thể thay đổi định danh gói
fray88

1
làm điều đó trong android / thư mục @Anuj
Cherniv

77

Tôi sử dụng gói * npm Reac -igen -rename . Cài đặt nó qua

npm install react-native-rename -g

Sau đó, từ thư mục gốc của dự án React Native của bạn, hãy thực hiện như sau:

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

Đó là một cách đơn giản và khó khăn, tôi chỉ cần cập nhật MainApplication.java theo cách thủ công.
Gopal Devra

59
Cảm ơn, đã phá vỡ dự án
Leap Hawk

@AkashRajput bạn đã khắc phục vấn đề của mình chưa? vui lòng cho chúng tôi biết nếu bạn tìm thấy bất kỳ giải pháp nào
Saleem Khan

@SaleemKhan Phải tạo lại dự án. Lần này với init gốc tự nhiên .. Chỉ cần sao chép các tập tin.
Leap Hawk

5
Nó đã phá vỡ dự án của tôi và phải tạo một dự án mới :(
MujtabaFR

24

Để thay đổi tên gói từ com.myappthành: com.mycompany.myapp(ví dụ),

  1. Đối với ứng dụng iOS của ứng dụng phản ứng, hãy sử dụng xcode - dưới dạng chung.
  2. Đối với ứng dụng Android, hãy mở build.gradle ở cấp mô-đun. Một trong android/appthư mục. Bạn sẽ thấy
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

Thay đổi com.myappbất cứ điều gì bạn cần.

Hi vọng điêu nay co ich.


4
Đây là cách dễ nhất để thay đổi tên gói của bạn. Tho, không thay đổi tên gói địa phương của bạn, điều này sẽ thay đổi gói xây dựng tiếp theo của bạn. Cảm ơn! Sau khi làm điều này, làm ./gradlew cleanvà sau đó ./gradlew app:assembleRelease.
Michael Harley

2
"Tuy nhiên, tên applicationIdpackagetên địa phương độc lập với nhau", " applicationIdnhận dạng duy nhất ứng dụng của bạn trên thiết bị và trong Google Play Store" - developer.android.com/studio/build/application-id
Eightyfive

không làm việc cho tôiNo matching client found for package name 'xxxxx'
MichaelMao

10

bạn chỉ có thể sử dụng gói npm Reac -igen-đổi tên.

Cài đặt bằng

npm install react-native-rename -g

Sau đó, từ gốc của dự án React Native của bạn thực hiện như sau

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

react-native-rename on npm

nhưng lưu ý rằng, lib này loại bỏ của bạn MainActivity.javaMainApplication.java. trước khi thay đổi tên gói của bạn, hãy sao lưu từ hai tệp này và sau khi thay đổi tên gói, chỉ cần đặt nó trở lại vị trí của chúng. giải pháp này hiệu quả với tôi

Thêm thông tin: Reac -igen-đổi tên


1
Không có hiệu lực nếu bạn không thay đổi tên ứng dụng "Vui lòng thử một tên khác."
Made in Moon

1
Trên thực tế, tôi thử tên khác cho dự án của tôi. nhưng khi tôi thay đổi tên dự án Reac -igen-rename sẽ xóa hai tệp đó khỏi dự án của tôi.
Moein Hosseini

8

Phòng thu Android

Nhấp chuột phải vào gói của bạn (rất có thể là com) -> Refractor -> Đổi tên -> Nhập tên gói mới trong hộp thoại -> Do Refractor

Nó sẽ đổi tên tên gói của bạn ở khắp mọi nơi.


Tôi đoán nó sẽ không ảnh hưởng đến toàn bộ cấu trúc dự án.
Kishan Oza

Làm thế nào có thể làm với dự án React-Native JS?
Arifur Rahman

8

Tập lệnh init tạo ra một mã định danh duy nhất cho Android dựa trên tên bạn đã đặt cho nó (ví dụ: com.acmeappcho AcmeApp).

Bạn có thể thấy tên được tạo bằng cách tìm khóa applicationId trong android/app/build.gradle.

Nếu bạn cần thay đổi định danh duy nhất đó, hãy thực hiện ngay như được mô tả bên dưới:

Trong /androidthư mục, thay thế tất cả các lần xuất hiện của com.acmeappbằngcom.acme.app

Sau đó thay đổi cấu trúc thư mục với các lệnh sau:

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

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

Bạn cần một cấp độ thư mục cho mỗi dấu chấm trong định danh ứng dụng.

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


7

Nếu bạn đang sử dụng Android Studio-

đổi com.myappsangcom.mycompany.myapp

  1. tạo một hệ thống phân cấp gói mới com.mycompany.myapp trong android/app/src/main/java

  2. Sao chép tất cả các lớp từ com.myappđể com.mycompany.myappsử dụng GUI của Android studio

  3. Studio Android sẽ đảm nhiệm việc đặt tên gói phù hợp cho tất cả các lớp được sao chép. Điều này hữu ích nếu bạn có một số mô-đun tùy chỉnh và không muốn thay thế thủ công trong tất cả các tệp .java.

  4. Cập nhật android/app/src/main/AndroidManifest.xmlandroid/app/build.gradle(thay thế com.myappchocom.mycompany.myapp

  5. Đồng bộ hóa dự án (xây dựng lớp)


5

Tôi có một giải pháp dựa trên câu trả lời của @ Cherniv (hoạt động trên macOS cho tôi). Hai điểm khác biệt: Tôi có một Main2Activity.java trong thư mục java mà tôi làm điều tương tự và tôi không bận tâm khi gọi ./gradlew sạch vì có vẻ như trình đóng gói gốc phản ứng tự động thực hiện.

Dù sao, giải pháp của tôi thực hiện những gì của Cherniv, ngoại trừ tôi đã tạo tập lệnh bash shell cho nó vì tôi đang xây dựng nhiều ứng dụng bằng một bộ mã và muốn có thể dễ dàng thay đổi tên gói bất cứ khi nào tôi chạy tập lệnh npm của mình.

Đây là kịch bản bash tôi đã sử dụng. Bạn sẽ cần sửa đổi tên gói bạn muốn sử dụng và thêm bất cứ thứ gì bạn muốn vào nó ... nhưng đây là những điều cơ bản. Bạn có thể tạo tệp .sh, cấp quyền và sau đó chạy tệp đó từ cùng thư mục bạn chạy Reac -igen từ:

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

TUYÊN BỐ TỪ CHỐI: Trước tiên, bạn cần chỉnh sửa nhận xét của MainApplication.java ở gần cuối tệp java. Nó có từ 'gói' trong bình luận. Do cách tập lệnh hoạt động, nó lấy bất kỳ dòng nào có từ 'gói' trong đó và thay thế nó. Bởi vì điều này, kịch bản này có thể không được chứng minh trong tương lai vì có thể có cùng một từ được sử dụng ở một nơi khác.

Tuyên bố miễn trừ trách nhiệm thứ hai: 3 lệnh sed đầu tiên chỉnh sửa các tệp java từ một thư mục có tên javaFiles. Tôi đã tự tạo thư mục này vì tôi muốn có một tập các tệp java được sao chép từ đó (vì tôi có thể thêm các gói mới vào nó trong tương lai). Bạn có thể sẽ muốn làm điều tương tự. Vì vậy, sao chép tất cả các tệp từ thư mục java (đi qua các thư mục con của nó để tìm các tệp java thực tế) và đặt chúng vào một thư mục mới có tên javaFiles.

Tuyên bố miễn trừ trách nhiệm thứ ba: Bạn sẽ cần chỉnh sửa biến góiName để phù hợp với các đường dẫn ở đầu tập lệnh và dưới cùng (com.MyWebsite.MyAppName thành com / MyWebsite / MyAppName)


2

Trong Mã VS, nhấn Ctrl + Shift + Fvà nhập tên gói cũ của bạn vào 'Tìm' và nhập gói mới của bạn vào 'Thay thế'. Sau đó nhấn 'Thay thế tất cả các lần xuất hiện'.

Chắc chắn không phải là cách thực dụng. Nhưng, nó đã thực hiện mánh khóe cho tôi.


2

Sử dụng npx react-native-rename <newName>

Với Mã nhận dạng gói tùy chỉnh (chỉ dành cho Android. Đối với iOS, vui lòng sử dụng Xcode)

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

Đầu tiên, Chuyển sang chi nhánh mới (tùy chọn nhưng được khuyến nghị)

$ git checkout -b rename-app

Sau đó, Đổi tên ứng dụng của bạn $ npx Reac -igen-đổi tên thành "Ứng dụng du lịch"

Với định danh gói tùy chỉnh

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

Sau khi bạn thay đổi tên, hãy chắc chắn rằng bạn vào thư mục Android và chạy gradlew clean. sau đó quay trở lại dự án chính và chạy npx react-native run-android.

Ngoài ra Nếu bạn có tệp google-services.json trong dự án trước đó của bạn, hãy thay đổi tương ứng với tệp mới ... thì bạn nên đi :)

Xem thêm tại đây https://github.com/junedomingo/react-native-rename#readme


1

Thực hiện theo các bước đơn giản để đổi tên của bạn app namePackage nametrong trường hợp bạn chưa thực hiện bất kỳ thay đổi tùy chỉnh nào trong thư mục Android (ví dụ: kịch bản mà bạn vừa khởi tạo dự án)

  1. Đơn giản chỉ cần thay đổi nametrong package.jsontập tin như bạn cần và lưu nó.
  2. Xóa thư mục có tên android
  3. chạy lệnh react-native upgrade

Lưu ý: Như ivoteje50 đã đề cập trong bình luận, Đừng xóa thư mục Android nếu bạn đã làm theo các hướng dẫn chính thức để tạo kho khóa, vì nó sẽ xóa kho khóa và bạn không thể đăng nhập lại ứng dụng mới.


1
Không xóa thư mục Android nếu bạn đã làm theo các hướng dẫn chính thức để tạo kho khóa, vì nó sẽ xóa kho khóa và bạn không thể đăng nhập lại ứng dụng mới.
Ivotje50

2
Đừng làm thế! Bạn có thể có hàng tấn mã tùy chỉnh trong mã Android sẽ không được tạo lại
pie6k

1

Truy cập Android Studio, mở ứng dụng, nhấp chuột phải vào java và chọn Mới rồi Gói.

Đặt tên bạn muốn (ví dụ: com.s Something).

Di chuyển các tệp từ gói khác (bạn muốn đổi tên) sang Gói mới. Xóa gói cũ.

Chuyển đến dự án của bạn trong trình chỉnh sửa của bạn và sử dụng phím tắt để tìm kiếm trong tất cả các tệp (trên mac là shift cmd F). Nhập tên của gói cũ của bạn. Thay đổi tất cả các tham chiếu đến tên gói mới.

Chuyển đến Android Studio, Xây dựng, Dự án sạch, Dự án xây dựng lại.

Làm xong!

Chúc mừng mã hóa :)


1

Tôi đã sử dụng gói đổi tên phản ứng gốc .

Trong terminal chạy lệnh để cài đặt:

npm install react-native-rename -g

Trong thư mục gốc của dự án React Native của bạn, hãy chạy lệnh sau:

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

0

Bạn có thể sử dụng gói đổi tên gốc phản ứng sẽ thực hiện tất cả các thay đổi cần thiết của tên gói trong

ứng dụng / mainapplication.java

AndroidManifest.xml

nhưng đảm bảo thay đổi thủ công tên gói của tất cả các tệp trong thư mục java / com. bởi vì khi tôi tạo một hoạt động màn hình giật gân, tên gói cũ không được cập nhật.

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


0

Chỉ cần sử dụng công cụ tìm kiếm và thay thế IDE của tôi đã thực hiện thủ thuật này.


0

Sau khi chạy này:

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

Đảm bảo cũng goto Build.gradlebên dưới android/app/... và đổi tên Id ứng dụng như dưới đây:

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

-3

Chuyển đến tệp android / app / src / main / AndroidManifest.xml -

Cập nhật:

attr android: nhãn của ứng dụng Element là:

Giá trị cũ - android: nhãn = "@ chuỗi / app_name"

Giá trị mới - android: nhãn = "(chuỗi bạn muốn đặt)"

attr android: nhãn của hoạt động Element như:

Giá trị cũ - android: nhãn = "@ chuỗi / app_name"

Giá trị mới - android: nhãn = "(chuỗi bạn muốn đặt)"

Làm việc cho tôi, hy vọng nó sẽ giúp.


2
Tôi thực sự không nghĩ rằng câu trả lời này nên bị đánh giá thấp như nó đã được. Tuy nhiên, câu trả lời này này không giải quyết những gì được hỏi trong câu hỏi - làm thế nào để thay đổi tên gói . Tuy nhiên, nó trả lời câu hỏi "làm thế nào để thay đổi tiêu đề của ứng dụng xuất hiện trong trình khởi chạy". Nó có phải là một câu trả lời có liên quan? Không hẳn vậy. Nó có chứa thông tin hữu ích? Đúng. Do đó, tôi khuyên bạn nên tìm một câu hỏi hỏi về tiêu đề launcher và đăng giải pháp của bạn ở đó thay vì ở đây.
Dev-iL
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.