使用 packageName + versionCode + versionName 重命名 APK 文件

Posted

技术标签:

【中文标题】使用 packageName + versionCode + versionName 重命名 APK 文件【英文标题】:Rename the APK file with its packageName + versionCode + versionName 【发布时间】:2018-04-30 01:50:13 【问题描述】:

我有由它们的 versionCode 命名的 APK 文件(默认策略,APK 是直接从 Google 提取的)。

运行这个命令 -- aapt dump badging apk-name.apk | grep package:\ name -- 获取它的包名、versionCode 和 versionName,新名称中需要这三个。

我们以谷歌地图文件为例。我有这个文件 964100232.apk,如果我运行这个命令--aapt dump badging 964100232.apk | grep package:\ name -- 它给了我这个输出:

包:name='com.google.android.apps.maps' versionCode='964100232' versionName='9.64.1' platformBuildVersionName='8.1.0'

我的地图文件名为 964100232.apk,我需要将其命名为 com.google.android.apps.maps-964100232-9.64.1.apk

我需要一个 Linux 上的命令/脚本,它允许我递归地重命名目录中的所有 APK 文件,但新名称应采用包名-versionCode-versionName 格式。

请帮忙。我主要在 Linux 上需要这个,但 Windows 修复也可以。

谢谢!

【问题讨论】:

您的问题与android,apk,aapt 无关。你只需要重命名通用文件 它必须使用 aapt 工具来获取重命名文件的详细信息。所以,我认为它与aapt有关。我应该更改标签吗? 但是你已经这样做了,对吧?所以现在你不需要了解 aapt 其他任何东西。 好的,编辑问题,添加更多信息,只保留重命名标签。 【参考方案1】:

你可以通过build.gradle文件来命名apk

    buildTypes 
    release 
        lintOptions 
            disable 'MissingTranslation'
        
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        applicationVariants.all  variant ->
            variant.outputs.each  output ->

                def flavor = "Test";
                if (variant.productFlavors.size() > 0)
                    flavor = variant.productFlavors.get(0);

                def finalName = flavor.applicationId + "-" + variant.buildType.name + "-v" + variant.versionName + '-' + variant.versionCode + ".apk";
                output.outputFile = new File(output.outputFile.parent, finalName)

            
        
    

【讨论】:

呃-哦……非常感谢……呃,但是这里不知道 gradle 或 Android Studio……所以,请建议一个 BAT 脚本或 SH 脚本。 不了解BAT脚本或SH脚本。【参考方案2】:

APK 批量重命名工具递归地抓取输入文件夹及其所有子文件夹以查找 Android 包文件 (.apk)。它从找到的 apk 中读取标签和版本信息,并在输出文件夹下为每个 apk 创建一个副本,但使用获取的标签和版本信息............

https://forum.xda-developers.com/t/apk-batch-rename-tool-for-windows-and-linux.841312/

【讨论】:

以上是关于使用 packageName + versionCode + versionName 重命名 APK 文件的主要内容,如果未能解决你的问题,请参考以下文章

$packageName.$activityClass 如何在布局 XML 文件中工作?

在棉花糖中获取前台应用程序的 packageName 延迟 3 秒

如何根据包名packageName获取程序启动的主Activity名称

改变一个apk的packagename的批量生成APK

iis日志字段解析

快速获取App的packageName、Activity小结