从 Crashlytics 下载 IPA/APK

Download IPA / APK from Crashlytics

我正在使用 Crashlytics 分发用于 Beta 测试的应用程序。

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

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

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

我自己摸索了一下,似乎没有办法从 Crashlytics Beta 中提取 ipa 或 apk。

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

gradle crashlytics plugin 提供了一个方便的方法来做到这一点:

gradlew assembleDebug crashlyticsUploadDistributionDebug

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

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

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

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

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

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

这会将 ipa 文件的电子邮件发送给测试人员并显示安装按钮。 这在 iOS 的最新版本中工作正常。

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

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

当然这不是你想要做的标准程序:)
抱歉,这只是 iOS,所以我没有赏金:(

如果您将它与 iOS 一起使用,您可以启用 设置 > Safari > 高级 > Web 控制台,然后在下载 的网络检查器中查看=29=] 来自 iOS 上的安装页面。它将看起来像这样(我将某些部分换成了 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 文件;复制下载 link 并粘贴到您的浏览器中。这会将 IPA 下载到您的 Mac :D

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

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

  1. 打开Android设备监视器
  2. Select 您的设备位于左侧的 "Devices" 选项卡中
  3. 点击右边的"File Explorer"查看
  4. 通过路径导航:data/data/io.crash.air/files。 在那里你应该找到你的 .apk 文件
  5. 点击右上角的"Pull a file from the device"按钮。

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

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

这个答案可能为时已晚,并且仅特定于 APK 文件,但我确实设法在安装前确定了 Crashlytics 存储 APK 的位置。

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

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

  1. 打开命令提示符或终端,然后运行 adb devices 以确保您的设备被识别
  2. 识别后,运行adbshell,然后输入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 权限才能访问此文件夹。

希望对您有所帮助!

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

  1. 在您的设备上安装 "Amaze File Manager"。免费版就够了,不需要root。
  2. 在左侧菜单中打开"App Manager"
  3. 按名称查找已安装的版本
  4. 按"three dots"和select"backup"
  5. 您将在 storage/emulated/0/app_backup
  6. 中找到您的 APK 文件