我有一个Hello World全屏Android Studio 1.5.1应用程序,我在其中添加了Gradle/Eclipse-Mars子项目。 除了将包含":javalib"添加到settings.gradle之外,没有修改其他文件。 添加项目库依赖项:
project(':app') {
dependencies {
compile project(':javalib') // line 23
}
}
到根构建构建文件并从命令行运行 gradle,得到:
哪里:构建文件 'D:\AndroidStudioProjects\AndroidMain\build.gradle' 行:23
出了什么问题:评估根项目"AndroidMain"时出现问题。
在 org.grad 上找不到参数 [项目 ':javalib'] 的方法 compile() le.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@46 3CA82F.
将 Java 插件添加到根构建文件没有帮助。
我不认为它在错误的地方。
根项目和添加的子项目都有 Gradle 包装器。
任何指示将不胜感激。
谢谢
编辑:为澄清起见,根构建文件为:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
task hello << { task -> println "I'm $task.project.name" }
}
project(':app') {
dependencies {
//compile project(':javalib') // causes problems
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
应用构建文件为:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "acme.androidmain"
minSdkVersion 22
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//compile project(':javalib') // use :javalib:jar?
//testCompile project(':javalib')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
}
编辑:本练习的全部目的是将核心Java代码放入Android项目中。 目前,核心代码是一个独立的Gradle/eclispe项目。 我在 Android 项目中有一个批处理,它执行 gradle -P 独立投影目录/jar 并将该 jar 复制到 libs/中。
我只是认为除了发布 jar 并从存储库获取它之外,还有一种更简单的方法,因为这一切都在我的 PC 上完成。
让所有代码都上线并只做一个构建:(会很好
编辑:根据RaGe的建议,这是一个Virgin Android Studio项目和一个Virgin Gradle/Eclipse项目。 尚未对这些文件进行任何编辑。 如果你选择接受它,你的任务是让Android应用程序轻松访问Java项目类(即新的Library();在MainActivity.onCreate()中将编译并运行)。 我不在乎Java项目在哪里。 理想情况下, 这两个源都将存在于两个 IDE 中。
试探此操作也会失败。 说:> 找不到:virginjavaproject,但目录确实存在。
编辑:真正起作用的是RaGe对Virgin Android项目的拉取请求。
你已经有
compile project(':javalib')
在:app
项目中,您不必从根 build.gradle 注入依赖项。如果您仍然想从根build.gradle
执行此操作,正确的方法是:
configure(':app') {
dependencies {
compile project(':javalib') // causes problems - NOT ANYMORE!
}
}
Virgin Android Studio Head是有效的。
我们有2个名为"build.gradle"的文件。确保您已将"编译代码"复制到"app"文件夹中的build.gradle文件中
正如@peter-niederwieser所说:
构建脚本将构建脚本依赖项(即构建本身的依赖项;通常这意味着 Gradle 插件)与常规依赖项(即要编译/运行的代码的依赖项)混合在一起。后者需要进入依赖 { ... },而不是进入构建脚本 { 依赖关系 { ... } }。除类路径依赖关系之外的所有内容都是常规依赖关系。
另请查看此内容:找不到参数 Gradle 的方法 compile()。
只需将其粘贴到 build.gradle(Project:"Your prject name")
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
我遇到了这个问题,但我有自己的库。正确编译的方法是:
compile project(path: ':MyLib')