Android SDK 故障排除

重要

Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。

详细了解支持时间线和替代方案。

需要哪些 Android 权限?

根据所使用的服务,需要以下权限:

  • 所有服务: INTERNETACCESS_NETWORK_STATE
  • 分发: REQUEST_INSTALL_PACKAGESDOWNLOAD_WITHOUT_NOTIFICATION

SDK 会自动将所需权限合并到应用的清单中。

这些权限都不需要在运行时进行用户批准,它们都是安装时权限。

分析数据未显示在门户中

  1. 确保已正确集成 SDK 模块。

  2. 请确保在方法调用中包含 start() 正确的应用机密。 可以通过在门户中打开应用并导航到“入门”页来复制确切start()的代码。

  3. 如果要查看发送到后端的日志,请在应用程序中将日志级别更改为 “详细” ,SDK 将在控制台中打印日志。 在启动 SDK 之前调用以下 API。

    AppCenter.setLogLevel(Log.VERBOSE);
    
    AppCenter.setLogLevel(Log.VERBOSE)
    

    在信息日志级别) 中检查日志中显示“已成功配置 App Center SDK” (,如果看到 HTTPS 请求日志,则检查。

  4. 确保设备处于联机状态。

  5. 有时,日志可能需要几分钟才能显示在门户中。 如果是这样,请等待一段时间。

  6. 若要检查 App Center 后端是否收到数据,请转到 Analytics 服务中的日志流部分。 发送事件后,应显示事件。

崩溃未显示在门户中

  1. 确保已正确集成 SDK 模块。

  2. 请确保在方法调用中包含 start() 正确的应用机密。 可以通过在门户中打开应用并导航到“入门”页来复制确切start()的代码。

  3. 崩溃后重启应用。 我们的 SDK 仅在重启后才会转发故障日志。

  4. 如果要查看发送到后端的日志,请在应用程序中将日志级别更改为 “详细” ,SDK 将在控制台中打印日志。 在启动 SDK 之前调用以下 API。

    AppCenter.setLogLevel(Log.VERBOSE);
    
    AppCenter.setLogLevel(Log.VERBOSE)
    

    在信息日志级别) 中检查日志中显示“已成功配置 App Center SDK” (,如果看到 HTTPS 请求日志,则检查。

  5. 确保设备处于联机状态。

  6. 有时,日志可能需要几分钟才能显示在门户中。 如果是这样,请等待一段时间。

  7. 如果要检查 SDK 是否在下一个应用启动时检测到崩溃,可以调用 API 来检查应用是否在上一个会话中崩溃并显示警报。 或者,可以扩展故障回调,以查看它是否已成功发送到服务器。

  8. 若要检查 App Center 后端是否收到崩溃,请转到 Analytics 服务中的“日志流”部分。 发送崩溃后,应该会出现在那里。

分发和应用内更新阻止我的自动 UI 测试

如果运行的是自动 UI 测试,则启用的应用内更新将阻止自动化 UI 测试,因为它们将尝试针对 App Center 后端进行身份验证。 建议不要为 UI 测试启用 App Center 分发。

App Center SDK 对 Android 应用大小有何影响?

App Center SDK 旨在将应用程序安装大小的影响降到最低。

为了说明这一点,我们已使用 Android Studio 的“空白应用”模板创建了一个空的 Java 应用程序。 我们在发布配置中生成应用,并在运行 Android 7.0 的设备上安装该应用。

测试是在未启用 Proguard 的情况下运行的。

以下数字可能会有所不同,并取决于生成设置,因此请将其视为粗略指南。 如果使用 Proguard,SDK 对应用的影响会更低。

使用的 App Center 模块 导出的 APK 大小 设备) 报告的安装大小 (
无 (空白应用) 1.3 MB 3.43 MB
App Center 分析 1.4 MB 3.63 MB
App Center 崩溃 1.4 MB 3.70 MB
App Center 分发 1.4 MB 3.71 MB
所有 App Center 模块 1.4 MB 3.82 MB

保护 App Center 机密值

app_secret是应用的标识符,需要知道流量应用于哪个应用,并且不能用于检索或编辑现有数据。 app_secret如果暴露,最大的风险是向应用发送错误数据,但不会影响数据的安全性。

若要检索任何敏感数据,需要提供应用/用户令牌,该 令牌在客户端生成。 无法使客户端上的数据完全安全。

可以通过使用环境变量将应用机密注入代码来提高应用的安全性。 这样,密码在代码中就不可见了。

从 jCenter 迁移到 Maven Central

由于 jCenter 支持终止, 我们所有的程序集都已移动到 Maven Central 存储库。 若要使用 App Center,需要将 mavenCentral() 添加到 Gradle 文件中的存储库,如下所示:

repositories {
   google()
   mavenCentral()
}