【问题标题】:Download IPA / APK from Crashlytics从 Crashlytics 下载 IPA / APK
【发布时间】:2018-06-23 06:07:39
【问题描述】:

我正在使用 Crashlytics 分发一个应用程序以进行 Beta 测试。

虽然从 Crashlytics 应用程序在设备上安装应用程序既简单又方便,但我无法弄清楚如何从 Crashlytics 服务器只下载 IPA。

背景:我需要获取 IPA / APK 进行自动化测试。我的测试环境将重新签署 IPA 以便能够将其安装到测试设备,因此采用 Crashlytics 应用程序的方式不起作用。

我需要的是 IPA/APK 的下载链接,因为它曾经在 TestFlight 或 Hockeyapp 中可用。

【问题讨论】:

  • 嗨,Nachi,感谢您使用 Android 电源支持我的事业 :)
  • 查看我的回答,我现在为您提供了一种方法来满足您的要求。
  • @CommaToast 看看我昨天给你的赞成票。您可能还想检查我自己的答案,它提供了类似的方式......
  • 这个问题似乎很有趣,这是否仍然有效:我们可以使用 Crashlytics 文件中的 IPA/APK 将其用作自动化构建吗?

标签: android ios iphone ipa crashlytics


【解决方案1】:

如果您在 iOS 上使用它,您可以启用 设置 > Safari > 高级 > Web 控制台,然后在 iOS 上的安装页面中查看下载链接的 Web 检查器。它看起来像这样(我用 gobbledegook 文本换了一些部分):

<a class="primary-button js-install-button" href="itms-services://?action=download-manifest&amp;url=https%3A%2F%2Fapps.crashlytics.com%2Fprojects%2F2F2F2F2F2FF2F2F2%2Freleases%2F2200806%2Fdownload.plist%3Fdevice_id%2F2F2F2F%26device_token%234JH23L4KH234LK2J34H2LK34H2LK3J4H2LK3JH42L3K4JH23LK4JH2L3K4JH2L3K4JH2LKJ3H4%253D--2KJ3H4LK2J3H4L2KJ3H4LK2J3H4LK23JH4LK2J3H4L%26payload_token%2KL34JH2LK3JH4L2K3J4HL23KJ4HL23JK4" id="most-recent-install">Install</a> 

然后只需复制出 URL 编码的 URL:

https%3A%2F%2Fapps.crashlytics.com%2Fprojects%2F2F2F2F2F2FF2F2F2%2Freleases%2F2200806%2Fdownload.plist%3Fdevice_id%2F2F2F2F%26device_token%234JH23L4KH234LK2J34H2LK34H2LK3J4H2LK3JH42L3K4JH23LK4JH2L3K4JH2L3K4JH2LKJ3H4%253D--2KJ3H4LK2J3H4L2KJ3H4LK2J3H4LK23JH4LK2J3H4L%26payload_token%2KL34JH2LK3JH4L2K3J4HL23KJ4HL23JK4

然后使用 PHP 在命令行上对它进行 urldecode:

php -r "echo urldecode('{PASTE THE ABOVE URL HERE}');"

(确保在 PHP 行周围使用双引号,在 URL 周围使用单引号。)

然后将 URL 解码的结果粘贴到 Mac 上的 Safari 中。您将看到一个 XML 文件;复制下载链接并粘贴到浏览器中。这会将 IPA 下载到您的 Mac:D

