diff --git a/app/build.gradle b/app/build.gradle index d12b52e7..47077172 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,6 +70,6 @@ dependencies { compile 'com.squareup.okhttp:okhttp:2.5.0' compile 'com.google.code.gson:gson:2.3.1' compile 'com.android.support:design:25.4.0' - compile 'org.javassist:javassist:3.20.0-GA' + compile 'org.javassist:javassist:3.22.0-GA' compile project(path: ':patch') } \ No newline at end of file diff --git a/auto-patch-plugin/build.gradle b/auto-patch-plugin/build.gradle index 30d13cc2..5b00e098 100644 --- a/auto-patch-plugin/build.gradle +++ b/auto-patch-plugin/build.gradle @@ -8,7 +8,7 @@ dependencies { compile gradleApi() compile localGroovy() compile 'com.android.tools.build:gradle:2.1.0' - compile 'org.javassist:javassist:3.20.0-GA' + compile 'org.javassist:javassist:3.22.0-GA' // compile 'com.meituan.robust:autopatchbase:' + VERSION_NAME compile project(':autopatchbase') } diff --git a/gradle-plugin/build.gradle b/gradle-plugin/build.gradle index 69056f95..5e9645b1 100644 --- a/gradle-plugin/build.gradle +++ b/gradle-plugin/build.gradle @@ -7,7 +7,7 @@ dependencies { compile gradleApi() compile localGroovy() compile 'com.android.tools.build:gradle:2.1.0' - compile 'org.javassist:javassist:3.20.0-GA' + compile 'org.javassist:javassist:3.22.0-GA' compile fileTree(dir: "./src/main/libs", include: ['*.jar']) compile project(':autopatchbase') // compile 'com.meituan.robust:autopatchbase:0.4.93' diff --git a/gradle-plugin/src/main/groovy/robust/gradle/plugin/asm/AsmInsertImpl.java b/gradle-plugin/src/main/groovy/robust/gradle/plugin/asm/AsmInsertImpl.java index c29128ea..887594dc 100644 --- a/gradle-plugin/src/main/groovy/robust/gradle/plugin/asm/AsmInsertImpl.java +++ b/gradle-plugin/src/main/groovy/robust/gradle/plugin/asm/AsmInsertImpl.java @@ -50,6 +50,13 @@ protected void insertCode(List box, File jarFile) throws IOException, C ZipOutputStream outStream = new JarOutputStream(new FileOutputStream(jarFile)); //get every class in the box ,ready to insert code for (CtClass ctClass : box) { + /** + * 过滤掉javassis 从3.20.0-GA升级到3.22.0-GA产生的module-info.class + * 因为3.22.0-GA是使用java9编译的,会产生一个叫module-info.class的文件类 + */ + if ("META-INF.versions.9.module-info".equals(ctClass.getName())) { + continue; + } //change modifier to public ,so all the class in the apk will be public ,you will be able to access it in the patch ctClass.setModifiers(AccessFlag.setPublic(ctClass.getModifiers())); if (isNeedInsertClass(ctClass.getName()) && !(ctClass.isInterface() || ctClass.getDeclaredMethods().length < 1)) {