我们正在尝试一种新的为应用程序指定版本号的方法。我想确认我们构建的IPA文件具有我们想要的版本号。如何从IPA文件中获取版本号?
注意 - 我不是在寻找从应用程序内部代码查找版本号的方法;我已经打开了一个终端并构建了IPA文件,我想知道在IPA文件内部应该寻找什么。
我们正在尝试一种新的为应用程序指定版本号的方法。我想确认我们构建的IPA文件具有我们想要的版本号。如何从IPA文件中获取版本号?
注意 - 我不是在寻找从应用程序内部代码查找版本号的方法;我已经打开了一个终端并构建了IPA文件,我想知道在IPA文件内部应该寻找什么。
从终端执行以下操作
//Unzip the file
unzip YourIPAFile.ipa
//Open payload folder
cd Payload
//Open your .app file
cd yourApp.app
//Open the plist file
open Info.plist
你可以在 Bundle version key 下找到版本号 有比PlistBuddy和grep更好的方法:
unzip -d unzipped-ipa MyApp.ipa
defaults read "$(pwd)/MyApp.app/Contents/Info.plist" CFBundleVersion
rm -rf unzipped-ipa
值得注意的是使用defaults read
需要提供您应用程序的绝对路径。
buildNumber=$(defaults read "$(pwd)/MyApp.app/Contents/Info.plist" CFBundleVersion)
- EricSUnzip your ipa file
unzip YourIPAFile.ipa
Following plistBuddy command prints Bundle Version
/usr/libexec/PlistBuddy -c print Payload/NAME.app/Info.plist | grep CFBundleVersion
CFBundleVersion = 1.0
Following plistBuddy command prints BundleVersion String
/usr/libexec/PlistBuddy -c print Payload/NAME.app/Info.plist | grep CFBundleShortVersionString
CFBundleShortVersionString = 1.0
它在IPA/payload/NAME.app/Info.plist中。
您可以使用tar的功能提取单个文件,然后将结果流式传输到标准输出并将其导入plutil命令(pl=>属性列表),而无需编写和删除文件。额外的奖励,将其管道传输到grep,查找字符串“Version”,只显示找到模式后的一行。
在下面的命令中,用您想要检查的ipa文件的名称替换YourIPAFile.ipa,并用Plist.info文件中捆绑可执行文件的名称YourAppName.app进行替换。对我来说,使用flutter时,这两个值是相同的“Runner”,但本质上是tar文件中info.plist文件所在的目录。
tar -zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil -convert xml1 -r -o - -- - | grep -A 1 Version
输出为:
x Payload/YourAppName.app/Info.plist
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
--
<key>CFBundleShortVersionString</key>
<string>1.0.5</string>
--
<key>CFBundleVersion</key>
<string>1</string>
--
<key>DTPlatformVersion</key>
<string>14.0</string>
--
<key>MinimumOSVersion</key>
<string>9.0</string>
更确切地说:
该命令用于提取应用程序的版本号。请按照上述格式输入命令,并将YourIPAFile.ipa替换为您的ipa文件名,YourAppName.app替换为您的应用程序名称。tar -zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil -convert xml1 -r -o - -- - | grep -A 1 CFBundleVersion
x Payload/YourAppName.app/Info.plist
<key>CFBundleVersion</key>
<string>1</string>
或者
使用以下命令将IPA文件中的Info.plist文件提取出来,并转换为可读的xml格式,然后查找应用程序版本号:
tar -zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil -convert xml1 -r -o - -- - | grep -A 1 CFBundleShortVersion
x Payload/YourAppName.app/Info.plist
<key>CFBundleShortVersionString</key>
<string>1.0.5</string>
我更喜欢使用ProvisionQL。 https://github.com/ealeksandrov/ProvisionQL 它可以快速预览IPA文件(用两个手指点击IPA文件并在快速查看中单击)。 它显示的信息包括:名称,版本,包ID,设备系列,配置信息,证书,分发配置文件,授权和更多。