안드로이드 프로젝트에서 설정 값들은 대부분 values/strings.xml에 등록해 놓는데 strings에 입력하지 않고 별도의 파일에 입력을 하지만 strings에 있는것 처럼 사용할 수 있는 방법입니다.





Properties() 함수를 이용하면 되는데 사용방법은

secure.properties 파일을 프로젝트 내 임의의 위치에 생성하고 내용에

 

MAPS_API_KEY=AIxxxxxxXXXXXXxxxxxxxXXXXXXXxxxxxxXxN_K8

 

이런 식으로 설정 값을 입력 합니다.

그리고 build.gradle(Module) 파일에 설정한 값을 읽어 올 수 있도록 Properties 함수를 추가 합니다.

 

defaultConfig {
   
applicationId
"copycoding.tistory.mylocation"
   
minSdkVersion 16
   
targetSdkVersion 29
   
versionCode 1
   
versionName "1.0"

   
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

   
// Read the API key from ./secure.properties into R.string.maps_api_key
   
def secureProps = new Properties()
   
if (file("../secure.properties").exists()) {
        file(
"../secure.properties")?.withInputStream { secureProps.load(it) }
   
}
    resValue
"string", "maps_api_key", (secureProps.getProperty("MAPS_API_KEY") ?: "")
}

 

이렇게 하면 secure.properties 파일에 설정한 값을 가져옵니다파일 명과 파일 위치는 어디에 생성 했는가에 따라 수정을 하면 됩니다.

 

 

이제 AndroidManifest.xml 에서 설정 값을 사용하는 방법 입니다.

 

<meta-data
   
android:name="com.google.android.geo.API_KEY"
   
android:value="@string/maps_api_key" />

 

그냥 strings.xml에 입력해 놓은 것 처럼 동일한 방법으로 사용이 가능 합니다.


- copy coding -


전번 글에 Firebase 웹 사이트에서 프로젝트를 생성하고 Android Studio에 연결하는 방법을 알아 보았습니다이번에는 Android Studio에서 프로젝트를 진행 하다가 Firebase를 연결 하는 방법을 알아 보려고 합니다.


firebase android firestore assistant


두가지 방법 모두 결과는 동일한데 수동으로 작업을 하느냐 자동으로 하느냐의 차이만 있습니다개인적으로는 두 가지 방법 중 좀더 쉬운 방법은 Assistant를 이용하는 방법 입니다.

먼저 안드로이드 스튜디오에서 프로젝트 하나를 생성 합니다.


firebase android firestore assistant


Empty Activity를 선택 하고 [Next] 버튼을 클릭 합니다.


firebase android firestore assistant


프로젝트 명을 적당히 적어 줍니다.


firebase android firestore assistant


Android Studio 메뉴에서 Tools > Firebase를 선택 합니다.


firebase android firestore assistant


Firebase 관련 Assistant 창이 나오고 여러가지 접속 방법들이 나오는데 그 중에 Firestore를 선택 하고 확장된 화면에서 [Read and write documents with Cloud Firestore]를 클릭해 줍니다.


firebase android firestore assistant


그러면 Assistant 팝업 창이 나오는데 Firebase에 연결하는 방법이 순서대로 기술되어 있기 때문에 순서에 맞추어 하나씩 작업을 하면 됩니다저는 여기서 2번까지만 진행 합니다.  2번 까지만 진행하면 Android ProjectFirebase의 연결이 완료 되고 바로 프로그램을 진행 할 수 있습니다.

 

 

1단계 Connect your app to Firebase

 

말 그대로 Android ProjectFirebase의 연결 작업을 진행하는 단계 입니다.

[Connect to Firebase]를 클릭 하면 Firebase 사이트 웹 브라우저 창이 뜹니다.


firebase android firestore assistant


로그인을 안했다면 로그인을 하고 연결 하려는 프로젝트를 선택 합니다아니면 프로젝트를 새로 추가해도 됩니다저는 기존 CopyCoding 프로젝트를 선택 하였습니다.


firebase android firestore assistant


Firebase project 콘솔로 넘어가면서 Android app을 생성 합니다. [연결] 버튼을 클릭해서 연결을 진행 합니다.


firebase android firestore assistant


잠시 작업이 진행 되고 Android Studio Project Firebase가 연결이 되었습니다.

다시 Android Studio로 돌아오면


firebase android firestore assistant


1단계가 Connected로 변경 되었습니다.

 

2단계 Add Cloud Firestore to your app

1단계는 Firebase를 연결한 것이고 2단계는 Firestore를 연결하는 것 입니다.

[Add Cloud Firestore to your app] 을 클릭 하면 팝업이 하나 나옵니다.


firebase android firestore assistant


Android Studio ProjectFirestore를 연결 하기 위해 gradle에 자동으로 소스를 추가 한다고 합니다.  [Accept Changes] 버튼을 클릭 합니다.


firebase android firestore assistant


2단계도 Dependencies set up correctly로 변경 되었습니다.

좌측 Project 파일에 google-services.json 파일이 추가되어 있습니다.  gradle에도 자동으로 소스를 추가했다고 하는데 확인 들어 갑니다.

 

build.gradle(Project)

 

