【发布时间】:2015-03-25 22:23:21
【问题描述】:
我正在使用 Android Studio,但这可能是一个通用的 Intellij 问题(我习惯于 Eclipse)。这似乎应该非常简单,但我无法弄清楚。
我希望能够在我的项目中独立运行任何一个模块,这是我对模块用途的理解。到目前为止,当我想从我的“testmodule”模块中的“app”模块调用代码时,这一直运行良好。在我尝试构建模块之前,Android Studio 让我可以毫无问题地导入我需要的代码。然后我得到预期的“找不到包”错误。然后我尝试在我的“testmodule”build.gradle 中添加它:
main.java.srcDirs '../app/src/main/java'
这会导致我的“app”模块中的两个包导入语句失败。其中一个失败的包是在我的“app”清单中定义的包,另一个是在我的“app”build.gradle 中指定的
sourceSets {
main.java.srcDirs += '../../connectorAPI/trunk/src'
}
我还尝试让一个模块依赖于另一个模块,但根据我在堆栈溢出(以及模糊的 Android Studio 错误)中读到的内容,一个模块必须是库文件。这显然不起作用,因为我也希望能够运行。我很想只复制我需要的代码,但每次都需要在版本控制中进行更改,这是一场噩梦。
在 Eclipse 中,您所要做的就是右键单击并链接源代码。我无法想象这是不可能的,甚至是不寻常的,所以我一定错过了一些简单的东西......有人可以帮我吗?
build.gradle 测试模块
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.XXXXX.testmodule"
minSdkVersion 15
targetSdkVersion 21
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 'com.android.support:appcompat-v7:21.0.3'
compile 'com.google.android.gms:play-services:+'
}
build.gradle 应用程序
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.XX.XXX.XXX.XXX"
minSdkVersion 15
targetSdkVersion 19
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
packagingOptions {
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
sourceSets {
main.java.srcDirs += '../../connectorAPI/trunk/src'
}
}
dependencies {
compile 'com.android.support:appcompat-v7:19.1.0'
compile 'com.google.android.gms:play-services:+'
// Add the ArcGIS Android 10.2.5 API
compile 'com.esri.arcgis.android:arcgis-android:10.2.5'
compile 'com.googlecode.json-simple:json-simple:1.1'
}
【问题讨论】:
-
review - developer.android.com/sdk/installing/… .如果您的模块是库类型,则将其定位在 ./libraries .. settings gradle -> include ':app', '':libraries:myLib' ./app /build.gradle.dependencies -> 编译项目(':libraries:myLib')
-
这就是问题所在,我希望能够同时运行这两个模块,因此任何一个都不能成为库模块。
-
好吧,尝试将两个模块定位在具有循环依赖关系的 AS 项目中“应用”级别的“下方”...
-
据我所知,这就是我的设置方式。当我在 Windows 资源管理器上查看文件结构时,app 和 testmodule 模块都在项目文件夹下的同一层
-
尝试删除“build.gradle”中的依赖项,并在相应的 android.manifest 中引用其他模块“main”。如果它不会建立,那么我猜你回到循环依赖,应该阅读 gradle.depencies
标签: java android intellij-idea android-studio