1. 自定义config.gradle
def versions = [:]
versions.support = '1.0.0-beta01'
versions.constraint_layout = '1.1.2'
versions.junit = "4.12"
versions.test_runner = '1.1.0-alpha4'
versions.test_espresso = '3.1.0-alpha4'
versions.android_gradle_plugin = "3.3.1"
versions.android_android = "4.1.1.4"
versions.auto_service = "1.0-rc4"
versions.auto_common = "0.10"
versions.javapoet = "1.10.0"
ext.deps = [:]//空映射
def deps = [:]
def support = [:]
deps.support = support
def android = [:]
android.gradle_plugin = "com.android.tools.build:gradle:$versions.android_gradle_plugin"
android.android = "com.google.android:android:$versions.android_android"
android.material = "com.google.android.material:material:$versions.support"
deps.android = android
def androidx = [:]
androidx.annotion = "androidx.annotation:annotation:$versions.support"
androidx.appcompat = "androidx.appcompat:appcompat:$versions.support"
androidx.constraint_layout = "androidx.constraintlayout:constraintlayout:$versions.constraint_layout"
androidx.recyclerview = "androidx.recyclerview:recyclerview:$versions.support"
deps.androidx = androidx
def test = [:]
test.junit = "junit:junit:$versions.junit"
test.runner = "androidx.test:runner:$versions.test_runner"
test.test_espresso = "androidx.test.espresso:espresso-core:$versions.test_espresso"
deps.test = test
def auto = [:]
auto.service = "com.google.auto.service:auto-service:$versions.auto_service"
auto.common = "com.google.auto:auto-common:$versions.auto_common"
deps.auto = auto
deps.javapoet = "com.squareup:javapoet:$versions.javapoet"
ext.deps = deps
def build_version = [:]
build_version.min_sdk = 22
build_version.target_sdk = 28
build_version.build_tools = versions.support
ext.versions = build_version
2. 然后在project的build.gradle添加应用:
buildscript {
apply from : "config.gradle"
repositories {
google()
jcenter()
}
dependencies {
classpath deps.android.gradle_plugin
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
3. 在项目的各个子module中build.gradle使用
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.androidx.appcompat
implementation deps.android.material
implementation deps.androidx.constraint_layout
testImplementation deps.test.junit
androidTestImplementation deps.test.runner
androidTestImplementation deps.test.test_espresso
}
4. 如何导入import com.sun.tools.javac.code.Symbol;
在对应子module中导入JVM,然后获取tools.jar
import org.gradle.internal.jvm.Jvm
apply plugin: 'java-library'
dependencies {
implementation project(':inject-annotion')
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation deps.auto.service
implementation deps.javapoet
implementation deps.androidx.annotion
// 添加tools.jar
compileOnly files(Jvm.current().getToolsJar())
}
查看类似解决方式:https://www.e-learn.cn/content/wangluowenzhang/3674