Android Studio - 调试密钥库

fas*_*que 104 android certificate android-studio

Android Studio是否签署调试版本?如果是这样,它用于执行此操作的密钥库在哪里?

小智 178

它位于同一地点: ~/.android/debug.keystore

  • keytool -list -v -keystore~/.android/debug.keystore (13认同)
  • 默认密码是"android",密钥别名是"androiddebugkey". (10认同)
  • 是不是在〜/ .android中? (5认同)
  • 这是keytool命令的windows版本:keytool -exportcert -alias androiddebugkey -keystore C:\ Users\<User>\.android\debug.keystore -list -v (5认同)

Fer*_* JS 63

如果您使用Windows,可能位置如下:

C:\用户\ YourUser\.android\debug.keystore


Max*_*org 29

如果您愿意,可以指定自己的调试密钥库.此解决方案还使您能够将密钥存储在项目目录之外,并在签名过程中享受自动化.是的,您可以转到File -> Project Structure并在Signing选项卡中分配签名密钥库和密码,但这会将明文条目放入您的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变量的条件然后再试一次.

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

  • 关于“2)添加条目...”。在哪里添加条目? (2认同)

Spa*_*atz 15

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

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


Lor*_*ren 5

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

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

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

希望这可以帮助其他遇到此问题的人。