如何使用APKTool增加versionCode?

Ada*_*am 4 android reverse-engineering apktool

我需要增加versionCode签名的APK文件.

我这样做:

  1. apktool d myapk.apk

  2. 打开apktool.yml,增加versionCode和保存

  3. apktool b

  4. jarsignerzipalign

Apk在手机上运行良好,但versionCode没有改变.这是apktool.yml:

version: 2.0.0
apkFileName: iVet.apk
isFrameworkApk: false
usesFramework:
  ids:
  - 1
sdkInfo:
  minSdkVersion: '16'
  targetSdkVersion: '21'
packageInfo:
  forced-package-id: '127'
versionInfo:
  versionCode: '3'
  versionName: '1.1'
compressionType: false
sharedLibrary: false
unknownFiles:
  VERSION: '8'
Run Code Online (Sandbox Code Playgroud)

Cal*_*ton 5

警告:您正在执行的操作将使签名无效.之后你必须重新签名才能安装它,它看起来不像原来的开发者.除了漏洞利用之外,没有办法解决这个问题.

你可以只是把versionCodeAndroidManifest.xml,它会覆盖给予的论点aaptapktool.yml一个警告.我自己也证实了这一点.

示例更改为AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.example.someApp" android:versionCode="12345" android:versionName="1.2.3.4.5">
Run Code Online (Sandbox Code Playgroud)

设置版本信息:https://developer.android.com/tools/publishing/versioning.html#appversioning

aapt如果你改变了命令会是什么样子apktool.yml:

Aug 11, 2015 12:56:52 PM brut.androlib.res.AndrolibResources aaptPackage
INFO: [/var/folders/5m/jph9d7q573b5yl5ybnhhx4000000gn/T/brut_util_Jar_5616282982200298928.tmp, p, -v, --forced-package-id, 127, --min-sdk-version, 5, --version-code, 12345, --version-name, 1.2.3.4.5, -F, /Users/caleb/example/someApp.apk, -0, arsc, -A, /Users/caleb/example/./assets, /Users/caleb/example/./build/apk]
Run Code Online (Sandbox Code Playgroud)

很明显,这些值apktool.yml来自AndroidManifest.xml:https: //github.com/iBotPeaches/Apktool/blob/0370416d9029d01f210556ab3662e3fa0f80c239/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/decoder/XmlPullStreamDecoder.java #L96

由于某种原因,它们不包含在已解码的<manifest>属性中.这可能是一个错误.