在APK内编码/解码AndroidManifest.xml

时间:2013-05-27 16:17:19

标签: android android-manifest apk decode encode

我正在使用ApkTool对APK文件中的AndroidManifest.xml进行解码,但它运行得很完美,但是如何再次对其进行编码,就像之前编码一样,应用了一些更改后?例如(在我的情况下)更改应用标签。

2 个答案:

答案 0 :(得分:36)

您可以再次使用apktool创建一个新的APK文件,其中包括您更改的AndroidManifest.xml

首先,反编译APK文件:

java -jar apktool.jar decode app.apk app

然后在app目录中修改所需的文件,并将其重新编译为新的APK:

java -jar apktool.jar build app app_new.apk

aapt必须位于我们的PATH上,或使用--aapt选项指定可执行文件的位置。否则apktool将在重建APK时失败。

注意:重建的APK既未签名也未 zipaligned ,只是重新打包。有关签署和对齐新APK的详细信息,请查看this website

答案 1 :(得分:2)

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源链接https://code.google.com/archive/p/android4me/downloads的另一个工具

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