Android SDK 故障排除

重要

Visual Studio App Center 于 2025 年 3 月 31 日停用,但分析和诊断功能除外,这些功能将继续受支持,直到 2026 年 6 月 30 日。 了解详细信息

需要哪些 Android 权限?

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

  • 所有服务: INTERNET, ACCESS_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 Distribute。

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
应用中心分析 1.4 MB 3.63 MB
App Center 崩溃 1.4 MB 3.70 MB
App Center Distribut 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()
}