bytedance / ByteX

ByteX is a bytecode plugin platform based on Android Gradle Transform API and ASM. 字节码插件开发平台
Apache License 2.0
3.13k stars 462 forks source link

java.lang.RuntimeException: proguard.ParseException: Expecting opening '(' or separator ';' before 'return' in line 5 of file #125

Open lizhangqu opened 2 years ago

lizhangqu commented 2 years ago

getter-setter-inline在开启R8的情况下去读了R8的配置作为proguard的输入,但此时proguard无法解析R8的配置,而proguard能解析的文件此时应该为lib/META-INF/com.android.tools/proguard/coroutines.pro

java.lang.RuntimeException: proguard.ParseException: Expecting opening '(' or separator ';' before 'return' in line 5 of file '/Users/lizhangqu/.gradle/caches/transforms-2/files-2.1/be3013c369a9f4ff6b34b8da68529ccf/rules/lib/META-INF/com.android.tools/r8-from-1.6.0/coroutines.pro'

协程相关proguard引入来自此依赖中的META-INF/com.android.tools/r8-from-1.6.0/coroutines.pro

org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1

META-INF/com.android.tools/r8-from-1.6.0/coroutines.pro

# Allow R8 to optimize away the FastServiceLoader.
# Together with ServiceLoader optimization in R8
# this results in direct instantiation when loading Dispatchers.Main
-assumenosideeffects class kotlinx.coroutines.internal.MainDispatcherLoader {
    boolean FAST_SERVICE_LOADER_ENABLED return false;
}

-assumenosideeffects class kotlinx.coroutines.internal.FastServiceLoaderKt {
    boolean ANDROID_DETECTED return true;
}

-keep class kotlinx.coroutines.android.AndroidDispatcherFactory {*;}

# Disable support for "Missing Main Dispatcher", since we always have Android main dispatcher
-assumenosideeffects class kotlinx.coroutines.internal.MainDispatchersKt {
    boolean SUPPORT_MISSING return false;
}

# Statically turn off all debugging facilities and assertions
-assumenosideeffects class kotlinx.coroutines.DebugKt {
    boolean getASSERTIONS_ENABLED() return false;
    boolean getDEBUG() return false;
    boolean getRECOVER_STACK_TRACES() return false;
}

META-INF/com.android.tools/proguard/coroutines.pro

# When editing this file, update the following files as well:
# - META-INF/com.android.tools/r8-upto-1.6.0/coroutines.pro
# - META-INF/proguard/coroutines.pro

-keep class kotlinx.coroutines.android.AndroidDispatcherFactory {*;}
lizhangqu commented 2 years ago

有计划修掉这个问题吗