API 키와 기타 민감한 정보를 안드로이드의 GitHub에 업로드하지 않도록 하는 방법
표지 사진: Bruno Martins @ Unsplash
면책 성명
TL;박사 01 명
BuildConfig
은 로컬 파일에서 민감한 값을 읽고 생성된 코드를 통해 프로젝트에 제공할 수 있습니다.배경.
민감한 정보를 누설하면 우리 자신뿐만 아니라 also to users of our projects에도 손해를 끼칠 수 있다.
비록 내가 주목하는 것은 API 키이지만, 이러한 방법을 통해 단점과 증빙 등 다른 민감한 정보도 로컬에서 저장할 수 있다.
무슨
우선, 우리가 이야기한 것이 같은 일이라는 것을 확신합시다.
무엇 때문에
불행하게도 정보 안전(또는 정보 안전) 실천은 우리 개발자 지역사회에서 여전히 매우 나쁘게 전파되고 있다.
어떻게
Gradle's
BuildConfig
class은 로컬 파일에서 값을 읽고 응용 프로그램이 사용하는 코드를 생성할 수 있도록 합니다..gitignore
에 올바르게 추가하면 GitHub, GitLab 또는 이와 유사한 플랫폼에서 API 키를 공개하는 데 큰 문제가 없을 것입니다.비밀 번호
8단계가 있습니다.
1. 루트 디렉토리에
keys.properties
만들기keys.properties
이라는 파일을 만들고 다음과 같이 API 키를 파일에 추가합니다.api.key=API_KEY_HERE
2. 파일 경로를
.gitignore
에 추가keys.properties
파일에 추가합니다./keys.properties
3. 루트 디렉토리에
.gitignore
만들기keys.gradle
의 키를 검색하기 위해 프로젝트 루트 디렉터리에 keys.properties
이라는 파일을 추가하고 다음과 같은 keys.gradle
코드를 추가해야 한다.// Define how to load a string from a properties file:
def getStringFromFile(fileName, property) {
Properties props = new Properties()
props.load(project.rootProject.file(fileName).newDataInputStream())
return props[property].toString()
}
// Specify keys.properties file as the source
def getStringFromKeysFile(property) {
return getStringFromFile('keys.properties', property).toString()
}
// Expose the key defined in keys.properties as a variable available for the whole project
ext.keys = ["apiKey": getStringFromKeysFile('api.key'),]
4.
Groovy
을 keys.gradle
내부로 가져오기project/build.gradle
파일에서 파일을 가져오십시오.buildscript {
apply from: project.rootProject.file("keys.gradle")
...
}
keys.gradle
은 자동으로 키를 컴파일러 코드로 변환할 수 있지만, 우리는 6단계에서 완성할 것이다.5.
build.gradle
의 키에 상수 정의BuildConfig
파일에 다음과 같이 app/build.gradle
이라는 상수를 정의합니다.android {
...
buildTypes {
// Although it's set to 'debug', certify what build variants (say debug, staging, release) will need to access the key:
debug {
...
it.buildConfigField "String", "API_KEY", keys.apiKey
}
}
6. 항목 정리 및 재컴파일
코드를 효과적으로 생성하려면 안드로이드 스튜디오의 위쪽 메뉴에서 Build>Clean Project를 선택하고 Build>Rebuild Project를 선택합니다.
7. 프로젝트 내부에서
API_KEY
을 통해 관건 변수 호출build.gradle
이라고 한다.예를 들면 다음과 같습니다.class CustomApplication : Application() {
override fun onCreate() {
super.onCreate()
Firebase.init(this, BuildConfig.API_KEY)
}
}
8. 팀 내 안전 공유
BuildConfig
BuildConfig.API_KEY
파일을 안전하게 공유해야 한다.마지막 고려
keys.properties
, keys.properties
, keys.properties
과 api.key
은 모두 임의이다. 이름을 바꿀 때 그것들의 확장명만 보존하면 된다(keys.gradle
, API_KEY
, .properties
)..key
은 컴파일 코드를 생성합니다. 이것은 역방향 프로젝트인 우리 프로그램의 .gradle
이 API 키와 다른 비밀을 폭로할 수 있음을 의미합니다.Reference
이 문제에 관하여(API 키와 기타 민감한 정보를 안드로이드의 GitHub에 업로드하지 않도록 하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/leehendryp/avoid-versioning-api-keys-and-sensitive-info-on-android-here-s-how-56e1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)