猿问

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

我得到输出:


错误:空


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


java -jar pepk.jar --keystore=my.keystore --alias=x --output=my.output --encryptionkey=1243


任何人知道为什么或如何解决它?


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


我试过双引号密钥库和输出值,并提供(带引号)密钥库文件和输出文件的完整路径。还是一样的错误输出。jar 正在执行,因为如果缺少某些内容,我会显示使用帮助。我还尝试在不同目录中运行该命令并确保输出目录中的权限正确。


我正在使用 java 版本:


java version "9" Java(TM) SE Runtime Environment (build 9+181) Java HotSpot(TM) 64-Bit Server VM (build 9+181,混合模式)


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


更新,自 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 仔细检查了密钥库,它包含一个私钥。


MMTTMM
浏览 1313回答 3
3回答

海绵宝宝撒

我终于通过使用标准的 Windows (10) 命令提示符(即“cmd”)解决了这个问题。System.getConsole 似乎正在为 cmd 返回一个非空值。我无法找到有关 mingw64(我通常在 Windows 上使用的命令提示符)发生的情况以及为什么没有设置 System.getConsole 的任何信息。

炎炎设计

我非常感谢@droidBomb 在之前的回答中给出的回应。xamarin Android 的解决方案略有不同。必需的标志--keystore 包含要导出的私钥的密钥库的路径(例如:C:\Users\YourName\Downloads\abc.keystore)"--alias 密钥库中私钥的别名(例如:上传)--encryptionkey 用于加密私钥的公钥。这将是公钥的十六进制编码字节。公开密钥是一个4字节的身份随后是64字节P256点(例如:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a)。--output 用于输出加密私钥的文件。(例如:C:\Users\YourName\Downloads\private_key.pem)打开命令提示符从您的应用程序的 Google 控制台下载 pepk 文件。准备如下命令Java的罐子 “C:\ Users \用户YOURNAME \下载\ pepk.jar” --keystore = “C:\ Users \用户YOURNAME \下载\ upload.keystore” --alias = “上传” --encryptionkey = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a --output ="C:\用户\你的名字\下载\private_key.pem"将在输出路径生成相应的 pem 文件

慕容3067478

您至少有 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。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.pemGOOGLE_ENCRYPTION_KEY = 此加密密钥应始终相同。您可以在 App Signing 页面中找到它,复制并粘贴它。应该是这种形式:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a59b3ef27558a59b3ef27558a59b3ef9d616b3e6d628d68d6b38e6d例子:java -jar "C:\Users\YourName\Downloads\pepk.jar"--keystore="C:\Android\mykeystore" --alias=myalias --output="C:\Android\private_key.pem" --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a在终端中输入命令后,您需要提供以下信息:密钥库密码别名密码如果一切顺利,您现在将在PATH_TO_OUTPUT_FILE文件夹中拥有一个名为private_key.pem.
随时随地看视频慕课网APP

相关分类

Java
我要回答