如何从IPA中找到iPhone应用程序的版本号?

如何从IPA中找到iPhone应用程序的版本号?,iphone,ios,versioning,Iphone,Ios,Versioning,我们正在尝试一种为我们的应用指定版本号的新方法。我希望能够检查我们正在构建的IPA是否有我们想要的版本号。如何从IPA中获取版本号 注意-我不是在问如何从应用程序内部的代码中找到它;我打开了一个终端,生成了IPA文件,我想知道在IPA文件中查找什么。它在IPA/payload/NAME.app/Info.plist中。从终端执行以下操作 //Unzip the file unzip YourIPAFile.ipa //Open payload folder c

我们正在尝试一种为我们的应用指定版本号的新方法。我希望能够检查我们正在构建的IPA是否有我们想要的版本号。如何从IPA中获取版本号


注意-我不是在问如何从应用程序内部的代码中找到它;我打开了一个终端,生成了IPA文件,我想知道在IPA文件中查找什么。

它在IPA/payload/NAME.app/Info.plist中。

从终端执行以下操作

    //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下找到该版本

  • 解压缩ipa文件

    unzip YourIPAFile.ipa
    
  • 以下plistBuddy命令打印捆绑包版本

    /usr/libexec/PlistBuddy -c print Payload/NAME.app/Info.plist | grep CFBundleVersion
    
    CbundLeverVersion=1.0

  • 以下plistBuddy命令打印BundleVersion字符串

    /usr/libexec/PlistBuddy -c print Payload/NAME.app/Info.plist | grep CFBundleShortVersionString
    
    CbundleShortVersionString=1.0


  • 有比PlistBuddy和grep更好的方法:

    unzip -d ipa YourIPA.ipa
    defaults read `pwd`/ipa/Payload/YourAppName.app/Info CFBundleVersion 
    rm -rf ipa
    

    值得注意的是,使用默认读取需要应用程序的绝对路径。

    我更喜欢使用ProvisionQL。
    它提供了IPA文件的快速查看(用两个手指触摸IPA文件并在快速查看中单击)。它显示的信息包括:名称、版本、捆绑id、设备系列、资源调配信息、证书、分发配置文件、权利等。

    如果您可以在QuickLook中查看详细信息,则更简单、更好

    现在有一个插件可以快速查看,它提供了许多详细信息

    你一定已经安装了


    链接到quicklook插件。

    您可以使用tar的功能提取单个文件,然后将结果流式传输到标准输出,并将其传输到plutil命令(pl=>属性列表),而无需写入和删除文件。额外的好处是,通过管道将其传递给grep,查找字符串“Version”,该字符串只显示找到的模式后的一行

    在下面的命令中,将YourIPAFile.ipa替换为要检查的ipa文件的名称,将YourAppName.app替换为Plist.info文件中的捆绑可执行文件的名称。对于我来说,使用flatter,这两个值是相同的“Runner”,但它实际上是tar文件中info.plist文件所在的目录


    tar-zxvOf yourpafile.ipa Payload/yourpappname.app/Info.plist | plutil-convert xml1-r-o----| grep-a1版本

    输出为:

    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>
    
    x有效负载/YourAppName.app/Info.plist
    CbundleInfo字典版本
    6
    --
    CbundleShortVersionString
    1.0.5
    --
    循环流化床锅炉
    1.
    --
    数据平台版本
    14
    --
    最小渗透压
    9
    
    或者更切题地说:


    tar-zxvOf yourpafile.ipa Payload/yourpappname.app/Info.plist | plutil-convert xml1-r-o----| grep-A 1 CFBundleVersion

    x有效负载/YourAppName.app/Info.plist
    循环流化床锅炉
    1.
    


    tar-zxvOf yourpafile.ipa Payload/yourpappname.app/Info.plist | plutil-convert xml1-r-o----| grep-A 1 CFBundleShortVersion

    x有效负载/YourAppName.app/Info.plist
    CbundleShortVersionString
    1.0.5
    
    就是这样。你可以像解压zip文件一样解压ipa文件。以后尝试重新解压然后再使用它是不明智的,我认为它不会是代码签名的,所以不会在设备上运行。你可以在ipa文件的副本上这样做。是的,我只是说,不用麻烦重新压缩了哈哈哈。我能用这些命令把它写进一个工具中吗?工具只是检查一下最小版本吗?tar-zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil-convert xml1-r-o----| grep-a1 CFBundleShortVersiontar-zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil-convertxml1-r-o----| grep-a1是最好的答案。对于那些不确定你的appname.app是什么的人,只需将你的.ipa重命名为.zip,然后解压缩即可。负载中的任何内容都是应用程序的名称
    x Payload/YourAppName.app/Info.plist
            <key>CFBundleVersion</key>
            <string>1</string>
    
    x Payload/YourAppName.app/Info.plist
            <key>CFBundleShortVersionString</key>
            <string>1.0.5</string>