📜  如何在 Android Studio 中隐藏 API 和密钥?

📅  最后修改于: 2022-05-13 01:54:24.609000             🧑  作者: Mango

如何在 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 文件夹。

单击 .gitignore 文件将其打开

第 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 并实现其功能。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!