📅  最后修改于: 2023-12-03 14:39:09.341000             🧑  作者: Mango
在 Android 开发中,我们常常需要使用 API 密钥来访问各种服务,例如 Google Maps、FireBase、Twitter 等等许多第三方 API。
然而,API 密钥通常是私密的信息,不应该在源代码中明文存储。如果您将 API 密钥提交到版本控制系统(如 Git),那么其他人将能够轻松地查看到它们,并且可能会滥用它们。
本文将介绍如何将 API 密钥存储在一个私密的地方,不会在源代码中暴露。
在 Android Studio 项目中,您可以通过使用 local.properties
文件来保存本地的配置信息,该文件应该被添加到 .gitignore
中以防止其被提交到版本控制系统中。它的位置通常是在项目根目录下,如下所示:
.
├── app
│ ├── build.gradle
│ └── src
├── build.gradle
└── local.properties # <--- 这个文件
您可以通过以下方式在 local.properties
中保存 API 密钥:
my_api_key="your_api_key_here"
那么在您的代码中,您可以通过以下方式读取它:
buildConfigField "String", "MY_API_KEY", "\"${my_api_key}\""
这将在 BuildConfig
类中创建一个名为 MY_API_KEY
的常量,您可以通过该常量轻松地访问 API 密钥。
由于我们现在已经将 API 密钥保存在 local.properties
文件中,因此您无需将其添加到版本控制系统中。但是在您使用它时,您仍然需要将其传递给相关应用程序。
下面是如何在 Android 应用程序中使用 API 密钥:
class MyActivity : AppCompatActivity() {
private val api_key = BuildConfig.MY_API_KEY
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 访问 API
val api = MyApi(api_key)
api.call()
}
}
在上面的示例中,我们首先从 BuildConfig
中获取 API 密钥,然后将其传递给 MyApi
类。
这样做的好处在于,即使您在使用 Git 等版本控制系统时意外提交了 local.properties
文件,或者您的合作者在提交到版本库中的代码中添加了 API 密钥,攻击者也无法轻易地访问到它们。
通过将 API 密钥保存在 local.properties
文件中,而不是将它们硬编码到源代码中,可以有效地保护它们不受源代码管理系统的攻击。这是一种非常简单的技巧,但它可以为您的应用程序带来额外的安全性。
请务必牢记将 local.properties
添加到 .gitignore
中,以便将其排除在版本控制系统之外。