반응형
해당 글에서는 React-native 환경에서 빌드 시 발생하는 오류에 대해 알아봅니다.
1) 문제점
💡 문제점
- Cannot locate tasks that match 'app:installDebug' as task 'installDebug' is ambiguous in project ':app'. Candidates are: 'installDevDebug', 'installDevDebugAndroidTest', 'installPrdDebug', 'installPrdDebugAndroidTest'.
- 이와 같은 오류가 발생하였습니다. 해당 문제는 fiebase 설정 중 google-services.json 파일을 개발 환경과 운영 환경을 각각 분리할 때에 적용하는 flavorDimensions 오류였습니다.
FAILURE: Build failed with an exception.
* What went wrong:
Cannot locate tasks that match 'app:installDebug' as task 'installDebug' is ambiguous in project ':app'. Candidates are: 'installDevDebug', 'installDevDebugAndroidTest', 'installPrdDebug', 'installPrdDebugAndroidTest'.
* Try:
> Run gradlew tasks to get a list of available tasks.
> For more on name expansion, please refer to <https://docs.gradle.org/8.6/userguide/command_line_interface.html#sec:name_abbreviation> in the Gradle documentation.
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at <https://help.gradle.org>.
BUILD FAILED in 4s
error Failed to install the app. Command failed with exit code 1: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 FAILURE: Build failed with an exception. * What went wrong:
Cannot locate tasks that match 'app:installDebug' as task 'installDebug' is ambiguous in project ':app'. Candidates are: 'installDevDebug', 'installDevDebugAndroidTest', 'installPrdDebug', 'installPrdDebugAndroidTest'. * Try:
> Run gradlew tasks to get a list of available tasks.
> For more on name expansion, please refer to <https://docs.gradle.org/8.6/userguide/command_line_interface.html#sec:name_abbreviation> in the Gradle documentation.
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at <https://help.gradle.org>. BUILD FAILED in 4s.
info Run CLI with --verbose flag for more details.
error Command failed with exit code 1.
info Visit <https://yarnpkg.com/en/docs/cli/run> for documentation about this command.
1. 적용사항 확인 : app/build.gradle
💡 적용사항 확인
- 아래와 같이 개발과 운영 환경에 따라서, 분리를 하는 작업을 수행하였습니다.
- 개발의 경우는 dev 디렉터리에 있는 dev/google-services.json 파일을 바라보게 하며, 운영의 경우는 prd 디렉터리에 있는 prd/google-services.json 파일을 바라보도록 구성하였습니다.
android {
// firebase 개발/운영환경 변경
flavorDimensions "environment"
productFlavors {
dev {
dimension "environment"
}
prd {
dimension "environment"
}
}
}
반응형
2) 해결방법
💡 해결방법
- 아래에서 나와있는 문제점과 같이 말 그대로 로컬에서 빌드를 수행하려고 하는데 빌드할 때 바라보고 있는 파일이 너무 많다는 문제점을 보여주고 있습니다.
- 그렇기에 실행할 때 빌드 파일을 명확하게 지정을 해주면 됩니다.
1. 해결방안 접근 -1
💡 해결방안 접근
- 안드로이드 폴더에 접근하여 ./gradlew tasks 명령어를 입력하면 아래와 같이 빌드 시 수행되는 다양한 파일들이 많이 있습니다. - 이에 대해 충돌이 나는 문제로 확인이 되었습니다.
# android 폴더를 접근합니다.
$ cd android
# gradle에서 수행하는 태스크들을 확인해봅니다.
$ ./gradlew tasks
2. 해결방안 접근 -2
💡 해결방안 접근 -2
- 위에 글에서 확인할 수 있듯이 productFlavors로 지정하여서 dev인 경우는 installDevDebug를 수행하며, prd인 경우는 installPrdDebug를 수행하는 것을 확인하였습니다.
- 이에 따라서 package.json 파일 내에서 해당 파일들이 각각 수행되도록 지정을 합니다.
"scripts": {
"android": "react-native run-android",
"start:dev": "react-native run-android --mode=devDebug",
"start:prd": "react-native run-android --mode=prdDebug",
}
3) 해결 완료
💡 해결 완료
- 아래와 같이 잘 실행이 됨을 확인하였습니다.
4) 그래도 수행이 안된다면..
💡 그래도 수행이 안된다면..
- 앱을 삭제하고 캐시를 지운 뒤 실행하시면 수행이 잘 되는것을 확인할 수 있습니다.
오늘도 감사합니다. 😀
반응형