首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在命令行运行PEPK应用程序签名工具时出错(java -jar pepk.jar)

在命令行运行PEPK应用程序签名工具时出错(java -jar pepk.jar)
EN

Stack Overflow用户
提问于 2018-09-11 14:23:18
回答 6查看 13.3K关注 0票数 14

我正在获取输出:

错误:空

在命令中(在命令行中执行):

java输出密钥--keystore=my.keystore -jar =x-- pepk.jar =my.output --encryptionkey=1243

有谁知道为什么或者如何解决这个问题?

"my.keystore“文件存在,并且是一个密钥库。别名是正确的,"my.output“文件不存在。我在上面的示例中更改了加密密钥值,但是无论我使用什么值,我总是得到相同的输出。

我尝试用双引号将keystore和输出值引起来,并(用引号)提供keystore文件和输出文件的完整路径。仍然是相同的错误输出。之所以要执行jar,是因为如果缺少某些东西,我会显示用法帮助。我还尝试在不同的目录中运行该命令,并确保输出目录中的权限是正确的。

我使用的是java版本:

java版本"9“

(TM) SE运行时环境(build 9+181) Java HotSpot(TM) 64位服务器VM (build 9+181,混合模式)

在Windows10上。(我已经尝试了/和路径)。在我的应用程序的Play Store上的应用程序签名页面上发布此问题的同一天,下载了pepk.jar。

更新,自2018年9月17日起下载新版本:

按照Pierre的建议下载pepk.jar的新版本后,现在的输出是:

Error: Unable to export or encrypt the private key
java.lang.NullPointerException
at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.loadKeystore(KeystoreHelper.java:45)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getPrivateKey(KeystoreHelper.java:38)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.java:114)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEncryptedPrivateKeyTool.java:79)

通过使用keytool -list -v -keystore,我仔细检查了密钥库,它包含一个私钥。

EN

回答 6

Stack Overflow用户

发布于 2018-09-13 17:40:38

您至少有Java版本8(JDK 1.8)来运行以下语法:

java -jar PATH_TO_PEPK --keystore=PATH_TO_KEYSTORE --alias=ALIAS_YOU_USE_TO_SIGN_APK --output=PATH_TO_OUTPUT_FILE --encryptionkey=GOOGLE_ENCRYPTION_KEY

图例:

  • PATH_TO_PEPK =你下载的pepk.jar的路径,可能类似于Windows的C:\Users\YourName\Downloads\pepk.jar users.
  • PATH_TO_KEYSTORE =密钥库的路径,你可以用它来签署你的发布APK。可以是*.keystore*.jks类型的文件或不带扩展名的文件。例如C:\Android\mykeystore或C:\Android\mykeystore.keystore.
  • ALIAS_YOU_USE_TO_SIGN_APK =您用来签署版本的别名的名称APK.
  • PATH_TO_OUTPUT_FILE =带有.pem扩展名的输出文件的路径,例如C:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY =此加密密钥应该始终相同。您可以在App签名页面找到它,复制并粘贴它。格式应为: eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

示例:

java -jar "C:\Users\YourName\Downloads\pepk.jar"
--keystore="C:\Android\mykeystore" --alias=myalias --output="C:\Android\private_key.pem" --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

在终端中输入命令后,您需要提供以下内容:

  1. 密钥库密码
  2. 别名密码

如果一切正常,您现在将在PATH_TO_OUTPUT_FILE文件夹中有一个名为private_key.pem.的文件

更多资源:

票数 21
EN

Stack Overflow用户

发布于 2018-10-15 08:09:37

我最终通过使用标准的Windows (10)命令提示符(即"cmd“)解决了这个问题。System.getConsole似乎为cmd返回了一个非空值。

我还没有找到任何关于mingw64 (我通常在Windows上使用的命令提示符)发生了什么以及为什么System.getConsole没有被设置的信息。

票数 11
EN

Stack Overflow用户

发布于 2020-04-16 22:18:54

我真的很感谢@droidBomb在之前的回答中给出的回应。

xamarin Android的解决方案略有不同。必需的标志

--密钥库包含export(Eg:C:\Users\YourName\Downloads\abc.keystore)“私钥的密钥库路径

--私钥在密钥库中的别名(例如:upload)

--encryptionkey用于加密私钥的公钥。这将是公钥的十六进制编码字节。公钥是一个4字节的标识,后跟一个64字节的P256点。(例如: eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a)

--输出加密私有key.(Eg:C:\Users\YourName\Downloads\private_key.pem)的输出文件

将在输出路径中生成相应的pem文件

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52269806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档