maoabc / nmmp

dex-vm used to protect the android classes.dex file
736 stars 260 forks source link

nmmp貌似和binding兼容性不太好 #37

Closed PoisonGZ closed 2 years ago

PoisonGZ commented 2 years ago

大佬您好,我目前遇到了一点问题,在我使用View Binding以后,使用nmmp进行vmp,会导致app无法打开,打开直接闪退,能否请大佬做一下兼容,祝大佬万事如意!

2021-10-22 21:33:00.374 10405-10405/com.demo.test E/AndroidRuntime: FATAL EXCEPTION: main Process: com.demo.test, PID: 10405 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.demo.test/com.demo.test.UI.MainActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: java.lang.NullPointerException at com.demo.test.UI.MainActivity.InitView(Native Method) at com.demo.test.UI.MainActivity.onCreate(Native Method) at android.app.Activity.performCreate(Activity.java:7802) at android.app.Activity.performCreate(Activity.java:7791) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:214)  at android.app.ActivityThread.main(ActivityThread.java:7356)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

maoabc commented 2 years ago

使用源码编译的吗?项目提供那个编译好的jar是早期的。还有要忽略androidx,不要对他们进行转化,因为后面改了loadLibrary逻辑,会导致androidx的一个enum加载错误。

PoisonGZ commented 2 years ago

使用源码编译的吗?项目提供那个编译好的jar是早期的。还有要忽略androidx,不要对他们进行转化,因为后面改了loadLibrary逻辑,会导致androidx的一个enum加载错误。

好的,我会再尝试一下,谢谢大佬

PoisonGZ commented 2 years ago

使用源码编译的吗?项目提供那个编译好的jar是早期的。还有要忽略androidx,不要对他们进行转化,因为后面改了loadLibrary逻辑,会导致androidx的一个enum加载错误。

我使用最新的源码编译还是闪退,希望大佬能做一下修复,谢谢大佬 这是Vmp以后的App:https://wws.lanzouw.com/i6JUn01mrckd密码:7h1g 这是原版App:https://wws.lanzouw.com/iHnHQ01mrcud密码:8vrf

maoabc commented 2 years ago

不知道你怎么弄的,我用最新的主线代码把所有com开头的包全加固了,没任何问题。

maoabc commented 2 years ago

可能和ndk版本有关,我这用的ndk是23.1.7779620,平台是linux。默认编译了armeabi-v7a和arm64-v8a,把所有com开头的class全转化了,测试都正常的

maoabc commented 2 years ago

用了跟你一样的配置只转化MainActivity的onCreate方法也是正常,有两种可能,ndk编译后的so有问题,还有就是zip处理资源在windows下有问题,我试试重新把原来apk里资源手动打包进加固后的apk

maoabc commented 2 years ago

问题找到了, 就是在windows下重新处理apk里的res目录下资源有问题, 可以手动用winzip删除加固后的apk里的res目录, 然后复制加固前的res目录到新apk, 再对齐跟签名就可以. 原因就不清楚了, zip处理问题应该只在windows下出现, 解决的话需要使用第三方zip库, 暂时就不理了.

PoisonGZ commented 2 years ago

问题找到了, 就是在windows下重新处理apk里的res目录下资源有问题, 可以手动用winzip删除加固后的apk里的res目录, 然后复制加固前的res目录到新apk, 再对齐跟签名就可以. 原因就不清楚了, zip处理问题应该只在windows下出现, 解决的话需要使用第三方zip库, 暂时就不理了.

好的谢谢大佬!我去试试