web-dev-qa-db-ja.com

APK内のAndroidManifest.xmlのエンコード/デコード

ApkTool を使用してAPKファイル内のAndroidManifest.xmlをデコードしますが、完全に機能しますが、いくつかの変更を適用した後、以前と同じ方法で再度エンコードできますか?たとえば、(私の場合)アプリのラベルを変更します。

23

再度apktoolを使用して、変更したAndroidManifest.xml

まず、APKファイルを逆コンパイルします。

Java -jar apktool.jar decode app.apk app

次に、appディレクトリ内の必要なファイルを変更し、新しいAPKに再コンパイルします。

Java -jar apktool.jar build app app_new.apk

aaptPATH上にあるか、--aaptオプションは、実行可能ファイルの場所を指定します。そうしないと、APKの再構築時にapktoolが失敗します。

注:再構築されたAPKは、署名もzipalignedもなく、再パッケージ化されただけです。新しいAPKの署名と調整の詳細については、 このWebサイト をご覧ください。

36
nif
Use appt for Android-sdk (ex:- /build-tools/27.0.3/aapt )

./aapt d xmltree ./debug.apk  AndroidManifest.xml

N: Android=http://schemas.Android.com/apk/res/Android
  E: manifest (line=1)
    A: Android:versionCode(0x0101021b)=(type 0x10)0x1
    A: Android:versionName(0x0101021c)="1.0" (Raw: "1.0")
    A: package="com.example.activity" (Raw: "com.example.activity")
    E: uses-sdk (line=6)
      A: Android:minSdkVersion(0x0101020c)=(type 0x10)0x8
      A: Android:targetSdkVersion(0x01010270)=(type 0x10)0xf
    E: application (line=8)
      A: Android:label(0x01010001)=@0x7f030000
      A: Android:icon(0x01010002)=@0x7f020000
      E: activity (line=10)
        A: Android:label(0x01010001)=@0x7f030000
        A: Android:name(0x01010003)=".SampleActivity" (Raw: ".SampleActivity")
        E: intent-filter (line=12)
          E: action (line=13)
            A: Android:name(0x01010003)="Android.intent.action.MAIN" (Raw: "Android.intent.action.MAIN")
          E: category (line=14)
            A: Android:name(0x01010003)="Android.intent.category.LAUNCHER" (Raw: "Android.intent.category.LAUNCHER")

このリンクは役立つかもしれません http://elinux.org/Android_aapt

「AXMLPrinter」Googleソースリンク用のもう1つのツール https://code.google.com/archive/p/Android4me/downloads

Java -jar ./AXMLPrinter2.jar ./debug.apk_FILES/AndroidManifest.xml