반응형
플러터에서 GoogleMap을 사용하려고
GoogleMap API Key를 local.properties에 넣고 build.gradle에서 값을 가져와서 androidManifest에서 사용할 수 있도록
다음과 같은 방법으로 build.gradle에서 값을 가져왔습니다.
manifestPlaceholders = [
'googleMapsApiKey': localProperties['google_maps_api_key']
]
그런데 다음과 같은 에러가 발생하네요?
Attribute application@name at AndroidManifest.xml:5:9-42 requires a placeholder substitution but no value for <applicationName> is provided.
왜 위와 같은 에러가 발생했고
어떻게 해결했는지 알려드리겠습니다.
참고로 제가 테스트에서 사용한 환경은 다음과 같습니다.
OS: Winsdows
Flutter Version: 3.10.3
Dart: 3.0.3
에러가 발생한 원인은 무엇일까?
분명히 local.properties에 넣은 값은 다음과 같은 이름을 가진 값인데
google.maps.apiKey
왜 아무 상관없는 androidManifest에 있는 applicationName값을 읽을 수 없게 된건지 이해할 수 없었습니다.
값을 읽을 수 없게 됐다는 것은 분명히 뭔가가 덮어씌여진 것이라고 생각했습니다.
그렇다면 값을 가져오는 단계인 build.gradle의 이 코드에 문제가 있다는 의미라고 생각했습니다.
manifestPlaceholders = [
'googleMapsApiKey': localProperties['google_maps_api_key']
]
해결 방법은 무엇일까?
local.properties에 있는 google_maps_api_key 값만 가져와서 넣어보면 어떻까?를 생각해봤습니다.
그래서 나온 결론이
build.gradle에서 다음과 같이 정의하는 것이었습니다.
// 최상위에 정의
def googleMapsApiKey = localProperties.getProperty('google.maps.apiKey')
android {
...
defaultConfig {
.....
// 위에서 가져온 값을 대입
manifestPlaceholders += [googleMapsApiKey: googleMapsApiKey]
}
...
}
그리고 androidManifest에서 다음과 같이 사용할 수 있습니다.
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${googleMapsApiKey}" />
반응형
'플러터(flutter)' 카테고리의 다른 글
flutter에서 화면 회전 하지 못하게 막는 방법 (0) | 2023.08.29 |
---|---|
flutter_dotenv을 사용해서 local에 API Key 보관하기 (0) | 2023.08.11 |
플러터(flutter) - 온보딩 화면 만들기 (0) | 2023.06.03 |
Flutter 기초 - SharedPreference 사용 방법 (0) | 2023.05.28 |
플러터 기초 - PageRouteBuilder를 사용해서 화면 전환하기 (0) | 2023.05.14 |
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글