JesusFreke / smali

smali/baksmali
6.29k stars 1.07k forks source link

Patching services works, patching telephony results in ClassNotFoundException #811

Open dep4 opened 3 years ago

dep4 commented 3 years ago

First of all, many thanks for this great tool!

This works

$ unzip ../services.jar
Archive:  ../services.jar
 extracting: classes.dex             
 extracting: classes2.dex            
 extracting: META-INF/MANIFEST.MF    
$ java -jar ../baksmali-2.5.2.jar d -a 29 classes.dex -o src
$ java -jar ../smali-2.5.2.jar a -a 29 src -o classes.dex
$ zip -0 ../services.zip classes2.dex classes.dex META-INF/MANIFEST.MF
  adding: classes2.dex (stored 0%)
  adding: classes.dex (stored 0%)
  adding: META-INF/MANIFEST.MF (stored 0%)
$ adb push services.zip /system/framework/services.jar

This does not

$ unzip ../telephony-common.jar
Archive:  ../telephony-common.jar
 extracting: classes.dex             
  inflating: META-INF/MANIFEST.MF    
$ java -jar ../baksmali-2.5.2.jar d -a 29 classes.dex -o src
$ java -jar ../smali-2.5.2.jar a -a 29 src -o classes.dex
$ zip -0 ../telephony.zip classes.dex META-INF/MANIFEST.MF
updating: classes.dex (stored 0%)
updating: META-INF/MANIFEST.MF (stored 0%)
$ adb push telephony.zip /system/framework/telephony-common.jar

Results in the following crash

FATAL EXCEPTION: main
Process: com.android.phone, PID: 2635
java.lang.RuntimeException: Unable to get provider com.android.phone.IccProvider: java.lang.ClassNotFoundException: Didn't find class "com.android.phone.IccProvider" on path: DexPathList[[zip file "/system/priv-app/TeleService/TeleService.apk"],nativeLibraryDirectories=[/system/priv-app/TeleService/lib/arm64, /system/priv-app/TeleService/TeleService.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64, /vendor/lib64, /system/lib64, /system/product/lib64, /vendor/lib64]]
        at android.app.ActivityThread.installProvider(ActivityThread.java:6988)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6528)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6445)
        at android.app.ActivityThread.access$1300(ActivityThread.java:219)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
        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:491)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.phone.IccProvider" on path: DexPathList[[zip file "/system/priv-app/TeleService/TeleService.apk"],nativeLibraryDirectories=[/system/priv-app/TeleService/lib/arm64, /system/priv-app/TeleService/TeleService.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64, /vendor/lib64, /system/lib64, /system/product/lib64, /vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.AppComponentFactory.instantiateProvider(AppComponentFactory.java:147)
        at androidx.core.app.CoreComponentFactory.instantiateProvider(CoreComponentFactory.java:60)
        at android.app.ActivityThread.installProvider(ActivityThread.java:6972)
        ... 10 more
        Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/internal/telephony/IccProvider;
                at java.lang.VMClassLoader.findLoadedClass(Native Method)
                at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
                ... 14 more
        Caused by: java.lang.ClassNotFoundException: com.android.internal.telephony.IccProvider
                ... 17 more

Lineageos 17.1

Please advise how to resolve,

Many thanks

Lanchon commented 3 years ago

FYI, lineageos 17.1 is android 10.

@dep4, please see this on quoting code: https://docs.github.com/en/github/writing-on-github/basic-writing-and-formatting-syntax#quoting-code note that > style block quoting will eat up characters it parses as special

dep4 commented 3 years ago

Thanks for letting me know how to correctly quote, I did not know that. I updated quotes for code

FYI, lineageos 17.1 is android 10.

Could you elaborate on this comment please? Is this a known issue? Should it work on LOS 17.1 or not? It seems to work fine on services.jar

Lanchon commented 3 years ago

that comment was for JF.

JesusFreke commented 2 years ago

I would probably need to see the logs from art stating why it's rejecting that class. It should be in logcat, possibly very early in boot.