我想在版本控制中隐藏我的AdMob应用ID和广告单元ID。我尝试过创建一个单独的文件来存储密钥,然后在java中阅读该文件。但由于我必须在Android Manifest中使用应用ID,因此无法做到这一点。如何实现这一点?
j8ag8udp1#
简单的回答是不可以。你必须将App Id存储在字符串中的某个地方,并在清单中设置它,因为你不能在运行时更改它。你能做的最好的事情是,在原生c++中存储广告id,并在运行时检索它们。有人仍然可以找到你的广告id,但这比从dex类或字符串XML中找到它们要难,因为它们显示为纯文本。
kkih6yb82#
老问题了,不过我找到了个好办法。你可以使用**secrets gradle plugin for android**由谷歌开发,这个插件是专为谷歌MapAPI键,但你可以使用任何你想隐藏的关键。也有一些警告:
免责声明:此插件主要用于在版本控制中隐藏您的密钥。由于您的密钥是静态二进制文件的一部分,您的API密钥仍然可以通过反编译APK来恢复。因此,建议使用其他措施来保护您的密钥,如添加限制(如果可能)。
当你添加插件,你需要写在local.properties的admob应用程序id像这样
local.properties
ADMOB_APP_ID="ca-app-pub-XXXXXX~XXXXX"
最后,在manifest中使用以下格式放置变量:
manifest
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="${ADMOB_APP_ID}" />
这就是全部,应用程序工作与隐藏admob id
2条答案
按热度按时间j8ag8udp1#
简单的回答是不可以。你必须将App Id存储在字符串中的某个地方,并在清单中设置它,因为你不能在运行时更改它。
你能做的最好的事情是,在原生c++中存储广告id,并在运行时检索它们。
有人仍然可以找到你的广告id,但这比从dex类或字符串XML中找到它们要难,因为它们显示为纯文本。
kkih6yb82#
老问题了,不过我找到了个好办法。
你可以使用**secrets gradle plugin for android**由谷歌开发,这个插件是专为谷歌MapAPI键,但你可以使用任何你想隐藏的关键。
也有一些警告:
免责声明:此插件主要用于在版本控制中隐藏您的密钥。由于您的密钥是静态二进制文件的一部分,您的API密钥仍然可以通过反编译APK来恢复。因此,建议使用其他措施来保护您的密钥,如添加限制(如果可能)。
当你添加插件,你需要写在
local.properties
的admob应用程序id像这样最后,在
manifest
中使用以下格式放置变量:这就是全部,应用程序工作与隐藏admob id