Closed LokiQ0713 closed 10 months ago
【平台环境】:mac/windows 【Android Studio版本】:Android Studio Giraffe | 2022.3.1 Patch 3 【编译使用Java版本】:jdk11 【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22 【gradle-plugin版本】:com.android.tools.build:gradle:8.1.2 【gradle-wrapper版本】:gradle-8.0-bin.zip 【drouter版本】:drouter-api:2.4.5 【drouter plugin版本】:drouter-plugin: 1.4.0
if (!TextUtil.excludePackageClassInJar(entry.getName())) { try (InputStream stream = jar.getInputStream(entry)) { String path = "jar:file:" + file.getAbsolutePath() + "!/" + entry.getName(); CtClass clz = pool.makeClass(stream); if (classClassify.doClassify(clz)) { cachePathSet.add(path); } else if (useCache) { cachePathSet.remove(path); } } catch (Exception e) { Logger.w("drouter resolve jar class error," + " jar=" + file.getAbsolutePath() + " entry=" + entry.getName() + " exception=" + e.getMessage()); throw e; } }
public static boolean excludePackageClass(String name) { return name.startsWith("android.") || name.startsWith("androidx.") || name.startsWith("com.google.") || name.startsWith("org.apache.") || name.startsWith("org.intellij.") || name.startsWith("java.") || name.startsWith("javax.") || name.startsWith("kotlin."); } public static boolean excludeJarNameFile(String name) { return name.equals("android.jar"); } public static boolean excludePackageClassInJar(String name) { return name.startsWith("android/") || name.startsWith("androidx/") || name.startsWith("com/google/") || name.startsWith("org/apache/") || name.startsWith("org/intellij/") || name.startsWith("java/") || name.startsWith("javax/") || name.startsWith("kotlin/") || name.startsWith("META-INF/"); }
主要是应对一些特殊的三方库,会在 makeClass/doClassify的时候会报 exception(drouter resolve jar class error),不知道为啥 如果明确知道一些三方 jar 不会和路由表有关系,是否可以添加自定义的 excludePackage,直接跳过这些坑爹的三方库
【平台环境】:mac/windows 【Android Studio版本】:Android Studio Giraffe | 2022.3.1 Patch 3 【编译使用Java版本】:jdk11 【kotlin版本】:org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22 【gradle-plugin版本】:com.android.tools.build:gradle:8.1.2 【gradle-wrapper版本】:gradle-8.0-bin.zip 【drouter版本】:drouter-api:2.4.5 【drouter plugin版本】:drouter-plugin: 1.4.0
主要是应对一些特殊的三方库,会在 makeClass/doClassify的时候会报 exception(drouter resolve jar class error),不知道为啥 如果明确知道一些三方 jar 不会和路由表有关系,是否可以添加自定义的 excludePackage,直接跳过这些坑爹的三方库