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

时间:2013-06-19 10:38:00

标签: android android-studio

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

此操作允许我在我的调试和发布版本中使用与地图和大多数Google Play服务相同的API密钥(在应用计费中)。

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

enter image description here

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

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

非常感谢。

7 个答案:

答案 0 :(得分:66)

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

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

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

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

答案 1 :(得分:25)

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

 File->Project Structure
  1. 在“签名”标签
  2. 处添加密钥库
  3. 选择它作为调试/发布“构建类型”。
  4. 确保别名与您的密钥库匹配(keytool -list -v显示您的别名)
  5. 它创建了gradle的东西,在“Apply”上自动同步并立即像魅力一样工作。

答案 2 :(得分: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

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

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

注意:

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

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

答案 3 :(得分:8)

以下是我将我的两个密钥从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 props条件的{{1}}条件内执行“android {}”块变量被赋值,所以只需将整个android {...}部分移动到分配props变量的条件,然后再试一次。

我根据找到的信息herehere将这些步骤拼凑在一起。

答案 4 :(得分:5)

您可以为 您的项目指定<{1}}
以下图片有两个步骤:(Android Studio v0.5.2
第1步:点击debug.keystore按钮。 Step 1

第2步:按如下方式添加project structureenter image description here

答案 5 :(得分:4)

密钥库需要在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

答案 6 :(得分:0)

正如所指出的,您可以使用gradle文件来指定它。 我还发现使用Home文件夹作为路径的一部分非常方便。在团队中工作时更容易。这是我的建议:

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