어느 순간 잘 뜨던 구글맵이 뜨지 않아 Logcat을 보았다.
Authorization failure과 Ensure that the "Google Maps Android API v2" is enabled.
인증키 오류의 Log들이 찍힌 걸 확인
관련 검색을 해보면 Api가 활성화되어있나 확인해 보고 제한사항을 줄 때 패키지 이름을 제대로 주라는 말들이 대부분이다.
하지만 API도 다 활성화되어있고 제한사항의 패키지 이름과 Api 제한사항도 다 맞춰서 해놓았는데도 같은 오류가 반복되었다..
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${GOOGLE_MAP_API_KEY}"/>
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def google_map_api_key = properties.getProperty('GOOGLE_MAP_API_KEY')
android {
compileSdk 33
defaultConfig {
applicationId "패키지 이름"
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [GoogleMapApiKey:google_map_api_key] //문제의 코드
찾아본 결과 Manifest에서 meta data에 구글맵 Key vlaue 값을 local.properties에서 불러와 manifestPlaceholders에 지정해 주어 사용해주고 있었는데 사용법에 오류가 있었는지
이것을 하드코딩으로 바꾸고 clean build와 동시에 설치된 앱까지 제거하고 실행시켜 보니 정상적으로 작동하였다.
하드코딩 Api Key값을 넣고 빌드하고 정상실행해 본 후 다시 오류가 있던 manifestPlaceholders로 지정해 준 값을 넣고 clean build를 하지 않고 이전에 설치된 app을 지우지 않고 실행해 보면 또 정상 작동을 한다.
하지만 clean build를 하고 rebuild 후 이전 설치된 app까지 지우고 실행하면 다시 같은 오류가 발생한다.
Key를 바꾸고 Clean Build와 앱 삭제를 계속해보진 않으니까 오류가 안 떠 알 수가 없었다.
해결
manifestPlaceholders의 사용법이 잘못 사용한건지 제 기능을 못하는 걸로 유추하고 타 개발자에게도 물어보니 같은 상황이라고 한다.
해결 방법으로 GoogleMap Platform에 secrets-gradle-plugin을 사용하여 해결
build.gradle (:project) secrets-gradle-plugin 추가
buildscript {
...
dependencies {
...
classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1"
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle (:app)
plugins {
...
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}
Manifest
local.properties의 GoogleApiKey 이름을 바로 호출해서 지정
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${GOOGLE_MAP_API_KEY}"/>
manifestPlaceholders를 사용하시고 같은 상황이 있는 분들에게 도움이 되기를 바랍니다.
'Android > Debugging' 카테고리의 다른 글
Android Studio New LogCat (0) | 2023.02.27 |
---|---|
Android 13에 따른 compileSdkVersion , targetSdkVersion 타겟 33 구글 정책 변경 (0) | 2022.12.23 |
무선 Debugging 사용 (0) | 2022.03.22 |
Result API registerForActivityResult() / startActivityForResult() deprecated (0) | 2022.03.21 |
Exception 종류 (0) | 2022.03.10 |