各位 Android 开发大佬,帮忙看看我这个 pixel ims 修改哪里有问题,想用 shizuku 打开 vowifi

44 天前
 yjcn
commit 是这个 https://github.com/yjcn/pixel-volte-patch/commit/d919161c090afa643a3c944f68698016f92283e5

想着给 mate 20 pro 打开 vowifi 支持,看到有 pixel ims 这个 app ,可以配合 shizuku 使用

由于 mate20pro 只支持 Android 10 ,原版应该是给 Android 11 及以上使用的,里面有些内部 api 接口有变化

之前没写过 Android ,靠 copilot 简单改了下,获取相关服务接口都改成用反射获取,已经改了一些了,可以看下之前的 commit 记录

现在被 carrierConfigLoader 的 getConfigForSubId 接口卡住了,反射提示没有这个接口,看了 Android 10 的源码里是有的,
现在系统是鸿蒙 4.0 底层应该还是 Android 10 ,难道鸿蒙把这个接口删了,难道要换回 emui 吗?
1041 次点击
所在节点    程序员
7 条回复
yjcn
44 天前
报错信息

03-12 22:20:20.975 16388 16388 E AndroidRuntime: FATAL EXCEPTION: main
03-12 22:20:20.975 16388 16388 E AndroidRuntime: Process: dev.bluehouse.enablevolte, PID: 16388
03-12 22:20:20.975 16388 16388 E AndroidRuntime: java.lang.NoSuchMethodException: com.android.internal.telephony.ICarrierConfigLoader$Stub$Proxy.getConfigForSubId [int]
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at java.lang.Class.getMethod(Class.java:2072)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at java.lang.Class.getMethod(Class.java:1693)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at dev.bluehouse.enablevolte.ModerKt.callGetConfigForSubId(Moder.kt:27)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at dev.bluehouse.enablevolte.SubscriptionModer.getBooleanValue(Moder.kt:232)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at dev.bluehouse.enablevolte.SubscriptionModer.isVoLteConfigEnabled(Moder.kt:336)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at dev.bluehouse.enablevolte.pages.ConfigKt.Config$loadFlags(Config.kt:89)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at dev.bluehouse.enablevolte.pages.ConfigKt.access$Config$loadFlags(Config.kt:1)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at dev.bluehouse.enablevolte.pages.ConfigKt$Config$1$1.invokeSuspend(Config.kt:120)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
03-12 22:20:20.975 16388 16388 E AndroidRuntime: Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@e3fb1f6, androidx.compose.runtime.BroadcastFrameClock@39be9f7, StandaloneCoroutine{Cancelling}@6b61064, AndroidUiDispatcher@5dba2cd]
03-12 22:20:20.987 1104 1342 E ScreemCommon: fail to extract lcd fps mode!
03-12 22:20:20.992 1586 2099 E AwareLog: CpuKeyProcessSetVipFeature: getUidsByUid pkgName is null, uid=10888
03-12 22:20:21.000 1586 1744 E HwSystemMemoryUtils: suspendConcurrentGc InvocationTargetException
03-12 22:20:21.002 1586 2106 E InputDispatcher: channel 'b4cd559 dev.bluehouse.enablevolte/dev.bluehouse.enablevolte.HomeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
03-12 22:20:21.002 1586 2106 E InputDispatcher: channel 'b9a11ad dev.bluehouse.enablevolte/dev.bluehouse.enablevolte.HomeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
Donaldo
44 天前
我逆向过 mate60pro 的 framework.jar (或者其他的某个系统应用,记不清了),里面会判断是不是国行,是的话就返回 false/null 不能开 vowifi 。所以我就放弃了
ysc3839
44 天前
大概需要反编译系统 Framework 看代码
milkice
44 天前
同楼上,这种情况你只能自己拿到系统文件去反编译逆向
yjcn
43 天前
@milkice @Donaldo @ysc3839 大佬们 我反编译了 framework ,发现还是我的反射接口没写对,少了个参数,我看错了,应该是 ICarrierConfigLoader 的接口,看成 CarrierConfigManger 了,现在 app 可以正常运行了,但好像 vowifi 的开关没起作用,打开也还是显示 2g 状态,短信还是收不到,试了下 volte 开关是有作用的,关掉设置里的 VoLTE 开关就消失了,另外 pixel ims home 页面显示的 ims 状态都是未注册。

请问各位大佬们还有什么排查思路
milkice
43 天前
@yjcn 所以运营商是哪个?中国电信?如果基带层面禁用了,这里怎么改都没用
yjcn
43 天前
@milkice t mobile 哈 不是国内运营商 之前忘记说了 esim 写到 estk 卡里的 放 iPhone 上是没问题的 可以激活 voWiFi 正常使用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1117972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX