TL;DR:开发纯 Java 和 Android 应用程序的唯一方法是在完全不同的 Gradle 项目上吗?
我正在开发一个项目,其中包括一个 Android 应用程序和一个 Java 后端(以及一些其他常见的 API)。
作为 IDE,我正在使用 IntelliJ Idea。
我想要一个包含所有应用程序作为子项目的 Gradle 项目(将在单个 Idea 实例上打开)。
我的问题是,为了允许 Android 插件,我需要在 build.gradle
文件的 buildScript
部分进行设置:
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
这会在整个 Gradle 构建过程中强制使用 android 插件,并导致纯 Java 子项目出错(它们会自动设置为使用 Android SDK 而不是 Java SDK 构建)。
我想到的解决方法是创建两个单独的项目(一个用于 Android,一个用于 Java),将通用 JAR 导出到本地 Maven 存储库,然后从那里将其导入到 Android 项目中。
是否有更好的解决方案可以让我将所有代码库放在同一个地方?
最佳答案
你所要求的是可能的:你只需要将构建脚本声明从项目移动到android模块。
PROJECT build.gradle
可能如下所示:
buildscript {
// nothing for the project
}
allprojects {
repositories {
jcenter() // you could also move this to each module
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Android MODULE build.gradle
可能如下所示:
apply plugin: 'com.android.application'
// other pluguins
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
// other dependencies for the build (apt, retrolambda...)
}
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "my.android.app"
// additional config...
}
}
dependencies {
// your app dependencies here
}
其他模块,例如后端或网络,可以使用自己的插件、存储库和依赖项声明自己的构建脚本。
关于java - Gradle:同一项目中的 Java 和 Android 子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930439/