放置API密钥的位置?资源,清单中的元数据还是静态变量?

Sam*_*awy 9 android android-manifest android-studio

我想弄清楚将API密钥添加到我的Android应用程序中的最佳做法是什么.

- 有些人建议meta-dataManifest.xml文件中使用- 链接.这让我觉得,最好在resources文件中添加密钥.

<meta-data android:value="key_value" android:name="api_key"></meta-data>
Run Code Online (Sandbox Code Playgroud)

- 有人说,把它添加到resources- 链接

<string name="api_key">api_key_value</string">
Run Code Online (Sandbox Code Playgroud)

- 我们可以在类代码中简单地添加它

api.configue("api_key_value");
Run Code Online (Sandbox Code Playgroud)

- 有些人说添加密钥Manifest.xmlresources文件将允许其他应用程序读取它 - 链接.

<string name="foo">bar</string">
Run Code Online (Sandbox Code Playgroud)

我并不是想找到最安全的方法,因为对我来说,我会将Key保存在服务器中并在运行时检索它.

我问的是最好的方法和最佳实践.

提前致谢.

lio*_*art 3

我没有遵循这个问题,因为您似乎已经确定了如何处理 API 密钥(在服务器中)。

关于 Android 中 API 密钥可能隐藏的好文章: http://www.androidauthority.com/how-to-hide-your-api-key-in-android-600583/

就您而言,由于您要在运行时从服务器检索密钥,因此我将遵循本文中的#4:API 密钥公钥/私钥交换,但这可能很麻烦。

另外,我会考虑 NDK 方法(文章中的#3)。作为客户端方法,它非常简单。