我需要从Android Studio迁移到IntelliJ IDEA,因为我需要用Java做一些其他非Android的工作。我从git克隆了我的项目并将其导入IDEA;然而,我在这个过程中遇到了Gradle的一个错误。我已经搜索过了,但找不到修复错误的答案。
这是事件日志
03:39:42 PM All files are up-to-date
03:39:42 PM ClassCastException: com.android.build.gradle.internal.model.ApiVersionImpl cannot be cast to java.lang.Integer: com.android.build.gradle.internal.model.ApiVersionImpl cannot be cast to java.lang.Integer
设置。gradle(myproject是SO的一个示例,希望省略实际名称)
include ':myproject'
构建。根目录中的gradle(例如/myproject/build.gradle)
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
allprojects {
repositories {
mavenCentral()
}
}
和另一个版本。gradle(例如/myproject/myproject/build.gradle)
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '20'
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName '1.0'
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
versionNameSuffix "-alpha"
}
}
productFlavors {
}
packagingOptions{
exclude 'META-INF/DEPENDENCIES.text'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
compile 'commons-validator:commons-validator:1.4.0'
}
我想这可能与Gradle版本有关,也可能与Studio和IDEA之间的不兼容有关,但我不确定。非常感谢您的回答。谢谢
您必须使用以前版本的android工具。版本0.10。使用Idea 13
所以只要把
classpath 'com.android.tools.build:gradle:0.10.+'
不幸的是,这对Android studio和Idea 14 EAP都不起作用,如果你有同事在同一个项目上工作,就没有好的解决方案。
选项是继续将Idea 13与android工具0.10配合使用。版本,或迁移到EAP和/或Android studio并开始使用0.11。android工具版本:(注:0.12。不适用于Idea 14 EAP
或者,您可以尝试引入我们在团队中使用的解决方法,而这并不稳定:
在设置中。gradle添加
boolean fromIdea14 = System.properties["idea.version"]?.toString().equals("14")
org.gradle.api.internal.initialization.DefaultScriptHandler.metaClass.toolsVersion = fromIdea14 ? "0.11.+" : "0.10.+"
然后在build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'com.android.tools.build', name: "gradle", version: getBuildscript().toolsVersion
}
}
这将适用于使用Idea 13的每个人,以及使用14 EAP或AndroidStudio的人,他们应该添加到Gradle VM参数-Didea.version=14。
注意:它认为Idea不会评估脚本以通过调用gradle本身来配置android项目,因此获取其他属性或env变量将不起作用:(唯一的方法是在设置中指定gradle VM参数。
我认为这是因为你的Gradle项目对于IntelliJ IDEA附带的Android插件版本来说太新了。
有几个可能的解决方法:
您可以尝试在构建文件中降级Android Gradle插件的版本,直到您找到它可以使用的版本。如果您后退到它的其他部分不兼容,这将遇到问题。为此,请减少行中的版本号:
classpath 'com.android.tools.build:gradle:0.12.+'
然而,如果您这样做了,您就知道这个构建文件将与Android Studio的现代版本不兼容。目前没有很好的解决方法。
另一种方法是尝试IntelliJ 14 EAP,它可能会有更高版本的插件。请注意,IntelliJ 14仍处于其开发周期的一个非常活跃的阶段,很可能存在bug。使用风险自负。http://confluence.jetbrains.com/display/IDEADEV/IDEA14 EAP
啰嗦解释:
有许多不同的部分在起作用:
#3中的插件对于Android Studio和IntelliJ都是相同的插件,但问题是它的发展非常快,Android Studio的发布进度要快得多,每个版本都附带最新的代码。IntelliJ IDEA的发布频率较低,老实说,我不完全确定它附带了什么Android插件;我还没有研究他们的分支策略。
Gradle的Android插件也在快速发展。通常情况下,这与Android Studio的新版本步调一致;为了支持我们在Android Studio中需要的新功能,用户需要一个更新的Gradle插件最低版本,反之亦然——这就是为什么过去经常强制迁移插件版本的原因。
所以发生的事情是您的构建文件需要最新版本的Android Gradle插件,它需要最新版本的IntelliJ Android插件,该插件在Studio中发布,但不是当前版本的IJ 13。
事情正在稳定下来,所以我们希望这在未来会有所改善。特别是,Android Gradle插件1.0版将跨平台工作,并将在很长一段时间内(如果不是永远的话)与所有产品的未来版本兼容。
我在这个问题上找到了不同的答案,但对我来说没有用,所以我不确定我是否在什么地方添加了错误的内容。 错误: Gradle同步失败:没有方法com的签名。Android建筑格拉德尔。AppPlugin。getNdkFolder()适用于参数类型:()值:[] 建筑gradle模块 建筑gradle项目 gradle-wrapper.properties 任何帮助都将不胜感激。 谢啦 更新: 地方的属性
错误:找不到方法com。Android建筑格拉德尔。api。BaseVariant。getOutputs()Ljava/util/List;'。此意外错误的可能原因包括: Gradle的依赖项缓存可能已损坏(这有时会在网络连接超时后发生。)重新下载依赖项和同步项目(需要网络) Gradle构建进程(守护进程)的状态可能已损坏。停止所有Gradle守护进程可以解决此问题。停止Gradle生成过程(需
我正在尝试让我现有的Android项目与渐变和智能J 12一起工作。以前,我曾让它与maven一起工作,但这似乎不像gradle那样灵活,而且据我所知,我需要的子文件夹更少。 我的Android项目分为干净的java库(:core)和实际的应用程序(:Android)。这两个项目都在我的主项目文件夹中。 我认为,用这个实现gradle工作的理想解决方案是将(:core)和(:android)项目视
我目前在转换张量流时遇到问题。pb模型到TFlite格式。我目前正在遵循谷歌代码实验室的指示,错误说 Traceback(最近调用的最后一次):文件/usr/local/bin/tflite_convert,第5行,在tensorflow.lite.python.tflite_convert导入主重要错误:没有模块命名lite.python.tflite_convert 我正在使用谷歌提供的命令
在执行和(为了防止我的应用程序应用一些第三方库的缓存版本而需要)后,我不能再构建我的应用程序,因为行 导致此错误的原因: 原因可能是什么?根据这个答案,我推断我的IS_CI_BUILD属性应该是布尔值,但每当我将其更改为或并尝试运行应用程序时,会弹出一个编辑配置对话框,我不确定该怎么办。
我有一个由gradle建造的战争项目。我有一个字符串gradle.build文件:编译'log4j: log4j: 1.2.17'但没有任何log4j.jar结果WEB-INF/lib目录在myproject.war文件。 但“compile”配置中定义的所有其他lib都存在。为什么会有如此奇怪的行为,它是一个bug还是某种功能?如何将其包含在我的网络档案中? Eclipse在项目的“网络应用程序