我们正在尝试一种为我们的应用指定版本号的新方法。我希望能够检查我们正在构建的IPA是否具有我们想要的版本号。如何从IPA中获取版本号?
注意 - 我不是要求从应用程序内部的代码中找到它的方法;我打开了一个终端并构建了IPA文件,我想知道在IPA文件中要查找什么。
答案 0 :(得分:36)
从您的终端执行以下操作
//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
下找到该版本答案 1 :(得分:9)
比PlistBuddy和grep更好的方式:
unzip -d ipa YourIPA.ipa
defaults read `pwd`/ipa/Payload/YourAppName.app/Info CFBundleVersion
rm -rf ipa
值得注意的是,使用defaults read
需要您应用的绝对路径。
答案 2 :(得分:4)
解压缩您的ipa文件
unzip YourIPAFile.ipa
以下plistBuddy命令打印Bundle Version
/usr/libexec/PlistBuddy -c print Payload/NAME.app/Info.plist | grep CFBundleVersion
CFBundleVersion = 1.0
以下plistBuddy命令打印BundleVersion String
/usr/libexec/PlistBuddy -c print Payload/NAME.app/Info.plist | grep CFBundleShortVersionString
CFBundleShortVersionString = 1.0
答案 3 :(得分:3)
它在IPA / payload / NAME.app / Info.plist
中答案 4 :(得分:0)
我更喜欢使用ProvisionQL。 https://github.com/ealeksandrov/ProvisionQL 它提供了IPA文件的快速查看(用两根手指触摸IPA文件并单击“快速查看”)。它显示以下信息:名称,版本,软件包ID,设备系列,配置信息,证书,分发配置文件,权利等。
答案 5 :(得分:0)
答案 6 :(得分:0)
您可以通过使用tar的功能来提取单个文件,然后将结果流式传输到标准输出并将其输送到plutil命令(pl =>属性列表)中,而无需写入和删除文件。额外的奖励,用管道将其传送到grep,查找仅显示找到的模式后一行的字符串“ Version”。
在下面的命令中,将YourIPAFile.ipa替换为要检查的ipa文件的名称,并将YourAppName.app替换为Plist.info文件中的可执行文件包的名称。对我而言,使用flutter时,这两个值是相同的“ Runner”,但本质上是info.plist文件所在的tar文件中的目录。
tar -zxvOf YourIPAFile.ipa有效负载/YourAppName.app/Info.plist | plutil-转换xml1 -r -o---| grep -A 1版本
输出为:
private static String computeValue(int kind, String image) {...}
或更重要的一点:
tar -zxvOf YourIPAFile.ipa有效负载/YourAppName.app/Info.plist | plutil-转换xml1 -r -o---| grep -A 1 CFBundleVersion
private NewToken(int kind, String image){
this.kind = kind;
this.image = image;
this.value = computeValue( kind, image );
}
或
tar -zxvOf YourIPAFile.ipa有效负载/YourAppName.app/Info.plist | plutil-转换xml1 -r -o---| grep -A 1 CFBundleShortVersion
//[...]
var x = document.getElementById("url1").href;
if (x === "url1") {
document.getElementById("url1").href = "url2";
}
//[...]