如何在 Android Studio 中隐藏 API 和密钥?
API(应用程序编程接口)是一组代码,有助于将信息从一个软件或应用程序传播到另一个软件或应用程序。科技公司创建他们的软件和 API,它们可以被他们的员工用来构建新的应用程序和功能,使他们可以私有使用。但是,一些公司将其 API 出租给第三方(可以是其他公司、开发人员、贡献者),以在其项目中以最低成本和限制使用实现其软件的功能。因此,如果您从公司购买或租赁 API,该公司将为您提供 API 密钥,您必须在项目中声明该密钥以验证 API 权限并访问功能。
为什么要隐藏它们?我们怎样才能隐藏它们?
因此,在使用 API 密钥构建应用程序时隐藏 API 密钥变得至关重要,因为您购买或租用了它们。有几种方法可以将它们包装在应用程序中。我们希望通过本文与您分享一种在 Android Studio 中构建应用程序时保护 API 密钥的道德方法。请参阅下面的流程图并尝试理解该方法。
要隐藏密钥,请按照以下步骤操作:
第 1 步:在 Android Studio 中创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在 Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。
第二步:进入菜单中项目中的.gitignore文件
在 Android Studio IDE 的左上角,您会找到一个菜单,您可以在其中以不同的视图查看同一个项目。单击它并选择项目选项。
在项目选项中,您将找到需要在其中打开.gitignore文件的 Gradle 文件夹。
第 3 步:检查 .gitignore 文件中是否列出了 local.properties
在 .gitignore 文件中,检查是否列出了 local.properties。 .gitignore 将在构建期间忽略其中列出的每个文件。
第 4 步:转到 gradle 文件夹中的 local.properties 文件并声明 API/Secret 密钥
在同一个 gradle 文件夹中,您将找到 local.properties 文件。打开它并声明密钥,如图所示。
第 5 步:转到 app > src 文件夹中的 build.gradle 并附加以下 Google 插件
现在转到 build.gradle 文件并在插件中添加以下插件,如图所示。
plugins {
id 'com.google.secrets_gradle_plugin' version '0.4'
}
添加插件后,单击“立即同步”选项。
第 6 步:转到 AndroidManifest.xml 并创建元数据
现在转到 AndroidManifest.xml 文件并声明一个元数据。必须在活动和应用程序结束标记之间声明元数据。
XML
.
.
.
.
.
.
.
.
Kotlin
package com.geeksforgeeks.hidingapikeysandroid
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ai: ApplicationInfo = applicationContext.packageManager
.getApplicationInfo(applicationContext.packageName, PackageManager.GET_META_DATA)
val value = ai.metaData["keyValue"]
val key = value.toString()
Toast.makeText(applicationContext,key,Toast.LENGTH_LONG).show()
}
}
XML
第 7 步:转到 MainActivity.kt 并输入以下代码以从 AndroidManifest.xml 中的元数据中获取 KEY 值
在主程序中添加如下代码调用key。为了检查键是否被获取,我们将生成一个显示键值的吐司。
科特林
package com.geeksforgeeks.hidingapikeysandroid
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ai: ApplicationInfo = applicationContext.packageManager
.getApplicationInfo(applicationContext.packageName, PackageManager.GET_META_DATA)
val value = ai.metaData["keyValue"]
val key = value.toString()
Toast.makeText(applicationContext,key,Toast.LENGTH_LONG).show()
}
}
XML
输出:
我们能够看到具有相同键值的 Toast。这意味着一切正常,我们可以成功获取密钥。现在我们可以使用密钥验证 API 并实现其功能。