smali icon indicating copy to clipboard operation
smali copied to clipboard

Patching services works, patching telephony results in ClassNotFoundException

Open dep4 opened this issue 5 years ago • 4 comments

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

dep4 avatar Apr 22 '21 13:04 dep4

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

Lanchon avatar Apr 22 '21 21:04 Lanchon

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

dep4 avatar Apr 22 '21 23:04 dep4

that comment was for JF.

Lanchon avatar Apr 26 '21 03:04 Lanchon

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.

JesusFreke avatar Mar 08 '22 20:03 JesusFreke