AndroidManifest.xml에 API 키를 작성한 코드를 GitHub에 커밋하지 않기 위해

소개



개인 개발에 API 튜토리얼에 따라 코드를 작성하면 사용하기위한 API 키를 AndroidManifest.xml에 쓸 수 있습니다. 경향이 있습니다.

AWS입니다만, 이런 기사 도 보였으므로, API 키는 안이하게 GitHub상에 커밋해 좋은 것이 아닐 것 같네요.
그렇다고 해서 거기만 필기로 매번 다시 쓰는 운용도 하고 싶지는 않습니다.

(또한 현재는 GitHub에서 검색 (GoogleMapsAPI 키의 예) 해 보면, 베타 쓰여져 있거나, 좋게도 strings.xml에 베타 써진 것이 많아 있는 모양)

그래서 이번에는 어떻게 든 API 키를 커밋하지 않고 코드에 반영시킬지 살펴 보았습니다.

개발 환경


  • OS X 10.9.5
  • AndroidStudio 2.0

  • 할 일


  • ※API 키라고 반영되고 있는지의 확인이 여러 번 번거로운…
  • 마찬가지로 Manifest에 기재해 확인이 간단한 MainActivity.java의 label의 캐릭터 라인을 커밋하지 않고 반영시킨다.

  • 했던 일



    ManifestManager의 manifestPlaceHolders를 사용하여 환경 변수에서 설정하려는 값을 가져옵니다.
  • ManifestManager 사용
  • 환경 변수에서 build.gradle의 값을 가져옵니다.
  • 환경 변수 설정
  • 디버그 APK를 설치하고 확인

  • ManifestManager 사용



    manifestPlaceHolders에서는 ${}로 둘러싸여 변수를 포함합니다.

    AndroidManifest.xml
            <activity
                android:name=".MainActivity"
                android:label="${label}"
                android:theme="@style/AppTheme.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
    
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
    

    build.gradle 값을 환경 변수에서 가져옵니다.



    manifestPlaceholders에 앞서 Manifest 측에서 임베드한 변수를 정의해 간다.
    이번에는 LABEL이라는 환경 변수를 참조한다.

    ※베타 쓰기에서도 움직이지만 그것이라고 본말 전도이므로 더욱 환경 변수를 참조하도록 한다.

    app/build.gradle
        buildTypes {
            debug {
                minifyEnabled false
                signingConfig signingConfigs.debug
                //manifestPlaceholders = [label: "testlabel"] #ベタ書きの例、これでも動くが...
                manifestPlaceholders = [label: System.getenv("LABEL")]
            }
        }
    

    환경 변수 설정



    터미널에서 launchctl을 사용하여 설정하십시오.
    #LABELという環境変数に"testlabel"を設定する
    $ launchctl setenv LABEL testlabel
    
    #設定されていることを確認する
    $ launchctl getenv LABEL
    testlabel
    

    디버그 APK를 설치하고 확인



    설정하면 반영을 위해 AndroidStudio를 재시작하고, 만든 디버그 apk를 넣어 본다.

    무사히 "testlabel"이 label에 반영되었습니다.


    결론



    여러 사람이나 복수 디바이스로 개발할 때 등은 환경 변수를 가지런히 해야 하는 것이 귀찮은 생각이 듭니다.
    이것이 올바른 방법인지 모르기 때문에, 더 좋은 방법을 아는 분은 꼭 가르쳐 주세요.

    참고



    초보자가 AWS에서 실수라고 불법 이용되어 $6,000 청구, 울 것 같게 된 이야기. - Qiita : ぃ tp // 코 m / 모치즈키 코타로 / ms / 아 0 98 ~ f0063

    Manifest Merger - Android Studio Project Site : htp : ///와 ls. 안 d로이 d. 코 m / 테 ch도 cs / 네 w-Bui ld-sys m / Use r-gui / 마니 후 st - r r # 및 C-P ぁ セホ 1 rt

    Android Studio(Gradle)에서 apk 파일을 만들 때 storePassword/keyAlias/keyPassword의 지정 방법을 몇 가지 검증해 보았다. - Qiita : ぃ tp // 코 m / 시라 지 / ms / 8f55b5295094487 71

    AndroidStudio에 환경 변수 전달 - Qiita : ぃ tp // m / t 미야몬 / ms / e d660d f7846f5 e c95d3

    좋은 웹페이지 즐겨찾기