我有一个全屏的Hello World Android Studio 1.5.1应用程序,我添加了一个Gradle / Eclipse-Mars子项目。除了将include ': javalib'添加到settings.gradle之外,没有修改任何其他文件。添加了一个项目库依赖:
project(':app') {
dependencies {
compile project(':javalib') // line 23
}
}
在命令行中运行gradle时,去到根构建构建文件,得到以下信息:
位置: 构建文件'D:\AndroidStudioProjects\AndroidMain\build.gradle'的第23行
出现了什么问题: 评估根项目'AndroidMain'时出现问题。
无法找到方法compile()对于org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@463ca82f的参数[project':javalib']。
向根构建文件添加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 standaloneprojectdir/ jar 并复制jar到libs/ 的命令。
我认为除了发布jar并从存储库获取之外,可能还有更简单的方法,因为所有这些都在我的电脑上完成。
只需构建就可以拥有所有代码会很好:(
编辑:根据RaGe的建议,这里有一个原始的Android Studio项目和一个原始的Gradle / Eclipse项目。这些文件未经过编辑。如果您选择接受,则需要使Android应用程序轻松访问Java项目类(例如,在MainActivity.onCreate()中使用new Library();将编译并运行)。我不在乎Java项目位于何处。理想情况下,两个源都可以在两个IDE中实时使用。
尝试这个也失败了。说:>无法找到:virginjavaproject,但目录确实存在。
编辑:实际上起作用的是RaGe对原始的Android项目的拉取请求。