Android Studio-调试密钥库


107

Android Studio是否签署调试版本?如果是这样,它在哪里使用密钥库?


1
它仍然会签名,因为只能安装已签名的内部版本。
亚历山大·库里亚赫金

3
我认为这是一个有效的编程问题。它与开发Android应用程序时使用的工具链直接相关。
Austyn Mahoney


@Prachi怎么可能是三年后问到的一个问题的副本?也许是另一个与此重复。
fasteque

Answers:


179

它在同一位置: ~/.android/debug.keystore


5
它不是在〜/ .android中吗?
Eugene Mymrin

14
keytool -list -v -keystore〜/ .android / debug.keystore
jturolla

5
这是keytool命令的Windows版本:keytool -exportcert -alias androiddebugkey -keystore C:\ Users \ <User> \。android \ debug.keystore -list -v
Simon

12
默认密码为“ android”,密钥别名为“ androiddebugkey”。
naXa

1
并且androiddebugkey的默认密码也是“ android”。
kibitzerCZ

64

如果使用Windows,则位置可能是这样的:

C:\ User \ YourUser \ .android \ debug.keystore


30

您可以根据需要指定自己的调试密钥库。该解决方案还使您能够将密钥存储在项目目录之外,并在签名过程中享受自动化。是的,您可以File -> Project StructureSigning选项卡中转到并分配签名密钥库和密码,但这会将纯文本条目放入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)yourprojectname.properties使用以下信息在您在步骤2中指定的位置创建文件:

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变量的条件,然后重试。

我根据此处此处的信息将这些步骤拼凑在一起。


1
关于“ 2)添加条目...”。在哪里添加条目?
VikingGlen

喜欢构建自动化的想法
Khurram Shehzad

谢谢,这是一种将生产密码保持在源代码控制之外的好方法(因此,并非所有开发人员都可以使用它们)!
sham

15

Android Studio debug.keystore文件路径取决于环境变量ANDROID_SDK_HOME。

如果定义了ANDROID_SDK_HOME,则将文件放置在SDK的子文件夹.android中
如果没有定义,则密钥库放置在相同的子文件夹的用户主目录:
- 。%HOMEPATH%\ 机器人\ Windows上
- $ HOME / .android / Linux上


1
您能否详细说明您的答案,并提供有关您提供的解决方案的更多说明?
abarisone 2015年

为什么有87个人认为它位于〜/ .android / debug.keystore中,他们都没有名为“ ANDROID_SDK_HOME”的环境变量???
IloveIniesta 2015年

这非常有帮助。非常感谢
Rahul

4

这是我最终创建〜/ .android / debug.keystore文件的方式。

首先介绍一些背景。我有一台新的旅行笔记本电脑。已安装Android Studio。从git hub克隆了我的android项目。该项目将无法运行。最终发现没有创建debug.keystore ...,而且我不知道如何让Android Studio创建它。

最后,我创建了一个新的空白项目……并创建了debug.keystore!

希望这对其他有此问题的人有所帮助。


1

在Mac上,您可以在以下位置找到它:/Users/$username/.android


1

如果使用Windows,则会发现它遵循以下规则: File-> Project Structure-> Facets

选择您的Android项目,然后在“ Facet'Android'”窗口中单击TAB“打包”,您将找到所需的内容


2
没有“ Facets”这样的菜单
IgorGanapolsky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.