出于调试原因,我需要安装更多应用程序实例。我发现应用程序标识符位于APK文件中的二进制AndroidManifest.xml中,因此我不必在项目级别混淆具有不良后果的应用程序标识符。
请注意,stackoverflow上有类似的问题,但据我所知,没有人能回答这个问题。
重命名应该像运行以下命令一样简单:(其中apk_dir
是提取原始APK的目录)
aapt package -v --rename-manifest-package com.xyz.abc apk_dir
但是,它仅枚举apk
目录中的所有资源。没有任何变化,也没有打印错误信息。这非常令人困惑 - 当我指示一个工具进行无法进行的更改时,它应该让我清楚地知道它没有完成。
我不想使用的第三方工具很少,因为官方appt
工具应该能够更改软件包名称(并且因为其他工具存在问题)。它似乎是一个强大的工具,但它没有被记录。然而,它打印的帮助看起来很有希望:
--rename-manifest-package
Rewrite the manifest so that its package name is the package name
given here. Relative class names (for example .Foo) will be
changed to absolute names with the old package so that the code
does not need to change.
AndroidManifest.xml有两种格式也很不幸。除了预期的那个之外,还有二进制(已编译)清单XML文件,该文件被打包到APK文件中。这并不能使阅读文档更容易。
答案 0 :(得分:0)
If you're using ANT-based builds, the Android SDK Tools 24.3 (and perhaps before) "aapt" task takes a "manifestPackage=<your_package>" argument and you can use this to repackage your APK. Copy the "-package-resources" target from the SDK's ant build.xml to your custom_rules.xml and add the additional argument.
答案 1 :(得分:0)
--rename-manifest-package
在apk(而不是源(文本)AndroidManifest.xml)中更改(二进制)AndroidManifest.xml中的清单包名称。
您可以使用aapt (d)ump
检查打包(二进制)版本。例如
aapt d xmltree myapp.apk AndroidManifest.xml
--rename-manifest-package
首先使用AndroidManifest.xml中的清单包将所有相对名称完整为绝对名称,然后通过命令行将清单包重命名为新名称。
我仅在aapt (p)ackage
命令中添加AndroidManifest.xml时才使用它。例如
aapt p -f --rename-manifest-package com.mynewpackagename -M AndroidManifest.xml -F myapp.apk -I android.jar -S res
我建议:使用AndroidManifest.xml打包具有活动相对路径的应用程序,而不重命名,并使用aapt dump
检查apk。
然后,将其打包并进行重命名,然后使用aapt dump
确认已更改的内容。
顺便说一句,aapt (d)ump
的用法/帮助不是很清楚。从转储中以上,您可以得出WHAT
表示以下7行之一; asset
表示.apk中的内容,例如AndroidManifest.xml。
aapt d[ump] [--values] [--include-meta-data] WHAT file.{apk} [asset [asset ...]]
strings Print the contents of the resource table string pool in the APK.
badging Print the label and icon for the app declared in APK.
permissions Print the permissions from the APK.
resources Print the resource table from the APK.
configurations Print the configurations in the APK.
xmltree Print the compiled xmls in the given assets.
xmlstrings Print the strings of the given compiled xml assets.