0

タイトルがよく書かれていないことは承知していますが、私のケースはそれと同じくらい複雑です! ここでこのケースを検索しましたが、他の同様の質問は私のものとはまったく異なります。

これが私の問題です:

  • 「assets」フォルダーに保存されているコンテンツ (テキスト、画像などの raw 形式) を表示する Android プログラムを作成しました。ここで、このアプリを Windows アプリケーション (これも私が作成) とともにエンド ユーザーに配信したいと考えています。エンド ユーザーは、apk ファイルの "assets" フォルダーにコンテンツを追加し、変更された apk を目的の名前で出力できます (電話)。

これを行うための最良の解決策は何ですか?また、どのツールとコマンドを使用する必要がありますか? つまり、どのツール (aapt、jarsigner など) をソフトウェアに含める必要があり、これを行うためにソフトウェアでどのコマンドを起動する必要があるのでしょうか?

私のケースに関する詳細情報:

  • 私のユーザーは上級者ではなく、Android プログラミングと apk の変更について何も知らないため、クライアント Windows アプリケーションのみを使用してもらいたいと考えています。
  • クライアントのマシンでJDK、JREなどを使用したくありません。
  • 変更プロセスには、AndroidManifest.xmldrawable\icon.pngを置き換え、いくつかのファイルを assets フォルダーに追加することが含まれます。
  • キーストア ファイルと署名されていない元の apk ファイルを、プロセスの最後に署名されるソフトウェアと共に配布します。

PS: OK、数時間後、9 つのステップでほぼ解決策を見つけ、最終的なカスタム署名付き zip 整列 apk ファイルを取得し、エラーなしでデバイスにインストールしました! しかし、問題は次のとおりです。ユーザーが作成する apk ファイルはすべて同じパッケージ名 (com.MyName.MyApp) を持ち、誰かがそれらを 2 つ以上携帯電話にインストールすると問題が発生します。この問題については、「aapt --rename-manifest-package」を試す必要がありますか? そしてそれをどのように使用するのですか?

4

1 に答える 1

4

私は最終的にこの実用的な解決策に行き着きました。興味のある人のためにここに置きます。

1-「original.apk」(source.apk)を一時フォルダー(つまり、TempFolder)に抽出します

2-ユーザーが生成したファイルをTempFolderの下の「assets」フォルダーと「res\drawable」フォルダーに配置します

3- AndroidManifest.xml を生成し、TempFolder に入れる

4- 次のコマンドを実行します: aapt package -f -M "PathToManifest" -S "PathToResFolder" -I android.jar -F "NearlyFinal.apk" -A "PathToAssetsFolder"

5- 「classes.dex」を NearlyFinal.apk が存在するフォルダーにコピーします。

6- 次のコマンドを実行します: aapt add -f NearlyFinal.apk classes.dex jad.properties

7- apk ファイルに署名: jarsigner -storepass [keystorePass] -keystore KeyStoreFile.key NearlyFinal.apk [KeyStoreName]

8- zipalign apk ファイル: zipalign 4 NearlyFinal.apk "Final.apk"

9-ユーザーの設定に従って、Final.apkの名前を変更して移動します。

終了

于 2012-08-29T15:28:52.617 に答える