环境

android studio版本:3.6.1
gradle版本:5.6.4
gradle插件版本:3.6.1

错误提示

FAILURE: Build failed with an exception.* Where:Initialization script '/tmp/ReflectTest_main__.gradle' line: 20* What went wrong:A problem occurred configuring project ':app'.> Could not create task ':app:ReflectTest.main()'.   > SourceSet with name 'main' not found.

解决方案:

修改.idea/gradle.xml文件
Android Studio使用gradle作为构建工具,所以归根到底还是gradle配置的问题.先找一个没问题的项目,再打开新创建的项目,对比着看他们的gradle配置。发现.idea/gradle.xml文件内部不同,并且参照老项目进行修改是有效的。

老项目的.idea/gradle.xml:

<?xml version="1.0" encoding="UTF-8"?><project version="4"> <component name="GradleMigrationSettings" migrationVersion="1" /> <component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> <option name="delegatedBuild" value="false" /> <option name="testRunner" value="PLATFORM" /> <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="modules">  <set>  <option value="$PROJECT_DIR$" />  <option value="$PROJECT_DIR$/app" />  ...  </set> </option> <option name="resolveModulePerSourceSet" value="false" /> </GradleProjectSettings> </option> </component></project>

新项目的.idea/gradle.xml:

<?xml version="1.0" encoding="UTF-8"?><project version="4"> <component name="GradleMigrationSettings" migrationVersion="1" /> <component name="GradleSettings"> <option name="linkedExternalProjectsSettings"> <GradleProjectSettings> <option name="testRunner" value="PLATFORM" /> <option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="modules">  <set>  <option value="$PROJECT_DIR$" />  <option value="$PROJECT_DIR$/app" />  </set> </option> <option name="resolveModulePerSourceSet" value="false" /> </GradleProjectSettings> </option> </component></project>

经过对比发现,新项目的标签下少了这行配置,然后给新项目添加这行配置,运行代码发现成功了。

根据配置的字面意思理解,这个设置的意思是不委托gradle进行构建。现实效果也是加了这行配置之后就是jvm执行Java类的main方法了,而不是gradle当做task来执行了。

更多相关文章

  1. 如何隐藏Android4.0及以上版本的ActionBar、NotificationBar、St
  2. Android O版本Call对象解析
  3. Android 应用的版本兼容 了解一下(理解 minSdkVersion、targetSdk
  4. android 开源项目集锦
  5. Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
  6. android关于使用哪个版本开发的讨论
  7. 华硕 Eee Pad Transformer 3G 版本台湾地区 Android 3.2 更新,Eee
  8. Android国内开发者陷盈利困局 版本过多支付不畅
  9. 谁说Android的动画不廉价(一)之项目分层

随机推荐

  1. 如何快速生成数据的文本路径呢?C++实现文
  2. 如何使用LINQ、Lambda 表达式 、委托快速
  3. C#中将DataGridView中的数据导入到Csv文
  4. C#学习记录:编写高质量代码改善整理建议9-
  5. c# 如何生成自定义图片?c# 生成自定义图片
  6. C#学习记录:编写高质量代码改善整理建议4-
  7. c++中string&char *&char[]之间如何转换(
  8. 基于C的文件操作 (FILE*、fstream、window
  9. C#学习记录:编写高质量代码改善整理建议1-
  10. 怎样用C#打印一个n行的菱形?实战详解