在Android工作室中,Eclipse"Custom debug Keystore"的等价物是什么?

Waz*_*_Be 38 android android-studio

当我使用Google Maps API时,我习惯使用Eclipse中的自定义调试键(实际上是我的生产键)

这种操作允许我在我的调试和发布版本中使用相同的地图API密钥和大部分Google Play服务(在应用计费中).

这非常方便,因为无需更改清单中的密钥.

在此输入图像描述

不幸的是,随着迁移到Android Studio,我错过了这个功能.

知道我可以在哪里找到这个选项吗?

非常感谢.

小智 66

您可以在build.gradle文件中定义密钥库.请参阅此处的"签名配置"部分:https://developer.android.com/studio/build/index.html

在您的情况下,您希望重新定义调试变量的密钥库:

android {
    signingConfigs {
        debug {
            storeFile file("your.keystore")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,您应该使用两个不同的密钥库来进行调试和发布配置.

  • 非常感谢,我会尝试.我为什么要使用不同的键?结果和我获得的时间是巨大的...... (7认同)

Joh*_*ohn 25

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

 File->Project Structure
Run Code Online (Sandbox Code Playgroud)
  1. 在"签名"选项卡上添加密钥库
  2. 选择它作为调试/发布"构建类型".
  3. 确保别名与您的密钥库匹配(keytool -list -v显示您的别名)

它创建了gradle东西,在"Apply"上自动同步并立即像魅力一样工作.

  • 请注意,您无需指定所有字段.对于调试密钥,您可以省略默认值(别名'androidebugkey'和密钥库/密钥密码设置为'android').对于释放密钥,您可能不希望在那里输入密码,因为它将以明确的形式存储在build.gradle中,然后在您的DVCS上结束. (2认同)

Kir*_* A. 17

嗨如果您不想要所有这些东西的硬代码,那么请采取以下简单的步骤

->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
Run Code Online (Sandbox Code Playgroud)

然后你会发现下面的代码将由build Studio在build.gradle中自动创建

signingConfigs {
    debug {
        storeFile file('custom_debug_keystore')
        keyAlias 'androiddebugkey'
        keyPassword 'android'
        storePassword 'android'
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:

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

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


Max*_*org 8

以下是我将我的两个密钥从gradle.build文件中移动到一个文件中的完整步骤,该文件不会包含在任何构建或存储库提交中.

1) 创建一个gradle.properties(如果你还没有).

此文件的位置取决于您的操作系统:

   /home/<username>/.gradle/ (Linux)
   /Users/<username>/.gradle/ (Mac)
   C:\Users\<username>\.gradle (Windows)
Run Code Online (Sandbox Code Playgroud)

2)添加指向yourprojectname.properties文件的条目. (Windows的示例)

yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties
Run Code Online (Sandbox Code Playgroud)

3)yourprojectname.properties使用以下信息在步骤2中指定的位置创建文件:

keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password
Run Code Online (Sandbox Code Playgroud)

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 {
    ...
}
Run Code Online (Sandbox Code Playgroud)

5)享受! 现在,您的所有密钥都将位于目录的根目录之外,但您仍然可以为每个构建获得自动化的乐趣.

如果你的gradle.build文件中出现关于"props"变量的错误,那是因为你没有ifprops变量被赋值的第一个条件内执行"android {}"块,所以只需移动整个android {... } section进入分配props变量的条件然后再试一次.

我从这里这里找到的信息中拼凑了这些步骤.


Aut*_*ots 5

您可以单独debug.keystore项目 指定. 使用以下图像的两个步骤:(Android Studio v0.5.2)步骤1:单击按钮.

project structure步骤1

第2步:添加debug.keystore如下. 在此输入图像描述