必须让它与 Android studio / Gradle 一起工作还不是很简单。我不得不说它的工作原理仍然很混乱,但在阅读了很多答案后我终于让它工作了。
如果您的项目具有这些依赖项:
包、uses-sdk 和空应用程序是 android-library 的严格最低要求:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mymodule">
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16"/>
<application />
</manifest>
模块具有这种结构
- 模块/构建(构建事物的地方)
- module/src/main/java(实际代码)
- module/src/main/res(资源布局等)
- 模块/src/main/AndroidManifest.xml
- Module/build.gradle(我们的 gradle 配置)
我的第一个模块作为这个 build.gradle 文件
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
} } apply plugin: 'android-library'
repositories {
mavenLocal()
mavenCentral() }
dependencies {
compile 'com.android.support:support-v4:13.0.0'
compile project(':SecondModule') }
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
请注意,模块依赖于 project(:SecondModule) 这意味着项目的根目录位于 SecondModule 中,其中还有一个 build.gradle 文件。
SecondModule build.gradle 看起来像这样。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android-library'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:13.0.0'
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
第二个模块不依赖于任何东西,除了android support
. 请注意,在这两个项目中,构建都使用mavenLocal()
andmavenCentral()
用于构建,而不仅仅是构建脚本。与默认的android-library
build.gradle 文件不同的是,这里我们com.android.support:support-v4:13.0.0
从 maven 加载而不是 jar 文件。所以我们可以在每个模块中平静地添加依赖,而不用担心 gradle 会附加它 n 次。为此,您必须安装 google 存储库和 android 支持存储库。
MainApp gradle 文件如下所示:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:13.0.0'
compile project(':MyModule')
compile project(':SecondModule')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
}
}
此文件正在应用 android 插件而不是 android-library 插件。如果一切正常,它应该编译得很好并运行。此外,由于该项目恰好正在开发中,请确保您安装了最新版本,并且将来这个答案可能会变得毫无意义。
确保您从不使用 android 支持 jar,而是使用 maven 存储库。缺点是编译可能需要一段时间,但它会起作用。