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

我做以下:

  • apktool d myapk.apk
  • 打开 apktool.yml ,增加 versionCode 并保存
  • apktool b
  • 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'
    

    最佳答案

    警告: 您正在执行的操作将使签名无效。之后你必须辞职才能安装它,它看起来不像原始开发人员所做的那样。没有办法解决这个问题,除了漏洞利用。

    您可以将 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#appversioning

    如果更改 aaptapktool.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> 属性中。这可能是一个错误。

    关于android - 如何使用 APKTool 增加 versionCode?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30774833/

    10-09 00:30