使用 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 秒