V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Features
V2EX  ›  Android

初学 Android,请教下当前 2020.3 的 AS 如何获取当前应用的开发版 sha1?

  •  
  •   Features · 226 天前 · 1449 次点击
    这是一个创建于 226 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网上看的教程是说用 keytools 工具查看~/.android 下的 debug.keystore 但是我无法读取这个 keystore

    请教下各位大佬应该怎么获取呢?

    主要是我删了这个 debug.keystore 也能正常打包编译运行。。。 也没有给我重新生成一个

    16 条回复    2021-12-30 21:13:48 +08:00
    eminemcola
        1
    eminemcola  
       226 天前
    理论上应该是可以读的,实在不行也可以考虑直接通过代码在运行时读一下当前的 signinfo 写到日志里看看。
    Features
        2
    Features  
    OP
       226 天前
    @eminemcola 使用命令: keytool -list -v -keystore .\debug.keystore
    读取的时候报错:
    ```

    keytool 错误: java.io.IOException: Invalid keystore format
    java.io.IOException: Invalid keystore format
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650)
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
    at java.security.KeyStore.load(KeyStore.java:1445)
    at sun.security.tools.keytool.Main.doCommands(Main.java:794)
    at sun.security.tools.keytool.Main.run(Main.java:342)
    at sun.security.tools.keytool.Main.main(Main.java:335)

    ```

    是我命令的参数有误吗?
    learningman
        3
    learningman  
       226 天前
    所以你为啥要 debug 的证书 sha1 。。。
    AItsuki
        4
    AItsuki  
       226 天前   ❤️ 1
    你删了没啥影响的,debug.keystore 每次运行都会给你重新生成一个,所以 sha1 也会一直变,你要将它拷贝出来放到项目目录中,然后配置下 debug 签名就行了。
    至于命令就是 `keytool -list -v -keystore debug.keystore` 没错,可能是不需要.\这个路径?
    tmtstudio
        5
    tmtstudio  
       225 天前
    自己生成一个签名,在 build.gradle 里指定为 debug 的签名不就好了
    AoEiuV020
        6
    AoEiuV020  
       225 天前   ❤️ 2
    应用模块有个任务叫 signReport 可以打印当前的 debug 和 release 签名指纹,包括 sha1 ,
    另外我一般都是配置 debug 和 release 相同证书,以便用 debug 包覆盖 release 包调试,
    unco020511
        7
    unco020511  
       225 天前   ❤️ 1
    可以手动指定 debug 的签名啊,指定一个自己的签名呀
    gtanyin
        8
    gtanyin  
       225 天前
    windows 电脑吗?直接点开下面的 terminal ,输入 gradlew.bat app:signingReport
    但如果使用系统默认的证书,每台电脑都是不一样的,建议自己生成一个
    Features
        9
    Features  
    OP
       225 天前
    @learningman 一些第三方应用集成的时候要填写
    Features
        10
    Features  
    OP
       225 天前
    @AItsuki 尝试去掉 ./,也不行
    有没有可能是我系统的 JDK 和 AS 内部的 JDK 版本不一致导致的?
    jeepc
        11
    jeepc  
       225 天前
    日志都不看的吗,keystore 格式不对( Invalid keystore format ),可能是版本不兼容,往这个方向去排查
    Features
        12
    Features  
    OP
       225 天前
    @gtanyin
    @AoEiuV020
    谢谢,很管用
    Features
        13
    Features  
    OP
       225 天前
    @jeepc 看了,就是不知道咋回事啊
    是系统的 JDK 和 AS 的 JDK 版本不一致吗?
    jeepc
        14
    jeepc  
       225 天前
    @Features 我好久没搞 android 了,你直接 google 这个报错看看
    learningman
        15
    learningman  
       225 天前
    或者你自己签一个证书,用 signingConfig 指定给 debug 类型的 buildType 也行
    Features
        16
    Features  
    OP
       225 天前
    @learningman 谢谢,搞定了,自己签了一个证书,原来有点搞不明白 gradle 的配置
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1038 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 21:52 · PVG 05:52 · LAX 14:52 · JFK 17:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.