Как увеличить versionCode с помощью APKTool?
Мне нужно увеличить versionCode
в подписанном APK-файле.
Я делаю следующее:
apktool d myapk.apk
открыть
apktool.yml
, приращениеversionCode
и сохранитьapktool b
jarsigner
а такжеzipalign
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'
1 ответ
Предупреждение. То, что вы делаете, делает подпись недействительной. Вы должны будете отказаться от этого впоследствии, чтобы установить это, и это не будет похоже на то, как оригинальный разработчик сделал это. Обойти это невозможно, кроме подвигов.
Вы можете просто поставить versionCode
в AndroidManifest.xml
и он переопределит аргументы, данные aapt
от apktool.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">
Настройка информации о версии: https://developer.android.com/tools/publishing/versioning.html
Что за 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]
Ясно, что значения в 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>
приписывать. Это может быть ошибкой.