V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yjcn
V2EX  ›  程序员

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

  •  
  •   yjcn · 23 天前 · 911 次点击
    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 吗?
    7 条回复    2025-03-14 11:49:28 +08:00
    yjcn
        1
    yjcn  
    OP
       23 天前
    报错信息

    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
        2
    Donaldo  
       23 天前
    我逆向过 mate60pro 的 framework.jar (或者其他的某个系统应用,记不清了),里面会判断是不是国行,是的话就返回 false/null 不能开 vowifi 。所以我就放弃了
    ysc3839
        3
    ysc3839  
       23 天前
    大概需要反编译系统 Framework 看代码
    milkice
        4
    milkice  
       23 天前 via Android
    同楼上,这种情况你只能自己拿到系统文件去反编译逆向
    yjcn
        5
    yjcn  
    OP
       22 天前
    @milkice @Donaldo @ysc3839 大佬们 我反编译了 framework ,发现还是我的反射接口没写对,少了个参数,我看错了,应该是 ICarrierConfigLoader 的接口,看成 CarrierConfigManger 了,现在 app 可以正常运行了,但好像 vowifi 的开关没起作用,打开也还是显示 2g 状态,短信还是收不到,试了下 volte 开关是有作用的,关掉设置里的 VoLTE 开关就消失了,另外 pixel ims home 页面显示的 ims 状态都是未注册。

    请问各位大佬们还有什么排查思路
    milkice
        6
    milkice  
       21 天前 via Android
    @yjcn 所以运营商是哪个?中国电信?如果基带层面禁用了,这里怎么改都没用
    yjcn
        7
    yjcn  
    OP
       21 天前 via iPhone
    @milkice t mobile 哈 不是国内运营商 之前忘记说了 esim 写到 estk 卡里的 放 iPhone 上是没问题的 可以激活 voWiFi 正常使用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:59 · PVG 03:59 · LAX 12:59 · JFK 15:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.