소개
Android 기기에서 Google API 또는 Firebase 서비스를 사용 설정하는 과정에서
google-services
플러그인을 추가해야 할 수도 있는
build.gradle
파일:
dependencies {
classpath 'com.google.gms:google-services:4.4.2'
// ...
}
google-services
플러그인에는 두 가지 주요 기능이 있습니다.
google-services.json
파일 처리 및 Android 생성 애플리케이션의 실행 리소스에서 사용할 수 있는 있습니다. 자세한 내용은 JSON 파일 추가를 참조하세요.사용 중인 서비스에 필요한 기본 라이브러리의 종속 항목 추가 사용 설정되어 있습니다. 이 단계에서는 Google 서비스 Gradle을 적용해야 합니다.
app/build.gradle
파일의 플러그인입니다. 예를 들면 다음과 같습니다.
<ph type="x-smartling-placeholder">apply plugin: 'com.google.gms.google-services'
</ph>다음 명령어를 실행하여 이 단계의 결과를 확인할 수 있습니다.
./gradlew :app:dependencies
JSON 파일 추가
google-services.json
파일은 일반적으로
app/
디렉터리 (Android 스튜디오 앱 모듈의 루트) 따라서
플러그인이 빌드 유형과 제품 버전을 지원하는 버전 2.2.0
확인할 수 있습니다 다음 디렉터리 구조는 모두 유효합니다.
// dogfood and release are build types. app/ google-services.json src/dogfood/google-services.json src/release/google-services.json ...
참고: release 디렉터리에 google-services.json 파일을 제공하면 프로덕션 APK용으로 별도의 Firebase 프로젝트를 유지해야 합니다.
제품 버전을 사용 중일 때는 더 복잡한 디렉터리 구조가 사용할 수도 있습니다.
// free and paid are product flavors. app/ google-services.json src/dogfood/paid/google-services.json src/release/free/google-services.json ...
JSON 파일 처리
google-services.json
파일의 기본 구조는 다음과 같습니다.
{ "project_info": {...}, "client": [...], }
project_info
객체에는
프로젝트에 포함되어 있으며 client
배열의 각 멤버는
프로젝트에 추가한 클라이언트 (Android 앱) 정보
Android 앱의 JSON 파일을 처리할 때 플러그인은
패키지 이름과 일치하는 client
객체 (현재 빌드의 경우)
유형)로 변환할 수 있습니다.
client
배열의 각 구성원에 대해 다음을 실행합니다. <ph type="x-smartling-placeholder">- </ph>
client_info/android_client_info/package_name
의 값을 확인합니다.- 패키지 이름이 이 값과 일치하면 구성원 객체를 반환합니다.
client
의 구성원 중 패키지 이름과 일치하는 구성원이 없으면 예외가 발생합니다.
이 문서의 나머지 부분에서는 {YOUR_CLIENT}
를 사용하여
위 절차에 따라 결정된 client
배열의 멤버입니다.
JSON 처리의 주요 결과는 두 개의 XML 파일을 생성하는 것입니다. Java 코드에서 Android 리소스로 참조할 수 있습니다. 다음은 다음과 같습니다.
app/build/generated/res/google-services/{build_type}/values/values.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <! -- Present in all applications --> <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string> <! -- Present in applications with the appropriate services configured --> <string name="gcm_defaultSenderId" translatable="false">1035469437089</string> <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string> <string name="ga_trackingId" translatable="false">UA-65557217-3</string> <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string> <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string> <string name="project_id" translatable="false">mydemoapp</string> </resources>
app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="ga_trackingId" translatable="false">UA-65557218-3</string> </resources>
XML 파일의 모든 값은 google-services.json
에 있습니다.
파일을 다운로드할 수 있습니다. Android 프로젝트에 구성이 있는 경우
google-services
플러그인 사용을 차단하는 경우
다음 값을 사용하여 XML 파일을 수동으로 안전하게 다시 생성할 수 있습니다.
google_app_id:
{YOUR_CLIENT}/client_info/mobilesdk_app_id
gcm_defaultSenderId:
project_info/project_number
default_web_client_id:
{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)
ga_trackingId:
{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_id
firebase_database_url:
project_info/firebase_url
google_api_key:
{YOUR_CLIENT}/api_key/current_key
google_crash_reporting_api_key:
{YOUR_CLIENT}/api_key/current_key
project_id:
project_info/project_id
문제 해결
Q: 빌드할 때 다음 오류 메시지가 표시됩니다. 'Filestore 모듈 루트 폴더에 google-services.json이 없습니다. Google 서비스 플러그인이 작동하지 않음' 오류 메시지가 표시됩니다. 를 통해 개인정보처리방침을 정의할 수 있습니다.
A: Firebase Console을 사용하면
google-services.json
를 다운로드합니다.
또한 대부분의 API에 대한 빠른 시작 가이드에서는
이 파일을 생성합니다.
google-services.json
파일을 다운로드한 후 복사합니다.
Android 스튜디오 프로젝트의 app/
폴더 또는
app/src/{build_type}
폴더를 선택합니다.
Q: 'R.string.gcm_defaultSenderId' 기호를 찾을 수 없습니다. 'R.xml.global_tracker' 등
A: build.gradle
파일의 패키지 이름이
google-services.json
생성 시 입력한 패키지 이름
파일에서 참조됩니다. 잘 모르겠다면 시작하기 과정을 다시 살펴보고
새 json 파일이 생성됩니다