intellij中调试android app的流程和常见问题

前言

将从网上下载到的android项目导入intellij中通常会遇到一些插件版本不同所导致的问题,这里主要记录了我在调试过程中遇到的集中问题。

流程

首先仅导入包含module的文件夹以及gradle的配置文件等,之后需要对整个项目进行gradle语义识别,让idea intellij自动识别出其中的module,之后自动编译即可,需要的sdk版本和tools可以在intelji终自动下载。

可能的问题

  • Module not specified

这个问题主要出现在手动import android项目之后,由于在intellij中启动项目需要对项目的启动参数做设定,而android app的启动必须指定文件夹中特定的module,而仅仅手动import项目并不能帮助intellij识别到android项目中的module,因此无法正常启动。正常的做法是使用intellij的gradle插件对整个项目进行语义分析,自动识别出module。

idea android 模块设置 idea安卓调试_idea android 模块设置

解决方案: 具体的做法是在import项目之后,找到屏幕左侧的Resource manager边栏,点击进入,找到其中的Sync project功能即可。

  • The project uses Gradle version which is incompatible with IDEA running on Java 10 or newer

这个问题主要是你当前使用的gradle的jvm版本不正确

idea android 模块设置 idea安卓调试_idea android 模块设置_02

解决方案:File->settings中把gradle对应的jvm版本设置为合适的版本即可。

  • Error:The supplied javaHome seems to be invalid. I cannot find the java executable.
    跟上一个问题类似,这里的javaHome指向File->settings中的jvm版本,说明gradle使用jdk版本不正确
    解决方案:在File->settings中把gradle对应的jvm版本设置为合适的版本即可。
  • Error:Could not find com.android.tools.build:gradle:3.0.1
    这个问题主要是因为搞错了gradle真正的版本。
    build.gralde里的classpath 'com.android.tools.build:gradle:3.0.1’指的是Android Studio的gradle插件版本,而gradle-wrapper.properties里的distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip才是指定的gradle版本!
    Gradle是开源的自动化构建工具,而Gradle插件是google开发的在Android Studio中使用Gradle的插件。
    解决方案: 下载正确的gradle版本

参考:

  • Gradle sync failed: Could not find method app() for arguments
    这个问题跟Module not specified问题的原因是一致的,本质上是Android-gradle的一个使用限制. 对应的英文文档android_tool文档如果你的App包含了多个Android模块, 应该尽量避免给每个模块手动指定编译SDK版本. 这些公有的编译属性最好一块定义在主工程里面 。
    解决方案:
    删掉build.gradle文件中app{},重新Rebuild project\Clean project工程解决新的错误