@Cherniv의 답변을 기반으로 한 솔루션이 있습니다 (macOS에서 작동합니다). 두 가지 차이점 : java 폴더에 Main2Activity.java가 있고 동일한 작업을 수행하고 반응 네이티브 패키지가 자동으로 수행하는 것처럼 보이기 때문에 ./gradlew clean 호출을 귀찮게하지 않습니다.
어쨌든 내 솔루션은 Cherniv의 기능을 수행합니다. 단일 코드 세트를 사용하여 여러 응용 프로그램을 빌드하고 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'라는 단어가 있습니다. 스크립트의 작동 방식으로 인해 'package'라는 단어가 포함 된 줄을 대신 사용합니다. 이 때문에이 단어는 다른 곳에서 사용 된 동일한 단어가있을 수 있기 때문에 나중에 증명되지 않을 수 있습니다.
두 번째 고지 사항 : 처음 3 개의 sed 명령은 javaFiles라는 디렉토리에서 Java 파일을 편집합니다. 나중에 새 패키지를 추가 할 수 있으므로 거기에서 복사 된 하나의 Java 파일 세트를 원하기 때문에이 디렉토리를 직접 만들었습니다. 아마 같은 일을하고 싶을 것입니다. 따라서 java 폴더에서 모든 파일을 복사하고 (하위 폴더를 통해 실제 java 파일을 찾으십시오) javaFiles라는 새 폴더에 넣으십시오.
세 번째 고지 사항 : packageName 변수를 편집하여 스크립트 상단과 하단에있는 경로 (com.MyWebsite.MyAppName to com / MyWebsite / MyAppName)와 일치하도록 편집해야합니다.