Android Studio中的Eclipse“自定义debugging密钥库”的等价物是什么?

在使用Google Maps API时,我习惯于在Eclipse中使用自定义debugging密钥(实际上是我的生产密钥)

通过这种操作,我可以在debugging和发布版本中使用Google地图和大部分Google Play服务(在应用程序结算中)使用相同的API密钥。

这非常方便,因为不需要更改清单中的密钥。

在这里输入图像说明

不幸的是,随着Android Studio的迁移,我错过了这个function。

任何想法,我可以find这个选项吗?

非常感谢。

您可以在build.gradle文件中定义一个密钥库。 请参阅此处的签名configuration部分: http : //tools.android.com/tech-docs/new-build-system/user-guide

在你的情况下,你想重新定义debugging变体的密钥库:

android { signingConfigs { debug { storeFile file("your.keystore") } } } 

但是,您应该真正使用两个不同的密钥库来进行debugging和发布configuration。

在最近的Android Studio 0.8.9上,你会发现这个地方更好:

  File->Project Structure 
  1. 在“签名”选项卡中添encryption钥库
  2. select它为您的debugging/版本“构buildtypes”。
  3. 确保别名与您的密钥库相匹配(keytool -list -v显示您的别名)

它创build的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自动创build

 signingConfigs { debug { storeFile file('custom_debug_keystore') keyAlias 'androiddebugkey' keyPassword 'android' storePassword 'android' } } 

注意:

1)请不要在代码中使用.keystore手动进行手动configuration

2)请指定正确的别名和密码

下面是一个完整的循序渐进的步骤,我把两个我的密钥从gradle.build文件移动到一个文件中,这个文件不会被包含在任何构build或者库提交中。

1) 创build一个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中指定的位置创build您的项目yourprojectname.properties文件:

 keystore=C:\\path\\to\\keystore\\yourapps.keystore keystore.password=your_secret_password 

4)修改你的gradle.build文件来指向你的yourprojectname.properties文件来使用variables。

 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)享受! 现在,所有的密钥都将位于目录根目录之外,但每个构build仍然具有自动化的乐趣。

如果在你的gradle.build文件中出现关于“props”variables的错误,那是因为你并没有在propsvariables被分配的情况下首先执行“android {}”块,所以只需移动整个android {。 ..}部分转换为propsvariables的赋值条件,然后再试一次。

我从这里和这里find的信息拼凑起这些步骤。

您可以独立指定项目debug.keystore
两个步骤与以下图像:( Android Studio v0.5.2
第一步 :点击project structurebutton。 步骤1

第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并没有真的要求input密码或别名,但是Gradle是这样做的。 我相信Eclipse只是假设它是密码: android和别名: androiddebugkey 。 这可能不是你的密钥库真实,但我会尝试像这样的gradle。

如果您知道密码,但您不确定别名 ,则还可以运行以下命令来获取别名: keytool -list -keystore /path/platform.keystore 链接

正如指出的那样,你可以使用gradle文件来指定它。 我还发现使用Home文件夹作为path的一部分非常方便。 这使得在团队中工作变得更容易。 这是我的build议:

 android { signingConfigs { debug { storeFile file(System.properties['user.home']+"/.android/custom.debug.keystore") } } }