全部产品
云市场
云游戏

接入 Android 常见问题

更新时间:2020-04-28 16:55:41

编译时无网络连接

在编译文件时,如果没有网络,很有可能造成编译失败。通过以下步骤,确认编译环境的网络已连接。

  1. 确认已连接到互联网。
  2. 确认未连接网络代理,包括浏览器代理设置、第三方网络代理软件等。
  3. 确认未设置IDE代理。
    idea 代理
  4. 在 gradle.properties 文件中,确认未设置 Gradle 代理,即未设置 systemProp.http.proxyHostsystemProp.http.proxyPort 属性。如果有设置,删除相关属性即可。
    gradle代理

程序编译失败

如果程序编译失败,可通过以下步骤进行排错与解决:

  1. 根据 上文步骤,确认编译环境网络已正常连接。
  2. 检查 Gradle 执行记录,确认新增的依赖有效。
  3. 检查依赖的 GAV(group, artifact, version)参数设置正确。
    1. //引用 debug 包group:artifact:version:raw@jar
    2. bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:raw@jar"
    3. //引用 release 包group:artifact:version@jar
    4. bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT@jar"
    5. manifest "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:AndroidManifest@xml"
  4. 在系统自带的命令行工具中,执行以下命令,导出 Gradle 执行记录:
    1. // 执行命令前,确认未定义 productflavor 属性。否则,命令会运行失败。
    2. // 以下命令将执行记录导出至 log.txt 文件中。
    3. gradle buildDebug --info --debug -Plog=true > log.txt
  5. 查看步骤 4 中导出的记录文件,在最新生成的记录中,会看到类似如下记录,表示新增的依赖不存在:
    1. Caused by: org.gradle.internal.resolve.ArtifactNotFoundException: Could not find nebulacore-build-AndroidManifest.xml (com.alipay.android.phone.wallet:nebulacore-build:1.6.0.171211174825).
    2. Searched in the following locations:
    3. http://mvn.cloud.alipay.com/nexus/content/repositories/releases/com/alipay/android/phone/wallet/nebulacore-build/1.6.0.171211174825/nebulacore-build-1.6.0.171211174825-AndroidManifest.xml
    4. at org.gradle.internal.resolve.result.DefaultBuildableArtifactResolveResult.notFound(DefaultBuildableArtifactResolveResult.java:38)
    5. at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveArtifactFromCache(CachingModuleComponentRepository.java:260)

  6. 访问该记录中的 http 链接(如上一步所列记录中的第 3 行)并登录,查看 Maven 仓库。
    说明::您可以在 build.gradle 文件中查看登录时需要提供的账户名和密码。
  7. 执行以下命令刷新 gradle 缓存:
    1. gradle clean --refresh-dependencies
  8. 如果 Maven 仓库有对应依赖,删除个人目录下 Gradle 缓存,然后重新编译。
    说明:Gradle 缓存的删除方法如下:
    • 在 MacOS、Linux、Unix 等系统中,运行以下命令:
      1. cd ~
      2. cd .gradle
      3. cd caches
      4. rm -rf modules-2
    • 在 Windows 系统中,默认情况下,路径定位到 C:\Users\\{用户名}\\.gradle\caches,删除 modules-2 文件夹。

编译过程中出现卡顿

如果编译过程卡顿(等待超过 20 分钟),您可以通过以下步骤提高编译效率:

  1. 根据 上文步骤,确认编译环境网络已正常连接。
  2. 确认防火墙已关闭。
  3. 确认未开启 IntelliJ IDEA 编译器的网络配置。
  4. 在代码中,提前加载 Maven 镜像。例如,以下是阿里云加载 Maven 镜像的代码:
  1. apply plugin: 'maven'
  2. buildscript {
  3. repositories {
  4. mavenLocal()
  5. // 开始先加载 Maven 镜像
  6. maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
  7. maven {
  8. credentials {
  9. username "请使用已知用户"
  10. password "请使用已知密码"
  11. }
  12. url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/"
  13. }
  14. }
  15. dependencies {
  16. classpath 'com.android.tools.build:gradle:2.1.3'
  17. classpath 'com.alipay.android:android-gradle-plugin:2.1.3.3.3'
  18. classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  19. }
  20. }
  21. allprojects {
  22. repositories {
  23. flatDir {
  24. dirs 'libs'
  25. }
  26. mavenLocal()
  27. maven {
  28. credentials {
  29. username "xxxxxxxxx"
  30. password "xxxxxxx"
  31. }
  32. url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/"
  33. }
  34. maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
  35. }
  36. }

进行专有云接入时,下载配置、接入 mPaaS 后编译不通过,出现 NullPointerException

空指针异常

一般为配置文件(conf 文件)的问题,需要对字段进行检查。检查 13 个字段是否有缺少,和公有云下载过来的文件进行对比,确认字段名是否正确。

如何调试应用

开发过程中需要调试代码,本文介绍两种调试方式:

  • 以调试模式启动应用
  • 应用运行后调试

以调试模式启动应用

  • 使用场景

    希望调试应用启动时的最初代码,比如在 application init 时初始化代码。

  • 操作步骤:

  1. 执行命令 adb shell am start -W -S -D 应用包名/应用第一个启动的页面类名。例如,mPaaS Demo 的包名是 com.mpaas.demo,应用第一个启动的页面类名是com.alipay.mobile.quinox.LauncherActivity,那么可以使用命令行 adb shell am start -W -S -D com.mpaas.demo/com.alipay.mobile.quinox.LauncherActivity 以调试模式启动应用。第一个启动的类名如下图所示:

    img

  2. 执行命令之后,手机会弹出如下对话框:

    img

  3. 对希望调试的代码行设置断点,然后附着到应用所在进程即可,如下图:

    img

    img

应用运行后调试

  • 使用场景

    在触发某个事件之后进行调试,比如点击某个按钮或者跳转某个页面才需要调试。

  • 操作步骤:

    在应用运行后,点击附着进程(process)按钮,或者在执行上述命令后,再点击附着按钮开始调试。

如何清除 Gradle 缓存

打开 Gradle 插件的设置界面,点击 Clean Cache 按钮,即可删除 Gradle 插件的所有缓存数据。

插件设置界面