dependencies {
   
classpath
'com.android.tools.build:gradle:3.6.3'
   
classpath 'com.google.gms:google-services:4.3.3'

   
// NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

 

 

build.gradle(Module)

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

 

dependencies {
   
implementation fileTree(
dir: 'libs', include: ['*.jar'])

    implementation
'androidx.appcompat:appcompat:1.1.0'
   
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
   
implementation 'com.google.firebase:firebase-firestore:21.4.3'
   
testImplementation 'junit:junit:4.12'
   
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
   
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

  

필요한 설정들이 모두 자동으로 추가 되었고 Android Studio FIrebase가 연결이 되었습니다이제 Firestore Database를 사용하면 됩니다.

 

- copy coding -


Android appFirebase를 연결하는 방법 까지만 테스트 해보려고 합니다



먼저 android studio에서 Empty Activity로 앱을 하나 생성 합니다.


firebase android app


Project Name보다는 package name을 잘 기억해 둬야 됩니다.

com.copycoding.firebase 이렇게 미리 복사 해놓고 [Finish] 버튼을 눌러 작업을 진행 합니다.

 

이제는 웹에서 Firebase에 로그인을 합니다.


firebase android app


연결 하려는 프로젝트를 선택 하고 console로 이동 합니다.


firebase android app


[+앱 추가]를 선택 해서 확장 합니다.


firebase android app


추가할 플랫폼이 확장 되는데 여기에서 안드로이드 아이콘을 클릭 합니다.


firebase android app


Android studio에서 앱을 생성할 때 복사해둔 Package name을 적어주고 닉네입도 입력 합니다.  [앱 등록] 버튼을 클릭해서 2단계로 넘어 갑니다.


firebase android app


구성 파일 다운로드에서 [google-service.json 다운로드]를 클릭하면 파일이 하나 다운로드 되는데 앱에서 firebase에 연결하는데 사용되는 idkey 정보가 들어 있습니다.

다운받은 파일을 그림에서 처럼 android studio에 붙여넣기를 해주고 [다음] 버튼을 클릭 합니다.


firebase android app


안드로이드에 추가한 모습입니다.

 

3단계 Firebase SDK 추가에서는 Firebase를 사용하는데 필요한 내용을 gradle에 추가하는 방법을안내 합니다.


firebase android app


gradle에 이미 있는 내용도 있고 추가 해야할 내용도 있습니다. 직접 손으로 입력하는게 아니고 우측 복사 아이콘을 클릭하여 소스에 붙여넣기를 하면 됩니다.


firebase android app


2개의 gradle에 그림처럼 소스에 추가를 했다면 안드로이드 스튜디오 우측 상단에 나타나는 [Sync now]를 클릭해 줍니다.

잠시 후 안드로이드 스튜디오의 씽크가 종료되면 [다음] 버튼을 클릭 합니다.


firebase android app


4단계에서 앱과 Firebase가 연결 되었다는 내용을 볼 수 있습니다.  4단계에서 수고하셨습니다.”라는 내용이 나오지 않고 계속 맴도는 경우가 있습니다그럼 저는 안드로이드 프로젝트를 다시 만들어 샤용 합니다아직 코딩을 시작하기 전이니 가능 한 방법이죠.


- copy coding -


핸드폰에 안드로이드로 구글 지도를 표시하려고 하는데 빈 화면만 나오는 경우가 있습니다개발을 하면서 소스를 다른 컴퓨터에 복사해서 사용하는 경우 또는 google api에 패키지를 등록할 때 깜빡 하고 저장 버튼을 누르지 않은 경우 발생할 수 있습니다.


android google map blank


이런 경우 오류 메시지를 살펴보면


android google map blank


D/OpenGLRenderer: Swap behavior 0

E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.

E/Google Maps Android API: In the Google Developer Console (https://console.developers.google.com)

    Ensure that the "Google Maps Android API v2" is enabled.

    Ensure that the following Android Key exists:

          API Key: AIXxXxXxXXxXxXxXXXXXXxXXXXxXXXXXXXXN_L8

          Android Application (<cert_fingerprint>;<package_name>): 56:C8:12:AA:AA:AA:AA:AA: AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:AA:A4:B8;copycoding.tistory.gpsmap

D/EGL_emulation: eglCreateContext: 0xa2605f00: maj 2 min 0 rcv 2

D/EGL_emulation: eglMakeCurrent: 0xa2605f00: ver 2 0 (tinfo 0xa26034f0)


API Key는 있지만 패키지에 연결된 SHA-1 값이 맞지 않아 인증 실패가 되었다는 메시지 입니다.

패키지를 등록 할 떄


android google map blank


항목 추가를 누르고 패키지와 SHA-1 지문을 입력하고 완료 만 누르면 반영이 되지 않습니다.


android google map blank


하단에 저장 버튼이 있어서 이것까지 눌려야 입력한 패키지가 반영이 됩니다만일 작업 컴퓨터가 변경이 되었다면 keytool로 다시 설치해서 SHA-1 값을 변경해서 저장하면 됩니다.


android google map blank


그러면 이번에는 지도가 잘 보입니다.


- copy coding -


1···6789101112···15

+ Recent posts