Closed smalljames closed 7 years ago
你用的什么分包,插件里面有分包,低版本的默认是不支持分包,高版本支持方法数超过的。你可能是没有正确使用分包。没有加固的是正常的吗?
我测试过低版本的没有问题,最好是用插件里面那个分包吧
我使用的是这个 compile 'com.android.support:multidex:1.0.0'分包
没有加固之前的分包是正常的。
分包还有问题吗
用了最新版本1.1.1版本,包大小比较正常了,但加固后分包时还是提示classes3.dex错误,如下图:
这个apk本身还没有分包,加固前和加固后文件结构如下图,加固后的文件夹里并没有classes3.dex:
用1.1.1版本加固,还有一个问题,提示libwjshell_jiagu.so找不到报错: 06-27 16:47:56.864 5527-5527/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.shsh.toutiao, PID: 5527 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.shsh.toutiao-1/base.apk"],nativeLibraryDirectories=[/data/app/com.shsh.toutiao-1/lib/arm, /data/app/com.shsh.toutiao-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]] couldn't find "libwjshell_jiagu.so" at java.lang.Runtime.loadLibrary(Runtime.java:379) at java.lang.System.loadLibrary(System.java:1086) at com.qianfandu.utils.ApkToolPlus.a(SourceFile:31) at com.qianfandu.ProxyApplication.attachBaseContext(SourceFile:32) at android.app.Application.attach(Application.java:187) at android.app.Instrumentation.newApplication(Instrumentation.java:998) at android.app.Instrumentation.newApplication(Instrumentation.java:982) at android.app.LoadedApk.makeApplication(LoadedApk.java:614) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4759) at android.app.ActivityThread.access$1600(ActivityThread.java:165) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:150) at android.app.ActivityThread.main(ActivityThread.java:5546) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
右边的apk是找不到libwjshell_jiagu.so,左边的apk是成功加载的,流程都是一样,但不知道为什么加固后libwjshell_jiagu.so没有放到lib里面,唯一不同的大小不一样,右边的apk有5M,左边的apk只有600K。
知道出现这种现象规律了,如果apk中lib前提含有armeabi,x86有其他.so文件,这个libwjshell_jiagu.so就不能拷贝到lib里面了,就会出现这种现象,希望能优化一下这个1.1.1版本
好的 我试下
找到这个问题原因了,在JiaGu.java里这个libwjshell_jiagu.so没有对应过来,还是写之前的libapktoolplus_jiagu.so,如图:
。。。改了名字忘了改了 改下就好了
你分包还是dex找不到的问题吗
重新上传了1.1.1 删除本地的缓存重新下载就好了。。
.so问题已经好了,分包的问题我稍候再反馈哈,刚借了好几台不一样的手机验证这个分包的问题
android 4.4手机已经可以跑得起来了。 在华为D2-2010机型(android 4.1.2 API 16)手机上,提示如下错误
其他版本有问题吗? 我看模拟器上是没有这个错误的 这个版本太老没有手机测试
其他没有问题哈,就是4.1有问题
在4.1系统上android.util.ArrayMap这个类不支持,我暂时让4.1系统不跑这段代码。
如上图,会报DexOpt: source file mod time mismatch问题,目前发现在4.4系统上有这个问题启动不了,另外有一台6.0手机没有报这个错能正常启动。
我们的apk方法数超过65w,执行过dex分包,再用加固方法加固,就会出现这个问题。