当我使用 Google Maps API 时,我习惯于在 Eclipse 中使用自定义调试密钥(这实际上是我的生产密钥)
这种操作使我能够在我的调试和发布版本中为地图和大多数 Google Play 服务(在应用程序计费中)使用相同的 API 密钥。
这真的很方便,因为不需要更改清单中的密钥。
不幸的是,随着迁移到 Android Studio,我错过了这个功能。
知道在哪里可以找到此选项吗?
非常感谢。
当我使用 Google Maps API 时,我习惯于在 Eclipse 中使用自定义调试密钥(这实际上是我的生产密钥)
这种操作使我能够在我的调试和发布版本中为地图和大多数 Google Play 服务(在应用程序计费中)使用相同的 API 密钥。
这真的很方便,因为不需要更改清单中的密钥。
不幸的是,随着迁移到 Android Studio,我错过了这个功能。
知道在哪里可以找到此选项吗?
非常感谢。
您在 build.gradle 文件中定义一个密钥库。请参阅此处的签名配置部分:https ://developer.android.com/studio/build/index.html
在您的情况下,您想重新定义调试变体的密钥库:
android {
signingConfigs {
debug {
storeFile file("your.keystore")
}
}
}
但是,您确实应该使用两个不同的密钥库进行调试和发布配置。
在最近的 Android Studio 0.8.9 上,你会发现它在一个更好的地方:
File->Project Structure
它创建 gradle 的东西,在“应用”上自动同步,并像魅力一样立即工作。
嗨,如果您不想对所有这些东西进行硬编码,请执行以下简单步骤
->Your project
->Your Module
->Right click on your module
->go to open module settings
->Go to Signing section
->Specify all the attribute here and browse your Custom debug key in Store File
然后你会发现下面的代码将由 android studio 在 build.gradle 中自动创建
signingConfigs {
debug {
storeFile file('custom_debug_keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
笔记:
1)请不要在代码中手动使用 .keystore 进行手动配置
2) 请指定正确的别名和密码
这是我将两个密钥从 gradle.build 文件中移出的完整步骤,该文件不会包含在任何构建或存储库提交中。
1) 创建一个 gradle.properties (如果你还没有)。
此文件的位置取决于您的操作系统:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
2)添加一个指向yourprojectname.properties
文件的条目。
(以 Windows 为例)
yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties
3) 在步骤 2 中指定的位置创建yourprojectname.properties
文件,并提供以下信息:
keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password
4)修改您的gradle.build
文件以指向yourprojectname.properties
文件以使用变量。
if(project.hasProperty("yourprojectname.properties")
&& new File(project.property("yourprojectname.properties")).exists()) {
Properties props = new Properties()
props.load(new FileInputStream(file(project.property("yourprojectname.properties"))))
android {
signingConfigs {
release {
keyAlias 'release'
keyPassword props['keystore.password']
storeFile file(props['keystore'])
storePassword props['keystore.password']
}
debug {
keyAlias 'debug'
keyPassword props['keystore.password']
storeFile file(props['keystore'])
storePassword props['keystore.password']
}
}
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "your.project.app"
minSdkVersion 16
targetSdkVersion 17
}
buildTypes {
release {
}
}
}
}
dependencies {
...
}
5)享受! 现在您的所有密钥都将位于目录的根目录之外,但您仍然可以享受每次构建自动化的乐趣。
如果您在 gradle.build 文件中收到有关“props”变量的错误,那是因为您没有在分配变量的第一个if
条件内执行“android {}”块,props
因此只需移动整个 android{ ... } 部分进入分配 props 变量的条件,然后重试。
您可以debug.keystore
为您的项目 独立指定。
分两步,图片如下:(Android Studio v0.5.2)
第一步:点击按钮project structure
。
第2步:添加debug.keystore
如下。
密钥库需要在 build.gradle 中,示例如下:
android{
signingConfigs {
release {
storeFile file('/path/platform.keystore')
storePassword 'android'
keyAlias 'androiddebugkey'
keyPassword 'android'
}
}
...
buildTypes {
release {
signingConfig signingConfigs.release
}
}
Eclipse 并没有真正要求输入密码或别名,但 gradle 要求。我相信 Eclipse 只是假设它是密码:android和别名:androiddebugkey。这可能不适用于您的密钥库,但我会在 gradle 上尝试这样做。
如果您知道密码,但不确定别名,也可以运行以下命令获取别名:
keytool -list -keystore /path/platform.keystore
link
正如所指出的,您可以使用 gradle 文件来指定它。我还发现使用 Home 文件夹作为路径的一部分非常方便。它使在团队中工作时更容易。这是我的建议:
android {
signingConfigs {
debug {
storeFile file(System.properties['user.home']+"/.android/custom.debug.keystore")
}
}
}