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
- 在“签名”选项卡中添encryption钥库
- select它为您的debugging/版本“构buildtypes”。
- 确保别名与您的密钥库相匹配(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的错误,那是因为你并没有在props
variables被分配的情况下首先执行“android {}”块,所以只需移动整个android {。 ..}部分转换为propsvariables的赋值条件,然后再试一次。
我从这里和这里find的信息拼凑起这些步骤。
您可以独立指定项目的debug.keystore
。
两个步骤与以下图像:( Android Studio v0.5.2 )
第一步 :点击project structure
button。
第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") } } }