Android Studio - 调试密钥库

109

Android Studio是否会签署调试版本的构建?如果是的话,它使用哪个密钥库进行签名?


1
它无论如何都会签名,因为只有经过签名的构建才能被安装。 - Alexander Kulyakhtin
3
我认为这是一个合理的编程问题。它直接涉及到开发Android应用程序时使用的工具链。 - Austyn Mahoney
请问Android Studio中的debug.keystore文件在哪里可以找到?这个文件是用于调试和签名应用程序的。谢谢! - Prachi
@Prachi 这怎么可能是一个比三年后提出的问题的重复?也许是另一个问题是这个问题的重复。 - fasteque
请参见 https://dev59.com/K2cs5IYBdhLWcg3w84dp - caw
7个回答

179

位于同一位置:~/.android/debug.keystore


5
难道不是在~/.android目录下吗? - Eugene Mymrin
14
keytool -list -v -keystore ~/.android/debug.keystore - jturolla
6
这是keytool命令的Windows版本:keytool -exportcert -alias androiddebugkey -keystore C:\Users<User>.android\debug.keystore -list -v。 - Simon
12
默认密码为“android”,密钥别名为“androiddebugkey”。 - naXa stands with Ukraine
1
而androiddebugkey的默认密码也是“android”。 - kibitzerCZ
显示剩余2条评论

64

如果您使用的是Windows系统,那么该文件通常位于以下位置:

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


30
你可以指定自己的调试密钥库。这种解决方案还可以让您在项目目录之外存储密钥,并享受签名过程中的自动化功能。是的,您可以进入文件-> 项目结构,并在签名选项卡中分配签名密钥库和密码,但这会将明文条目放入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”变量的错误,则是因为您没有执行“android {}”块内部的第一个if条件,在该条件下分配了props变量,因此只需将整个android{...}部分移入分配props变量的条件中,然后再试一次。

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


2
关于“2)添加一个条目...”。 添加到哪里? - VikingGlen
喜欢构建自动化的想法。 - Khurram Shehzad
谢谢,这是一个很好的方法,可以将生产密码保留在源代码控制之外(以便不会对所有开发人员可用)! - sham

15

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

如果定义了ANDROID_SDK_HOME,则该文件将放置在SDK的名为.android的子文件夹中。
当未定义时,密钥库将放置在用户主目录路径下的同一个子文件夹中:
- 在Windows上为%HOMEPATH%\.android\
- 在Linux上为$HOME/.android/


1
您能否详细阐述一下您的答案,并对您提供的解决方案进行更多描述? - abarisone
为什么有87个人认为它在~/.android/debug.keystore,他们都没有名为“ANDROID_SDK_HOME”的环境变量? - IloveIniesta
这非常有帮助。非常感谢。 - Rahul
这里是解释可能变量的文档 https://developer.android.com/studio/command-line/variables 根据它,ANDROID_SDK_HOME 适用于旧工具,而 ANDROID_USER_HOME 现在被使用(截至2022年9月)。 - user1053510

5
这是我最终创建~/.android/debug.keystore文件的方法。
首先是一些背景。我买了一台新的旅行笔记本电脑。安装了Android Studio。从GitHub克隆了我的Android项目。该项目无法运行。最终发现debug.keystore没有被创建...而我又不知道如何让Android Studio去创建它。
最后,我创建了一个新的空项目...这样就创建了debug.keystore!
希望这能帮助其他遇到此问题的人。

1
如果您使用Windows,您将会发现它如下所示: 文件-->项目结构-->Facets 选择您的Android项目,在“Facet 'Android'”窗口中单击“Packaging”选项卡,您将找到您想要的内容。

2
没有名为“Facets”的菜单。 - IgorGanapolsky

1
在 Mac 上,您将在此处找到它:/Users/$username/.android

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接