测试
形式:RK33999999.1.Android
7.1.1
显示
我们具有系统权限()的apk,由于该系统位因此而使用的操作系统:因此,只有 323232引导或出现其他类型uid=系统应用程序如KeyChain)(找不到的odex文件(类),导致报错,logProcess
: com.android.keychain, PID: 1177
java.lang.RuntimeException:无法实例化服务 com.android.keychain.KeyChainService:java.lang.ClassNotFoundException:在路径上找不到类“com.android.keychain.KeyChainService”:DexPathList [[zip 文件“/system/app/KeyChain/KeyChain. apk“],nativeLibraryDirectories=[/system/app/KeyChain/lib/arm64, /system/app/KeyChain/KeyChain.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/lib , /vendor/lib]]
在 android.app.ActivityThread.handleCreateService(ActivityThread.java:3186)
在 android.app.ActivityThread.-wrap5(ActivityThread.java)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1577)
在 android.os.Handler.dispatchMessage(Handler.java:102)
在 android.os .Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6157)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:912)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
引起:java.lang.ClassNotFoundException:在路径上找不到类“com.android.keychain.KeyChainService”:DexPathList[[zip file ”/system/app/KeyChain/KeyChain.apk“],nativeLibraryDirectories=[/system /app/KeyChain/lib/arm64, /system/app/KeyChain/KeyChain.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/lib, /vendor/lib]]
在 dalvik .system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:380)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:312)
在 android.app.ActivityThread。
android.app.ActivityThread.-wrap5( ActivityThread.java)处的 handleCreateService(ActivityThread.java:3183)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1577)
在 android.os.Handler.dispatchMessage(Handler.java:102)
在 android.os.Looper.loop(Looper.java:154)
在 android。 app.ActivityThread.main(Activity我们遇到
的问题是,我们自己编写的应用是系统应用,使用了系统的systemuid,就是和setting的uid是一样的,而且我们是32位apk,setting是64位apk ,这样的日志开始发现的时候发现分析遇到设置不到lib库。。
分析
了系统,从7.1系统有一个新特性,就是相同uid的应用会使用相同的lib地址,以uid =系统的应用举例。如果使用lib64就都是lib64,如果是lib,不能32和64排。而指定32还是64是第一个解析到的uid=系统的应用动态所以当他第一个解析到我们的应用程序时,发现是指定 32 位,然后当其他运行时,他的类 ui=lib 就去 lib=64 下寻找,但是其他的,所以通过寻找找不到类报错的问题解决方案1)或者将部分库的方案(但是会出现找不到类报错的问题
解决方案
1)或者将3个库的部分解决方案(但是会帮助找到一个22位的解决方案)
。 1.部分需要所以库只有32位找不到64位
方案2.有的时候出问题的ap我们没有修改那么根本无法,所以也拒绝。就剩下的
方案3:
1.在apk的android.mk中
LOCAL_DEX_PREOPT := nostripping
2./device/rockchip/rk3399 /BoardConfig.mk,
DEX_PREOPT_DEFAULT=nostripping
3的英文版本时,不会是从apk里面生成odex的时候。下面的codek出来,这样可以查询lib类ex时解析apk中的classes.dex,不会报错。
但是这样也有好处,会导致体积变大,没有其他更好的解决办法先这样解决吧。
测试
形式:RK33999999.1.Android
7.1.1
显示
我们具有系统权限()的apk,由于该系统位因此而使用的操作系统:因此,只有 323232引导或出现其他类型uid=系统应用程序如KeyChain)(找不到的odex文件(类),导致报错,logProcess
: com.android.keychain, PID: 1177
java.lang.RuntimeException:无法实例化服务 com.android.keychain.KeyChainService:java.lang.ClassNotFoundException:在路径上找不到类“com.android.keychain.KeyChainService”:DexPathList [[zip 文件“/system/app/KeyChain/KeyChain. apk“],nativeLibraryDirectories=[/system/app/KeyChain/lib/arm64, /system/app/KeyChain/KeyChain.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/lib , /vendor/lib]]
在 android.app.ActivityThread.handleCreateService(ActivityThread.java:3186)
在 android.app.ActivityThread.-wrap5(ActivityThread.java)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1577)
在 android.os.Handler.dispatchMessage(Handler.java:102)
在 android.os .Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6157)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit $MethodAndArgsCaller.run(ZygoteInit.java:912)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
引起:java.lang.ClassNotFoundException:在路径上找不到类“com.android.keychain.KeyChainService”:DexPathList[[zip file ”/system/app/KeyChain/KeyChain.apk“],nativeLibraryDirectories=[/system /app/KeyChain/lib/arm64, /system/app/KeyChain/KeyChain.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/lib, /vendor/lib]]
在 dalvik .system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:380)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:312)
在 android.app.ActivityThread。
android.app.ActivityThread.-wrap5( ActivityThread.java)处的 handleCreateService(ActivityThread.java:3183)
在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1577)
在 android.os.Handler.dispatchMessage(Handler.java:102)
在 android.os.Looper.loop(Looper.java:154)
在 android。 app.ActivityThread.main(Activity我们遇到
的问题是,我们自己编写的应用是系统应用,使用了系统的systemuid,就是和setting的uid是一样的,而且我们是32位apk,setting是64位apk ,这样的日志开始发现的时候发现分析遇到设置不到lib库。。
分析
了系统,从7.1系统有一个新特性,就是相同uid的应用会使用相同的lib地址,以uid =系统的应用举例。如果使用lib64就都是lib64,如果是lib,不能32和64排。而指定32还是64是第一个解析到的uid=系统的应用动态所以当他第一个解析到我们的应用程序时,发现是指定 32 位,然后当其他运行时,他的类 ui=lib 就去 lib=64 下寻找,但是其他的,所以通过寻找找不到类报错的问题解决方案1)或者将部分库的方案(但是会出现找不到类报错的问题
解决方案
1)或者将3个库的部分解决方案(但是会帮助找到一个22位的解决方案)
。 1.部分需要所以库只有32位找不到64位
方案2.有的时候出问题的ap我们没有修改那么根本无法,所以也拒绝。就剩下的
方案3:
1.在apk的android.mk中
LOCAL_DEX_PREOPT := nostripping
2./device/rockchip/rk3399 /BoardConfig.mk,
DEX_PREOPT_DEFAULT=nostripping
3的英文版本时,不会是从apk里面生成odex的时候。下面的codek出来,这样可以查询lib类ex时解析apk中的classes.dex,不会报错。
但是这样也有好处,会导致体积变大,没有其他更好的解决办法先这样解决吧。
举报