项目中,需要用到framework.jar,但是Android studio 编译报错:
AGPBI: {"kind":"error","text":"com.android.tools.r8.a: MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)","sources":[{"file":"D:\\AndroidStudioProjects\\01_HM6W22A\\00_Middleware\\Java\\Service\\devicemgrservice\\libs\\framework.jar"}],"tool":"D8"}
com.android.tools.r8.a: MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O (--min-api 26)
解决方法:
项目中模块的gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion '30.0.2'
defaultConfig {
applicationId "com.adayo.devmgr"
minSdkVersion 27
// targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.+'
provided files('libs/framework.jar')
}
项目的gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
maven {
url 'http://172.16.110.95:8082/artifactory/virtual_repo_maven_adayo/'
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.2.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
mavenCentral()
maven {
url 'http://172.16.110.95:8082/artifactory/virtual_repo_maven_adayo/'
}
jcenter() // Warning: this repository is going to shut down soon
}
/*gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:devicemgrservice/libs/framework.jar')
}
}*/
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
Set<File> fileSet = options.bootstrapClasspath.getFiles()
List<File> newFileList = new ArrayList<>();
//相对位置,根据存放的位置修改路径
newFileList.add(new File("devicemgrservice/libs/framework.jar"))
newFileList.addAll(fileSet)
options.bootstrapClasspath = files(
newFileList.toArray()
)
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
关键的地方: minSdkVersion 27
这minSdkVersion版本要高于26