全部产品

接入 Android 常见问题

更新时间:2020-12-24 00:00:43

编译时无网络连接

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

  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 文件夹。

进行专有云接入时,下载配置、接入 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 插件的所有缓存数据。

插件设置界面