【发布时间】:2017-11-22 04:38:16
【问题描述】:
是否可以从 Fabric Beta 下载 Android APK 文件?我们上传了多个版本。
【问题讨论】:
是否可以从 Fabric Beta 下载 Android APK 文件?我们上传了多个版本。
【问题讨论】:
来自 Fabric 的 Mike。我们目前不提供下载 .APK 的方法,它们仅由 Crashlytics 应用程序通过 Beta 版提供。
【讨论】:
迟到的答案,但有人可能需要这个。您可以通过 Beta 或任何方式从应用程序安装的设备上以一种 hacky 方式下载它:
将设备连接到您的计算机并运行以下命令,确保您已正确配置adb:
adb shell pm list packages | grep xyz # get the package name of the app
adb shell pm path app.xyz.stg # get the path of the app
adb pull /data/app/app.xyz.stg/base.apk . # pull the app to PWD
应用的名字是base.apk,改成xyz。这可以用于同一设备。
【讨论】:
梅苏特的回答是正确的。只是为了更清楚。
adb shell pm path ${package_name}
adb pull /data/app/${package_name_2}/base.apk
在第二个命令中,值 ${package_name_2}/base.apk 来自第一个命令。有时它不完全是包名称。
在我的例子中,它是 ${package_name}-1/base.apk
【讨论】:
adb pull `adb shell pm path your.base.package.name | sed 's/package://'` & mv base.apk YourApp-1.2.3-staging.apk(或任何命名方案你喜欢...)
如果您只想下载特定版本,例如“1.0(143)”,那么您可以在测试版应用中选择该版本并下载。
如果您需要从同一构建中上传多个 apk(例如为每个部署环境(例如预验证、验证、生产)上传一个 apk),那么您需要设置您的 gradle 来为每个部署环境定义 productFlavors,如下所示:
android {
...
flavorDimensions "deploymentEnvironment"
productFlavors {
prevalidation {
dimension "deploymentEnvironment"
}
validation {
dimension "deploymentEnvironment"
}
production {
dimension "deploymentEnvironment"
}
}
...
}
然后,您使用以下 gradle 任务作为说明性示例,将来自同一个构建(每个目标部署环境一个)的多个 APK 发布到同一个 Fabric 项目。实际任务取决于为您的项目定义的变体:
./gradlew -s assemblePrevalidationRelease assembleValidationRelease
./gradlew -s crashlyticsUploadDistributionPrevalidationRelease crashlyticsUploadDistributionValidationRelease
Fabric 控制台测试版页面确实显示了这两个 apk,您可以选择下载并安装其中一个。唯一缺少的部分是两个变体被列为完全相同(因为它们具有相同的 versionName 和 versionCode)。如果 Fabric 控制台除了版本/构建信息之外还显示实际的 apk 名称,这可以很容易地解决。我希望出色的 Fabric 团队能够尽快解决这个小功能请求。
在此之前,我使用的一种解决方法是根据 Fabric beta 控制台中的顺序识别构建(有风险但有效),并将目标部署信息放在 Fabric 中给定构建的每个 apk 的发行说明中。
【讨论】: