버전 제어 시스템을 사용하고 있고 프로젝트에서 API 키가 필요한 서비스를 사용한다고 가정해 보겠습니다. 로컬 컴퓨터에 있으면 모든 것이 정상이지만 이러한 API 키를 전 세계와 공유하고 싶지는 않습니다.
그렇다면 어떻게 애플리케이션 내에서 API 키를 보존하면서도 저장소에 코드를 업로드할 때 이를 숨길 수 있을까요?
아마도 애플리케이션 내에서 API 키를 일반적인 방식으로 사용할 수 있으면서도 노출시키지 않기를 원할 것입니다.
비밀이란 무엇인가요?
여기에 비밀이 있습니다. 들어오세요. 혼자만 간직하는 것과 비슷하지만 개발자의 방식입니다.
비밀은 애플리케이션이 작동하는 데 필요한 중요한 정보를 나타낼 수 있지만 프로젝트 외부에서 작업하는 사람에게는 표시되어서는 안 됩니다.
이는 API 키 또는 인증 토큰일 수 있지만 본질적으로 비밀은 귀하와 귀하만 사용해야 하는 인증 정보입니다. 이는 웹사이트 비밀번호를 다른 사람과 공유하고 싶지 않은 것과 비슷합니다.
🚨 고지 사항:이 문서에서 제공하는 솔루션은 버전 제어 시스템에서 비밀을 노출하지 않는 데 효과적이라는 점에 유의하세요. 그러나 애플리케이션의 일부이므로 APK를 디컴파일하여 검색할 수 있습니다.
비밀을 안전하게 유지하는 방법
프로젝트에는 local.properties가 있어야 합니다. 프로젝트의 루트 디렉토리에 있는 파일
버전 제어 시스템에서 무시되는지 확인하려면 .gitignore 파일을 열고 해당 파일이 있는지 확인하세요.
프로젝트에 Secrets Gradle 플러그인을 가져와야 합니다.
이렇게 하려면 프로젝트의 루트 build.gradle 파일로 이동하여 다음 줄을 붙여넣으세요.
buildscript {
dependencies {
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
}
}
다음으로, 앱의 build.gradle 파일로 이동하여 다음 줄을 붙여넣으세요.
plugins {
...
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}
local.properties 파일 내에 API 키를 추가하세요.
AndroidManifest.xml 내에서 비밀번호를 사용할 수 있습니다. 애플리케이션 태그 안에 메타데이터 태그를 추가하여 파일을 만드세요:
<application
android:allowBackup="true"
.....
>
<activity>
....
</activity>
<meta-data
android:name="YOUR_API_KEY_NAME" /// Choose any value here
android:value="${API_KEY_NAME}"/> /// Write the name you gave inside your local.properties file
</application>
API 키에 액세스하려면 PackageManager를 사용하여 메타데이터를 가져올 수 있습니다.
val applicationInfo: ApplicationInfo = application.packageManager
.getApplicationInfo(application.packageName, PackageManager.GET_META_DATA)
val apiKey = applicationInfo.metaData["YOUR_API_KEY_NAME"]
또는 BuildConfig 개체를 사용하여 가져올 수도 있습니다.
BuildConfig.YOUR_API_KEY_NAME
그게 다야. 이제 버전 관리 시스템에서 비밀이 노출되지 않으므로 안심하셔도 됩니다.
비밀을 지키는 것을 즐기세요. ㊙️
저는 이것을 최근 프로젝트 중 하나에 사용했는데 여기에서 소스 코드(비밀은 제외)를 볼 수 있습니다.
제가 작성한 다른 기사를 확인하고 싶으시면 여기로 가세요.
무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요