【讨论】:

    【解决方案2】:

    在我自己摸索之后,似乎没有任何方法可以从 Crashlytics Beta 中提取 ipa 或 apk。

    我建议使用 JenkinsFastlane 之类的东西来自动化您的构建过程并让它 a) 上传到 Dropbox 或您可以轻松参考的地方 b) 自动上传到 Crashlytics 以进行分发。

    gradle crashlytics plugin 提供了一种方便的方法来执行此操作:

    gradlew assembleDebug crashlyticsUploadDistributionDebug
    

    【讨论】:

    • 虽然不是直接的答案,但这是最可行的方法,因为它是跨平台的,并且如果您已经在使用 CI 服务器构建工件,那么它很容易做到。
    【解决方案3】:

    据我所知,没有直接的方法可以从 Crashlytics 下载 IPA。 但是,如果您确实需要获取文件,则可以完成。

    • 复制 Crashlytics 邮件中安装按钮的链接目标(或者查看源代码并从那里复制,这就是我所做的)
    • 在模拟器中粘贴到 Safari。这将在模拟器中安装 Crashlytics 应用
    • 在模拟器的 Crashlytics 应用中打开安装页面
    • 使用 Mac Safari 检查模拟器(开发 > 模拟器)
    • 复制按钮链接并在 Mac 上的 Safari 中打开 - 就可以了

    当然,作为标准程序,这不是你想做的事情:)
    抱歉,这只是 iOS,所以对我来说没有赏金:(

    【讨论】:

      【解决方案4】:

      我找到了一种在 Android 上构建 APK 的简单方法。请按以下步骤操作:

      1. 在您的设备上安装“Amaze 文件管理器”。免费版就够用了,不需要root设备。
      2. 在左侧菜单中打开“应用管理器”
      3. 按名称查找已安装的版本
      4. 按“三点”选择“备份”
      5. 您会在 storage/emulated/0/app_backup 中找到您的 APK 文件

      【讨论】:

        【解决方案5】:

        这个答案可能为时已晚,并且仅针对 APK 文件,但我确实设法在安装之前确定 Crashlytics 将 APK 存储在哪里。

        在您的设备上安装 Beta/Crashlytics 后,继续下载您的应用程序,但不要安装它 - 只需将其留在屏幕上询问您是否要安装(以防 Beta/Crashlytics 在安装后删除 APK ,但不确定他们是否这样做)

        然后,通过另一台计算机使用 adb,通过打开 shell 并查找所有 APK 文件来识别应用程序的文件名。

        1. 打开命令提示符或终端,并运行 adb devices 以确保您的设备被识别
        2. 识别后,运行 adb shell,然后输入 su 进入超级用户模式
        3. 有 2 种方法 - 您可以搜索所有 APK 文件并使用“find / -iname *.apk”查找与您期望的文件名相似的文件名,或者您可以尝试列出按修改日期排序的文件以查找对于最近修改过的 APK,使用以下命令“ls -nl [directory] ​​| sort -k 8,8n -k 6,6M”,其中 [directory] ​​是您要列出的目录
        4. 记下位置,然后退出 adb,并使用 adb pull 抓取文件 - 在我的情况下,它是“adb pull /data/app/myapplication.apk”

        TL;DR - Beta/Crashlytics 在安装前将您的应用程序的 APK 文件下载到 /data/app/。您可能需要 root 权限才能访问此文件夹。

        希望这会有所帮助!

        【讨论】:

          【解决方案6】:

          这可能会特别帮助那些试图检索 APK 文件的人。

          如果您使用的是 Android,则可以使用 Android Monitor 提取从 Crashlytics Beta 版应用下载的文件。 为此,您必须已安装 Crashlytics Beta 应用程序并已从 Beta 应用程序中下载您的应用程序。 然后,按照以下步骤操作:

          1. 打开 Android 设备监视器
          2. 在左侧的“设备”标签中选择您的设备
          3. 点击右侧的“文件资源管理器”视图
          4. 浏览路径:data/data/io.crash.air/files。 在那里你应该找到你的 .apk 文件
          5. 点击右上角的“从设备中提取文件”按钮。

          非常复杂,但可能是为数不多的提取方法之一。

          另一个想法是在设备尝试下载 APK/IPA 文件时使用 Wireshark 来嗅探流量。这可以在使用模拟器时完成。

          【讨论】:

          • 无法打开 data/data/io.crash.air/files。它只显示一个数据文件夹。无法进入该文件夹
          • @ManojSoundarrajan 您有权访问该文件路径吗?也许尝试在模拟器上运行它?
          【解决方案7】:

          我正在使用 crashlytics 将应用程序分发给测试人员,步骤如下

          1. 按照他们网站上的说明将 crashlytics(添加 fabric+crashlytics)安装到您的代码中。

          2. 现在,归档您的应用程序。(检查配置文件和签名身份,测试人员的 udid 已添加到配置文件中)。

          3. 现在,单击右上角的织物符号,单击其上的分发按钮。

          4. 单击分发后,将显示文本字段和添加按钮以添加测试人员的电子邮件地址。

          5. 添加测试人员电子邮件地址后,单击下一步按钮并继续。

          这会将 ipa 文件的电子邮件发送给测试人员并显示安装它的按钮。 这适用于最新版本的 iOS。

          【讨论】:

          • 这不是问题,这是显而易见的用例。我(和其他一些人)正在寻找的是该应用程序的直接下载链接。如前所述,我不想安装该文件。
          • 哦抱歉,误会了,他们不提供直接下载链接,是的,您可以将您的邮件转发给其他用户,任何人都可以从中下载。如果您真的对以这种方式获取链接感兴趣,我可以说按照 Razvan 在链接stackoverflow.com/questions/26042508/… 上描述的步骤进行 OTA 分发,并自动创建 ipa 使用 jenkins 或制作简单的命令行脚本来创建 ipa 文件,并且只需在终端中点击那个
          • 名为 Buildshake 的应用程序目前正在开发中,它将用于相同的用途(来自 ngeleousera.com
          • 谢谢,但这不是我想要的。我还知道可以提供我需要的其他 Beta 分发平台。但我想知道如何使用 Crashlytics 来做到这一点!
          • 不,他们不允许这样做,实际上他们是通过自己的应用程序安装它,该应用程序首先安装在您的设备上。
          猜你喜欢
          • 2018-02-11
          • 1970-01-01
          • 2016-06-20
          • 1970-01-01
          • 2022-01-16
          • 2012-08-21
          • 2018-05-22
          • 2015-03-05
          • 2017-04-19
          相关资源
          最近更新 更多