完整错误日志如下:
I/Chiron ( 57): java.lang.ClassNotFoundException: Didn't find class "com.alta.audiopolicyloader.AudioPolicyLoader" on path: DexPathList[[zip file "/data/app/com.alta.audiopolicyloader-1.apk"],nativeLibraryDirectories=[/system/lib]]
I/Chiron ( 57): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
I/Chiron ( 57): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
I/Chiron ( 57): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
I/Chiron ( 57): at com.alta.android.chiron.Chiron.loadModule(Chiron.java:444)
I/Chiron ( 57): at com.alta.android.chiron.Chiron.loadModules(Chiron.java:400)
I/Chiron ( 57): at com.alta.android.chiron.Chiron.main(Chiron.java:125)
I/Chiron ( 57): at dalvik.system.NativeStart.main(Native Method)
【问题原因】:虽然编译成apk的形式,实际上是class接口,并非是继承自Activity或Service的可执行程序,而是由其它apk加载。而proguard-android.txt混淆规则中,该模块未被保护,会被执行混淆,导致该错误。
【问题解决】:方法一是直接将gradle.build中的minifyEnabled置为false,关闭混淆功能;方法二是在proguard-android.txt中通过语句:-keep class com.alta.audiopolicyloader.* { ;},避免该包名下的类被混淆