10

Androidアプリケーション(APKファイル)を公開するために、いくつかの手順でユーザーをガイドするソフトウェアを作成しています。

私がこれを行っている方法は、APK ファイルが既にコンパイルされていることです。パッケージ内の XML ファイルを置き換えるだけで、アプリケーションの動作が変更されます。今の私の大きな問題は、apk ファイルを解凍し、小さなテキスト編集を行ってから再度パックすると、署名が破損し、アプリケーションがどのデバイスでも実行できなくなり、署名が正しくないというメッセージが表示されることです。

どうすればこれを解決できますか? APK を安全に開き、テキスト ファイルに何かを書き込んで、もう一度閉じたいと思います。この操作は (ユーザーがアプリケーションを購入した後に) ユーザーのコンピューターで実行されることに注意してください。そのため、JDK のような特別な要件のないコマンドライン ツールを探しています。

何か助けはありますか?

4

3 に答える 3

12

OK、私は最高の「テスト済み」ソリューションに到達しました。他の開発者がグーグルで時間を節約するために、ここに投稿しています。唯一の欠点は、残念ながら、顧客のマシンに JDK をインストールする必要があることです。その理由は、JDK に依存せずに純粋に Windows で動作する apk 署名ツールが見つからなかったためです。

私は Air を使用して Android アプリケーションを作成しているので、これで作業が簡単になります。すべての air ファイルはリソース アセットとして扱われます。APK アーカイブ ファイルを準備します。

変更の準備ができたら、「assets」という名前の一時フォルダーに入れます。7-zip コマンド ライン ツール (無料: http://sourceforge.net/projects/sevenzip/ ) を使用して、apk の内容を更新します。apk で動作させるには、apk の拡張子の名前を zip に変更する必要があります。心配する必要はありません。後で変更します。

.bat ファイルから (またはコマンド プロンプトで直接)、apk ファイル (zip 拡張子) と assets フォルダーの両方を含む場所から、次のように呼び出します: 7za u APK-file.zip assets

これで apk ファイルが更新されました。名前を .apk 拡張子に戻します

ここでhttps://code.google.com/p/signapk/から signAPK ツールを使用します。これが JDK のインストールを必要とする唯一のステップであることに注意してください。また、キー ファイルの準備ができていることも前提としています (パッケージに含まれているダミー ファイルを置き換えます)。ファイルの内容を抽出して呼び出します: java -jar signapk.jar key.x509.pem key.pk8 [android_app].apk [signed_android_app].apk

最後に、署名済み apk ファイルのサイズが劇的に増加することがあります。したがって、Android の zipAlign ツールを使用する必要があります: (くそー、新しいユーザーは最大 2 つのハイパーリンクしか投稿できないため、リンクを投稿できません) コマンドを呼び出します: zipAlign -c 4 [signed_android_app].apk

そして出来上がり!それが私が取っているルートです。

誰かが JDK に依存せずに署名プロセスを行う方法を見つけた場合 (キー ファイルの準備ができていると仮定して)、共有してください。

于 2012-04-15T11:37:51.417 に答える
2

どうすればこれを解決できますか?

あなたはそうしない。APK ファイルを変更する場合は、再署名する必要があります。

于 2012-04-14T23:38:12.857 に答える
1

Androidのapkファイルに署名する必要があります。その署名は、apkのコンテンツが最初に公開されたものから変更されていないことを証明します。(これはまさにあなたがしていることです。)同時に、署名は、作者が誰であるかを証明します。

したがって、通常の署名付きapkファイルでは:

  1. あなたは作者が誰であるか知っています。(たとえそれが人間としてあなたが理解できるものでなくても。)
  2. あなたは内容が作者によってそこに置かれ、それ以来修正されていないことを知っています。

これはAndroidに組み込まれている重要なセキュリティ対策であり、非常に正当な理由があり、克服することはできません。ウイルスなどが無実のapkファイルに埋め込まれるのを防ぎます。

于 2012-04-15T02:24:33.787 に答える