【问题标题】:How can I find the version number of an iPhone app from the IPA?如何从 IPA 中找到 iPhone 应用程序的版本号?
【发布时间】:2012-07-03 16:05:10
【问题描述】:

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

注意 - 我不是要从应用程序内的代码中找到它;我打开了一个终端并构建了 IPA 文件,我想知道要在 IPA 文件中查找什么。

【问题讨论】:

  • tar -zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil -convert xml1 -r -o - -- - | grep -A 1 CFBundleShortVersion
  • tar -zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil -convert xml1 -r -o - -- - | grep -A 1 CFBundleVersion

标签: iphone ios versioning


【解决方案1】:

从您的终端执行以下操作

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

【讨论】:

  • 我可以使用这些命令并将其写入工具并且工具只是检查 minimumOSVersion 吗?
【解决方案2】:

有比 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)
【解决方案3】:
  1. 解压你的ipa文件

    unzip YourIPAFile.ipa
    
  2. 按照 plistBuddy 命令打印 Bundle Version

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

    CFBundleVersion = 1.0

  3. 按照 plistBuddy 命令打印 BundleVersion 字符串

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

    CFBundleShortVersionString = 1.0

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 就是这样。您可以像解压缩 zip 文件一样解压缩 ipa 文件。
    • 不建议尝试重新压缩它然后使用它,我认为它不会是代码签名的,所以不会在设备上运行。
    • 您可以在 ipa 文件的副本上执行此操作。
    • 嗯,是的,我只是说,别费心重新拉上拉链哈哈哈。
    【解决方案5】:

    我更喜欢使用 ProvisionQL。 https://github.com/ealeksandrov/ProvisionQL 它提供了 IPA 文件的快速查看(用两根手指触摸 IPA 文件并单击快速查看)。它显示以下信息:名称、版本、捆绑包 ID、设备系列、配置信息、证书、分发配置文件、权利等。

    【讨论】:

      【解决方案6】:

      您可以在不写入和删除文件的情况下执行此操作,方法是使用 tar 的功能提取单个文件,然后将结果流式传输到标准输出并将其通过管道传输到 plutil 命令(pl=>属性列表)。额外的奖励,将其传递给 grep,查找字符串“Version”,仅显示找到的模式之后的一行。

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

      tar -zxvOf YourIPAFile.ipa Payload/YourAppName.app/Info.plist | plutil -convert xml1 -r -o - -- - | grep -A 1 个版本

      输出是:

      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>
      

      或者更重要的一点:

      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>
      

      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>
      

      【讨论】:

      • 最佳答案。对于那些不确定 YourAppName.app 是什么的人 - 只需将您的 .ipa 重命名为 .zip 然后解压缩即可。 Payload中的任何内容都是应用程序的名称?
      【解决方案7】:

      如果您可以在 QuickLook 中查看详细信息,则更简单且更好的方法。

      现在有一个用于快速查看的插件,可以为您提供许多详细信息。

      您必须安装homebrew

      链接到 quicklook 插件here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 2011-07-03
        • 1970-01-01
        • 2020-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多