React Native에서 Android의 패키지 이름 변경
사용했습니다.react-native init MyApp
새로운 리액트 네이티브 앱을 초기화합니다.은 다른 에서도 안드로이드 은와께드다어를다어seg를h은e와dsd .com.myapp
.
이름을 과 같이입니까?com.mycompany.myapp
?
에서 .AndroidManifest.xml
하지만 다른 오류들이 생겼기 때문에 그런 방법은 아닌 것 같습니다.
감 잡히는 게 없어요?
프로젝트의 하위 폴더 이름을 "android/app/src/main/java/MY/APP/OLD_ID/"에서 "android/app/src/main/java/MY/APP/NEW_ID/"로 변경했습니다.
그런 다음 기존 패키지 ID와 새 패키지 ID를 수동으로 전환했습니다.
in: Android/app/src/main/java/MY/APP/NEW_ID/MainActivity.java:
package MY.APP.NEW_ID;
Android/app/src/메인/자바/MY/APP/NEW_ID/메인 애플리케이션에서.java:
package MY.APP.NEW_ID;
Android/app/src/main/Android Manifest.xml에서:
package="MY.APP.NEW_ID"
Android/app/build.gradle에서:
applicationId "MY.APP.NEW_ID"
안드로이드/앱/B에서UCK:
android_build_config(
package="MY.APP.NEW_ID"
)
android_resource(
package="MY.APP.NEW_ID"
)
끝에 있는 Gradle' 클리닝(/android 폴더):
./gradlew clean
반응 네이티브 이름*npm 패키지를 사용합니다.다음을 통해 설치
npm install react-native-rename -g
그런 다음 React Native 프로젝트의 루트에서 다음을 실행합니다.
react-native-rename "MyApp" -b com.mycompany.myapp
패키지 이름을 다음에서 변경하려면 다음과 같이 하십시오.com.myapp
대상:com.mycompany.myapp
를 들어 (예를 들어어,
- 리액트 앱의 iOS 앱은 xcode - under general을 사용합니다.
- 안드로이드 앱의 경우 모듈 레벨에서 build.gradle을 엽니다.에람는람en에 있는 것.
android/app
폴더.당신은 발견할 것입니다.
// ...
defaultConfig {
applicationId com.myapp
// ...
}
// ...
합니다를 .com.myapp
필요한 건 뭐든 다 해요
도움이 되길 바랍니다.
단순히 react-limit-limit 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
이름을 이두을 해주고 패키지 이름을 변경하기 전에 이 두 파일에서 백업을 해주고 패키지 이름을 변경한 후에는 원래 위치에 다시 놓습니다.이 해결책은 나에게 효과가 있습니다.
추가 정보: 반응-반응-반응-반응기-반응기
반응 0.64 | 2021 NO EXPO
원래 앱 이름은 다음과 같습니다.com.myApp
앱 이름: ' 이 이름: 'com.newname.m.yApp'
android\app\src\main\AndroidManifest.xml
xml 특성 이름 변경: 'package="com.newname.myApp"
android\app\src\main\java\com\[yourAppName]\MainActivity.java
의 첫 줄 package com.myApp;
.package com.newname.myApp;
android\app\src\main\java\com\[yourAppName]\MainApplication.java
줄을 으로 바꿉니다.package com.newname.myApp;
ㅇprivate static void initializeFlipper
이 행의 이름을 바꿉니다.
Class<?> aClass = Class.forName("com.myApp.ReactNativeFlipper");
로.
Class<?> aClass = Class.forName("com.newname.myApp.ReactNativeFlipper");
android\app\build.gradle
defaultConfig
이름을 바꾸다applicationId
"com. 새 이름, myApp"으로 이동합니다.
명령줄에서 실행:
$ npx react-native start $ npx react-native run-android
Android 스튜디오로 이동
패키지를 마우스 오른쪽 단추로 클릭합니다(com일 가능성이 높습니다)-> 굴절기 -> 이름 바꾸기 -> 굴절기를 실행하십시오 대화 상자에서 새 패키지 이름 입력 -> 굴절기
패키지 이름이 어디에서나 변경됩니다.
Code에서 Code 를 를 누릅니다.Ctrl + Shift + F
이전 패키지 이름을 '찾기'에 입력하고 새 패키지를 '교체'에 입력합니다.그런 다음 '모든 항목 바꾸기'를 누릅니다.
실용적인 방법은 절대 아닙니다.하지만, 저에겐 성공했어요.
Android Studio를 사용하는 경우-
하는 com.myapp
com.mycompany.myapp
android/app/src/main/java
모든 클래스 복사 위치
com.myapp
com.mycompany.myapp
studio GUI Android오 GUI안드로이드 스튜디오에서는 복사된 모든 클래스에 적합한 패키지 이름을 지정할 것입니다.일부 사용자 지정 모듈이 있고 모든 .java 파일을 수동으로 교체하지 않으려는 경우에 유용합니다.
업데이트
android/app/src/main/AndroidManifest.xml
그리고.android/app/build.gradle
((바꾸기com.myapp
com.mycompany.myapp
프로젝트 동기화(그레이들 빌드)
는 지정한 : 의 한 을 으로 는 가 합니다 를 합니다 를 는 으로 가 :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/
이 를 합니다.VSCode
그리고.Windows
.
누르기 1. Control + Shift + F
.
당신의 2를 . Package Name
그리고.Replace All
너의과를 new Package Name
.
형을
"cd android"
형을
"./gradlew clean"
저는 @Cherniv의 답변에 기반한 해결책이 있습니다. (저는 macOS에서 작동합니다.)두 가지 차이점:자바 폴더에 같은 작업을 수행하는 메인2Activity.java가 있고, 반응 네이티브 패키지가 자동으로 수행하는 것 같기 때문에 굳이 ./gradlew clean을 호출하지 않습니다.
어쨌든, 제 솔루션은 체르니브가 하는 일을 수행합니다. 한 세트의 코드를 사용하여 여러 앱을 구축하고 있고 npm 스크립트를 실행할 때마다 패키지 이름을 쉽게 변경할 수 있기를 원하기 때문에 이를 위한 bash shell 스크립트를 만든 것을 제외하고는 말입니다.
여기 제가 사용한 bash 스크립트가 있습니다.사용할 packageName을(를) 수정하고 원하는 항목을 추가해야 합니다.기본은 여기 있습니다..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
면책 사항: 기본 응용 프로그램을 편집해야 합니다.java의 코멘트는 java 파일의 맨 아래쪽에 먼저 있습니다.댓글에 '패키지'라는 단어가 적혀있습니다.스크립트의 작동 방식 때문에 '패키지'라는 단어가 들어간 행을 모두 사용하여 대체합니다.이 때문에 이 스크립트는 다른 곳에서 사용되는 동일한 단어가 있을 수 있으므로 나중에 증명되지 않을 수 있습니다.
두 번째 면책 사항: 처음 세 개의 sed 명령은 javaFiles라는 디렉토리에서 java파일을 편집합니다.나중에 새로운 패키지를 추가할 수도 있기 때문에 여기서 복사되는 자바 파일을 한 세트 갖고 싶어서 이 디렉토리를 직접 만들었습니다.여러분도 아마 같은 일을 하고 싶어할 것입니다.따라서 자바 폴더에서 모든 파일을 복사하고(실제 자바 파일을 찾기 위해 하위 폴더를 살펴) javaFiles라는 새로운 폴더에 넣습니다.
세 번째 면책 사항:스크립트 상단과 하단(com)의 경로와 일치하도록 packageName 변수를 편집해야 합니다.나의 웹사이트.myAppName tocom/MyWebsite/MyAppName)
패키지 이름을 변경하려면 프로젝트에서 4개의 파일을 편집해야 합니다.
1. android/app/src/main/java/com/reactNativeSampleApp/MainActivity.java
2. android/app/src/main/java/com/reactNativeSampleApp/MainApplication.java
3. android/app/src/main/AndroidManifest.xml
4. android/app/build.gradle
처음 2개의 파일은 아래와 같은 패키지 이름을 가지고 있습니다.
package com.WHATEVER_YOUR_PACKAGE_NAME_IS;
원하는 패키지 이름으로 변경합니다.
package com.YOUR_DESIRED_PACKAGE_NAME;
패키지 이름도 2개의 다른 파일로 편집해야 합니다.
android/app/build.gradle
android/app/src/main/AndroidManifest.xml
프로젝트에 Google-services.json 파일이 있는 경우 해당 파일에서 패키지 이름도 변경해야 합니다.
이 후에는 프로젝트를 깨끗이 청소해야 합니다./gradlew cleaning.
여기 안 좋은 대답들이 많아요.
패키지 이름을 변경하려면 build.gradle in app로 이동합니다.
defaultConfig {
applicationId "your.new.package.name" //change this line
그런 다음 명령줄에서 앱을 실행할 때 새 패키지 이름을 arg로 전달합니다.
react-native run-android --appId your.new.package.name
전체 프로젝트의 이름을 바꿀 필요가 없습니다.
Android Studio로 이동하여 앱을 열고 java를 마우스 오른쪽 단추로 클릭한 다음 새로 만들기를 선택하고 패키지를 선택합니다.
원하는 이름(예: com.something)을 지정합니다.
이름을 바꿀 다른 패키지의 파일을 새 패키지로 이동합니다.이전 패키지를 삭제합니다.
편집기에서 프로젝트로 이동하여 모든 파일에서 바로 가기를 사용하여 검색합니다(Mac의 경우 shift cmd F).이전 패키지의 이름을 입력합니다.새 패키지 이름에 대한 모든 참조를 변경합니다.
Android Studio, Build, Clean Project, Rebuild Project로 이동합니다.
알았어!
해피코딩 :)
실행 후:
react-native-rename "MyApp" -b com.mycompany.myapp
에도 꼭 .Build.gradle
android/app/...
그리고 아래와 같이 Application Id의 이름을 바꿉니다.
defaultConfig {
applicationId:com.appname.xxx
........
}
단계별로 절차를 제공하겠습니다.
우선 패키지 이름을 변경해야 하는 이유를 이해해야 합니다.주로 앱을 고유하게 식별하기 위한 것이죠?그래서 리액트 네이티브는 iOS와 안드로이드 모두에서 실행되는 앱을 개발하기 위한 크로스 플랫폼입니다.그래서 제가 추천한 것은 두 플랫폼에서 동일한 식별자가 필요하다는 것입니다.Android Package Name이 당신의 앱과 iOS의 번들 ID의 고유 식별자인 경우.
단계:
- 먼저 모든 편집기/스튜디오(예: xcode Android studio vscode)를 닫은 후 명령을 실행하여 터미널에 패키지 "react-native-rename"을 설치합니다(프로젝트 폴더 복사본을 백업을 위해 다른 폴더에 보관).
npm 설치 react-limit-limit-g
- 패키지를 성공적으로 설치한 후 터미널에서 프로젝트 폴더를 열고 아래 명령을 누릅니다. 여기서 "당신의 앱 이름 두 개의 따옴표 안에"는 앱 이름이고 <큰/큰따옴표 없는 당신의 패키지 이름>은 패키지/번들 이름/id로 바꿉니다.
react-native-rename "< 당신의 앱 이름 큰따옴표 안에 >" -b <큰따옴표 없는 당신의 패키지 이름>
예: 반응-네이티브-이름 "적도 테스트 앱" -bcom.vaibhavmojidra.적도 테스트 앱
참고 패키지/묶음 이름/id가 모두 작은 경우인지 확인합니다.
이 작업은 아직 완료되지 않았지만 ios 프로젝트에서 수동으로 수행해야 하는 하나의 inios 프로젝트를 제외한 모든 파일의 번들/패키지 이름이 변경됩니다. xcode>open project or file> project folder/ios/project name에서 파일 선택하기.xcode proj 및 클릭 열기
프로젝트명을 클릭합니다.프로젝트 탐색기의 첫 번째 파일인 xcodeproj와 번들 식별자 필드에 패키지 이름/번들 ID를 다음과 같이 입력합니다.
- 그 후 터미널에서 실행합니다.
시디오스
- 그다음달리기
포드 설치
- 그다음달리기
cd..
이제 iOS의 모든 변경을 완료했습니다. 마지막 단계는 Android Studio >를 여는 것입니다.기존 프로젝트 열기 > 프로젝트 폴더/안드로이드 폴더 선택 > 열기 클릭
모든 프로세스를 로드하고 완료한 다음 빌드 메뉴에서 "프로젝트 정리"를 클릭하고 파일 메뉴 > 프로젝트 닫기
모든 편집기를 닫고 이제 시작 서버가 추가 플래그를 추가하는 동안 ios와 안드로이드에서 프로젝트를 실행하는 명령을 시도할 수 있습니다. --reset-cache:
npm start --slot-slot
맛있게 드세요, 이제 효과가 있을 겁니다.
다음 장소에서 수동으로 패키지 이름을 업데이트하여 수정하였습니다.
1) app.json | ./
2) index.js | ./
3) package.json | ./
4) settings.gradle | ./android/
5) BUCK | ./android/app/
6) build.gradle | ./android/app/
7) AndroidManifest.xml | ./android/app/src/main/
8) MainActivity.java | ./android/app/src/main/java/**
9) MainApplication.java | ./android/app/src/main/java/**
10)strings.xml | ./android/app/src/main/res/values
11)ReactNativeFlipper.java| ./android/app/src/debug/java/com/<package-name>/
반응 네이티브 이름*npm 패키지를 사용합니다.다음을 통해 설치
npm install react-native-rename -g
그런 다음 React Native 프로젝트의 루트에서 다음을 실행합니다.
react-native-rename "MyApp" -b com.mycompany.myapp
매우 간단한 방법:
cd /your/project/dir
다음 명령을 실행합니다.
grep -rl "com.your.app" . | xargs sed -i 's/com.your.app/com.yournew.newapp/g'
폴더 이름 바꾸기
android/app/src/main/java/com/your/app
로 바꾸다
android/app/src/main/java/com/yournew/newapp
Android studio에서 패키지 이름을 곳곳에서 바꾼 후파일 -> 캐시를 무효화하면/다시 시작하면 이 유형의 오류가 수정될 수 있습니다.
이것은 나에게 효과가 있었습니다.
이 정보는 당신에게 도움이 될 수 있으니 잘 들어보세요.
After updating package name and changing files, don't forget to change in
package.json and app.json file at the root directory of your react native project
그렇지 않으면 아래와 같은 오류가 발생합니다.
Invariant Violation: "Your new package name" has not been registered
이반 체르니크의 대답은 다음과 같습니다.react-native
0.67 이하:react-native
이반 체르니크가 언급한 계단을 내려가게 되면 새 건축물과 함께 0.68 이상.
위해서android
당신은 가야합니다.app
=>src
=>main
=>jni
폴더
인MainApplicationTurboModuleManagerDelegate.h
선 이하로 바꿈
static constexpr auto kJavaDescriptor =
"Lcom/yournewpackagename/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
인MainComponentsRegistry.h
constexpr static auto kJavaDescriptor =
"Lcom/yournewpackagename/newarchitecture/components/MainComponentsRegistry;";
오늘 배운지 얼마 안 되었는데 다른 사람들을 돕기 위해 이 답을 추가합니다.당신은 단지 당신이 그들을namespace
에게app/build.gradle
옛 이름을 나타내는 다음과 같습니다.
defaultConfig {
applicationId "com.mycompany.myapp"
namespace "com.myapp"
}
그러면 bash 스크립트를 사용할 수 있습니다.applicationId
다음과 같은 것으로.
function sedi {
if [ "$(uname)" == "Linux" ]; then
\sed -i "$@"
else
\sed -i "" "$@"
fi
}
bundle_name=com.mycompany.myapp
sedi -E "s/applicationId \"[-0-9a-zA-Z._]*\"/applicationId \"${bundle_name}\"/" android/app/build.gradle
React Native@0.70.x 패키지 이름을 다음에서 변경하려고 했습니다.com.x
로.com.y.z
저는 이 고통스러운 과정을 다음과 같이 해냈습니다.
- 바꾸다
displayName
인에app.json
로.z
.
{
"name": "<THIS_SHOULD_STAY_SAME>",
"displayName": "<Z>"
}
- 문자열 내용 변경
app_name
인에strings.xml
<resources>
...
<string name="app_name"><Z></string>
...
</resources>
- 반응 네이티브 프로젝트를 통해 다음을 검색합니다.
com.x
모든합니다를 .com.x
와 함께com.y.z
중요:외부 서비스를 이용하는 경우와 파일을 생성하여 아래에 두는 경우
/android
사용 중인 서비스가 계속 작동하는지 확인해야 할 수도 있습니다. 이름새지을여새성을는이다r다는ie(augedwog새)eew지을성여새com.y.z
그리고 아래에 설명된 단계를 마친 후에 그것을 놓습니다.
- 폴더 구조를 다음으로 업데이트:
old: .../android/app/src/main/java/com/x
new: .../android/app/src/main/java/com/y/z
의 아래의 모든 파일
.../android/app/src/main/java/com/x
.../android/app/src/main/java/com/y/z
.정리하다.
$ ./gradlew clean
- 빌드.
$ react-native run-android
저 같은 경우에는.
저는 소포를 바꿔야 합니다.com.yourProjectName
boonagency.connachttribune
그럼 그냥 그렇게 하죠:-
yourApp/android/app/build.gradle
defaultConfig { applicationId "com.connachtapp" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0"
로.
defaultConfig {
applicationId "boonagency.connachttribune"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
yourProjectName/android/app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.connachtapp">
로.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="boonagency.connachttribune">
폴더 이름 변경
yourProjectName/android/app/src/main/java/com/connachtapp
로.
yourProjectName/android/app/src/main/java/boonagency/connachtapp
yourProjectName/android/app/src/main/java/boonagency/connachtapp/MainApplication.java
package boonagency.connachttribune; // change here ... import boonagency.connachttribune.newarchitecture.MainApplicationReactNativeHost; // change here ... Class<?> aClass = Class.forName("boonagency.connachttribune.ReactNativeFlipper"); // change here
yourProjectName/android/app/src/main/java/boonagency/connachtapp/MainActivity.java
package boonagency.connachttribune; // change here
yourProjectName/android/app/src/main/java/boonagency/connachtapp/newarchitecture/MainApplicationReactNativeHost.java
yourProjectName/android/app/src/main/java/boonagency/connachtapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
package boonagency.connachttribune.newarchitecture.modules; // change here
yourProjectName/android/app/src/main/java/boonagency/connachtapp/newarchitecture/components/MainComponentsRegistry.java
package boonagency.connachttribune.newarchitecture.components; // change here
마지막 저스트 런
cd android && ./gradlew clean && cd .. && npm run android
Android/app/src/main/Android Manifest.xml 파일로 이동 -
업데이트:
특성 안드로이드: 요소 응용 프로그램의 레이블:
이전 값 - 안드로이드:label="@string/app_name"
새 가치 - 안드로이드:label=(넣고 싶은 문자열)"
그리고.
특성 안드로이드: 요소 활동의 레이블은 다음과 같습니다.
이전 값 - 안드로이드:label="@string/app_name"
새 가치 - 안드로이드:label=(넣고 싶은 문자열)"
저를 위해 일했습니다. 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/37389905/change-package-name-for-android-in-react-native
'programing' 카테고리의 다른 글
특정 RUN 명령에 대해 캐시 사용 안 함 (0) | 2023.09.15 |
---|---|
"iff" 대 "if other if"의 성능 차이 (0) | 2023.09.15 |
SQL에서 DateTime 필드의 시간 부분 (0) | 2023.09.15 |
이 Oracle 쿼리를 MariaDB로 올바르게 변환하는 방법은 무엇입니까? (0) | 2023.09.10 |
쿼리 "not equal"이(가) 작동하지 않습니다. (0) | 2023.09.10 |