出力を取得しています:
エラー:null
コマンドから(コマンドラインで実行):
Java -jar pepk.jar --keystore = my.keystore --alias = x --output = my.output --encryptionkey = 1243
なぜ誰がそれを解決するのか、なぜそれを解決するか
「my.keystore」ファイルが存在し、これはキーストアです。エイリアスは正しく、「my.output」ファイルは存在しません。上記の例で暗号化キーの値を変更しましたが、どの値を使用しても、常に同じ出力が得られます。
キーストアと出力値を二重引用符で囲み、キーストアファイルと出力ファイルへの完全なパスを(引用符で)提供しました。それでも同じエラー出力。何かが足りない場合、使用方法のヘルプが表示されるため、jarが実行されています。また、別のディレクトリでコマンドを実行して、出力ディレクトリの権限が正しいことを確認しました。
私はJavaバージョンを使用しています:
Javaバージョン "9" Java(TM)SEランタイム環境(ビルド9 + 181)Java HotSpot(TM)64ビットサーバーVM(ビルド9+ 181、混合モード)
windows 10(/との両方でパスを試しました)。 pepk.jarは、この質問が私のアプリのPlayストアのアプリ署名ページから投稿されたのと同じ日にダウンロードされました。
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を使用して秘密鍵が含まれています。
構文を実行するには、少なくとも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
伝説:
*.keystore
または*.jks
のファイル、または拡張子なしのファイルである可能性があります。 C:\ Android\mykeystoreまたはC:\ Android\mykeystore.keystoreのようなもの。.pem
拡張子が付いた出力ファイルのパスC:\ Android\private_key.pemなど=例:
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.
というファイルができます。
その他のリソース:
私はようやく標準のWindows(10)コマンドプロンプト、つまり「cmd」を使用してこの問題を回避しました。 System.getConsoleがcmdに対してnull以外の値を返しているようです。
Mingw64で何が起こっているか(Windowsで通常使用するコマンドプロンプト)、およびSystem.getConsoleが設定されていない理由に関する情報を見つけることができませんでした。
Gitbash/mingw64を使用してWindows 10で試したときも同じ問題がありました。 Powershellを使用すると、魅力のように動作しました。
キーストアのパスワードとキーは、コマンドラインで要求されます。
問題は、あなたのJava環境で使用可能なコンソールがない、つまりSystem.console()
がnullを返すことです。
Java環境がこれを行う原因を教えていただければ、私たちはあなたのユースケースの解決策を見つけようとするかもしれません。