我在两个不同的环境中开发一个 android 应用程序,并且每个 SDK 都有不同的 Maps API 密钥。我没有尝试将一个 debug.keystore 文件复制到另一个位置,但如果有一种方法可以根据开发环境选择性地替换文件中的密钥,我会更喜欢。密钥在 XML 文件中使用(尽管应该有一种以编程方式设置它的方法)。
4 回答
这是我们所做的:
我们将 Maps 键保存在一个名为 assets/environment.properties 的文件中。默认情况下,它包含开发密钥。在应用程序启动期间的运行时,我们将该文件中的所有值放入一个哈希中,并从该文件中的键手动构建我们的地图视图(您可以将 API 键传递给MapView
构造函数)。
每当我们发布新版本时,我们的构建系统都会将不同的模板文件复制到 environment.properties,该文件包含生产密钥。一旦通过使用版本控制系统(我们使用 Git)丢弃更改来构建应用程序,此步骤将被反转。这一切都是自动的。
到目前为止,这对我们来说非常有效。
您可以使用 Maps 密钥注册多个证书,因此您不再需要使用多个密钥。见https://stackoverflow.com/a/13881624/1433372
“每行一个 SHA1 证书指纹和包名称(用分号分隔)。示例:45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2 :56:26:A0:E0;com.example 45:B6:E4:6F:36:AD:1A:98:94:B4:02:66:2B:12:17:F1:56:26:A0: E0;com.example"
您可以在 ant 中使用属性替换器,或者如果您在那里使用相同的 maven。
如果您想以编程方式设置它,您可以将 API 密钥传递给MapView 构造函数。