美文网首页
ClassNotFoundException错误排查

ClassNotFoundException错误排查

作者: yuLiangC | 来源:发表于2019-02-20 17:43 被阅读2次

今天的问题是:在debug调试的时候APP没有问题,但是签名打包后生成APP安装到手机上之后,一运行就闪退了,报错日志是:

Caused by: java.lang.ClassNotFoundException: Didn't find class "我的包名.TradeClientReceiveMsg" on path: DexPathList[[zip file "/data/app/com.finance.futures.openTreasure-X6dXuXs7pacn_pX78VieWw==/base.apk"],nativeLibraryDirectories=[/data/app/com.finance.futures.openTreasure-X6dXuXs7pacn_pX78VieWw==/lib/arm64, /data/app/com.finance.futures.openTreasure-X6dXuXs7pacn_pX78VieWw==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at 我的包名.TradeClientSendMsg.startConnect(Native Method)
        at 我的包名.view.MainActivity.f(MainActivity.java:91)
        at 我的包名.view.MainActivity.a(MainActivity.java:75)

TradeClientSendMsg这个文件里都是调用的native方法,如 public static native void startConnect(String s1),初步怀疑是.so文件没有找到导致,手机CPU没有找到与之对应的.so文件,于是就在defaultConfig里面改NDK配置,如下:

defaultConfig {
        applicationId "我的包名"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 27
        versionName "1.0.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_PLATFORM=android-19',
                        '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_shared', '-DCMAKE_BUILD_TYPE=Release ..'
                cppFlags "-frtti -fexceptions -std=c++11"
            }
        }
        ndk {
            abiFilters "arm64-v8a", "armeabi-v7a", "x86_64", "x86"
        }
    }

重新打包,发现还是闪退。因我手机cup是arm64-v8a型号的,于是再改:

ndk {
            abiFilters "arm64-v8a"
        }

只保留arm64-v8a,运行,还是闪退。百般调试无果,坑爹的东西捣鼓了一整天,后来进群里问问,一哥们说有可能是混淆造成的,于是将TradeClientSendMsg这个文件不做混淆,保留了里面的所有方法,再次运行,通了!oh ye。。。
但是很奇怪的是,我上一个APP里面调用native方法的文件并没有保留混淆但是打包后也没有问题,现在却要保留混淆调用native方法的文件,不明所以,下次研究吧。

相关文章

网友评论

      本文标题:ClassNotFoundException错误排查

      本文链接:https://www.haomeiwen.com/subject/tnohyqtx.html