V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
linusyang
V2EX  ›  Android

MIUI 9 欧洲版移植小米公交、支付等服务

  •  
  •   linusyang · 2017-09-29 14:10:38 +08:00 · 52951 次点击
    这是一个创建于 2617 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原因:因同时需要使用 Android Pay,MIUI 官方版装 GApps 仍然通不过 SafetyNet 验证,且 Google Play 是未验证的状态,转而刷 xiaomi.eu 的固件(即欧洲版,俗称波兰版)。不过小米支付都被精简掉了,只能自己动手移植回来。

    操作很简单:把俗称“卡刷包”的官方 OTA 完整固件 system.img 提取出来,然后 deodex 以后放在 /system/app 目录即可。需要提取的 apk 有三个,Mipay.apk 、TSMClient.apk 和 UPTsmService.apk 。前两个要 deodex,最后一个 apk 直接拷贝即可。

    手机型号 MIX 2,已测试可以绑定银行卡和开通公交卡。提取和 deodex 推荐用 https://bitbucket.org/superr/superrs-kitchen 的一条龙服务。

    补充 1:支付安全问题可以通过全盘加密保障 (FBE),这样进恢复模式也需要先解密。xiaomi.eu 的固件取消了 boot.img 里面的强制加密,直接刷机后默认是解密状态,且无法再次加密。

    唯一的方法是恢复 boot.img 的强制加密,这样在刷完固件第一次启动的时候会自动加密 /data 分区。恢复的方法是把 boot.img 里面 fstab.qcom 里面 /data 条目的加密选项从 encryptable=ice 改为 fileencryption=ice,具体含义可参见官方 API 文档。
    第 1 条附言  ·  2017-09-29 18:38:19 +08:00
    补充 2: xiaomi.eu 的 MIUI 9 主要面向国外用户,有些过度精简了 (就比如小米支付),而且到官方论坛去反馈也没用。

    目前我发现的其他问题还有:
    1. 日历没有农历,改 build.prop 的地区码也没用,应该是 app 里面完全去掉了。
    2. OTA 包的升级脚本会自动删除 /data/app 里面部分国内软件。这些原本是 MIUI 自带的推广应用,但有些我是要用的,属于误删。不过还好软件的数据并没有删除,仅仅是 apk 删除了。
    第 2 条附言  ·  2017-09-29 18:47:23 +08:00
    补充 3: 这个方法不知道能用多久,这里只是分享一下。小米官方想封锁第三方固件使用这些功能还是很容易的,就看这个公司是否宽容了。Google 对于 Android Pay 的态度是,只要过了 SafetyNet 的认证就让用,感觉还是比较宽容的。如果被封了的话,我用回 iOS 就好了,不想玩猫捉老鼠。
    第 3 条附言  ·  2017-10-07 01:30:44 +08:00

    补充 4: 最后还是忍不住写了一个自动提取的脚本,默认用 Travis CI 自动提取 Mix 2 固件并发布到 releases,这下就不怕官方固件更新了。

    188 条回复    2020-06-23 18:36:24 +08:00
    1  2  
    bjzhou1990
        1
    bjzhou1990  
       2017-09-29 15:28:19 +08:00
    OpenGApps 家的完整版 GApps 也不行吗
    qqjt
        2
    qqjt  
       2017-09-29 15:33:28 +08:00
    666 赞一个
    bianchensz
        3
    bianchensz  
       2017-09-29 16:23:13 +08:00
    大概这就是大佬吧
    baoanlol
        4
    baoanlol  
       2017-09-29 16:37:56 +08:00
    刷欧洲版需要解 bootloader 和装第三方 recovery 么。。
    chmlai
        5
    chmlai  
       2017-09-29 16:40:30 +08:00
    涉及支付这种功能不太敢用非官方的 rom 吧?
    xianyuke
        6
    xianyuke  
       2017-09-29 16:40:48 +08:00
    能否提供一下你已提取的那三个文件?
    wuxiao2522
        7
    wuxiao2522  
       2017-09-29 16:41:08 +08:00
    @baoanlol 同问
    linusyang
        8
    linusyang  
    OP
       2017-09-29 17:09:02 +08:00
    #1 @bjzhou1990 我试了,不行的,看了 eu rom,是要改 build.prop 文件才能过认证。

    #2,3 谢谢!只是分享一下心得。

    #4,7 @baoanlol @wuxiao2522 是的,刷 eu rom 要解锁 BL 而且刷完不能锁上。恢复分区刷的是 twrp,xiaomi.eu 上提供的,实际上是国内开发者编译的,做了英文化而已 。

    #5 @chmlai 确实有风险,用第三方固件都有这个问题,可以拿原版自己精简。我偷懒了,直接用现成的了。我觉得不 root 再加密应该还好,至少手机丢了还有一道保障。

    #6 @xianyuke 不知分享出来是否有版权问题?而且不确定其他机型能否使用。用我推荐的工具提取很简单的,可以自己动手试试。
    JenJieJu
        9
    JenJieJu  
       2017-09-29 17:18:52 +08:00
    @linusyang 有 eu 包的地址吗?我刷了后卡 mi 了。
    linusyang
        10
    linusyang  
    OP
       2017-09-29 18:27:38 +08:00
    #9 @JenJieJu 需要在 twrp 里格式化 /data 分区 [1, 2],会删除所有用户数据(包括 /sdcard ),twrp 会提示输入 yes 后确认。原因是 MIUI 9 官方系统默认加密,xiaomi.eu 的固件在初次安装时不支持加密的 /data,格式化可去除加密。如果想保持系统加密可以参考“补充 1 ”里面的方法。

    [1] https://xiaomi.eu/community/threads/other-roms-for-mi-mix-2.41649/#post-388044
    [2] https://xiaomi.eu/community/threads/mi-mix-2-cleaner-crashes-when-opening-documents-security-app.41690/#post-388008
    tSQghkfhTtQt9mtd
        11
    tSQghkfhTtQt9mtd  
       2017-09-29 21:18:54 +08:00 via Android
    只是需要 Safetynet 的话可以通过刷入 Magisk 然后安装一个模块的方式解决。
    imyip
        12
    imyip  
       2017-09-29 21:48:59 +08:00 via Android
    所以一加 5 移植公交卡到非氢氧系统可行性呢
    sol33
        13
    sol33  
       2017-09-29 21:52:34 +08:00
    部分机型不支持电信 cdma 的问题呢?
    mattx
        14
    mattx  
       2017-09-30 02:27:37 +08:00
    你好,请问下,小米 5 有办法同时使用 google 框架和电信卡么?
    ssdlh
        15
    ssdlh  
       2017-09-30 10:50:50 +08:00 via Android
    @mattx 这两个一起有什么问题吗?正在用。
    xx314327475
        16
    xx314327475  
       2017-09-30 13:24:38 +08:00
    @linusyang 你好 我也是 mix2 刷的国际版 miui9 卡刷 提示不是官方 rom,请问您怎么解决的?

    https://sourceforge.net/projects/xiaomi-eu-multilang-miui-roms/files/xiaomi.eu/MIUI-WEEKLY-RELEASES/7.9.22/
    linusyang
        17
    linusyang  
    OP
       2017-09-30 22:32:45 +08:00   ❤️ 1
    #11 @liwanglin12 没错,Magisk 可以绕过 SafetyNet 检测,也可以修改 build.prop,是个不错的方案。不过默认会 root,模块会直接挂在到根目录,安全性会下降一些,我就没考虑使用了。

    #12 @imyip 貌似不太行吧,NFC 公交卡是跟机型绑定的,不同小米手机支持的进度都不太一样,要分别测试。

    #13,14 @sol33 @mattx 要支持 CDMA1x 通话应该可以在 4636 工程模式里面改 preferred network,网上教程挺多的,不过我没电信卡,没测试过。

    #16 @xx314327475 只有官方包才能“卡刷”,即 OTA 升级,其他的 rom 都只能解锁 bootloader 在恢复模式里刷。小米手机现在刷 OTA 包不仅会验证包的签名,还需要服务器验证,有两重验证。
    asipirin1120
        18
    asipirin1120  
       2017-10-12 22:44:28 +08:00
    给大佬倒一杯卡布奇诺
    asipirin1120
        19
    asipirin1120  
       2017-10-12 22:48:59 +08:00
    嘛 公交卡提示要切换默认钱包 但是在 nfc 那块根本没有小米钱包的选项
    asipirin1120
        20
    asipirin1120  
       2017-10-12 23:20:10 +08:00
    OK
    切换到内置安全组件就能开公交卡了
    linusyang
        21
    linusyang  
    OP
       2017-10-12 23:29:38 +08:00   ❤️ 1
    @asipirin1120 NFC 下面的“安全模块位置”改成“内置安全模块” (Using embedded secure element)。默认是 HCE,给 Android Pay 用的。
    wangyilin1226
        22
    wangyilin1226  
       2017-10-28 20:27:29 +08:00 via Android
    膜拜大神了,之前因为 MIUI9 刷 opengapps 持续卡验证界面改刷欧版,因为只清空了 data 分区而没有格式化导致刷欧版卡第一屏,现在看了已经解决,万分感谢!
    不知可否共享一下 deodex 过后的 App,我拿了最新开发版提取出来的 apk 直接添加到 /system/app 看贴吧应该也能用。
    wangyilin1226
        23
    wangyilin1226  
       2017-10-28 20:30:17 +08:00 via Android
    我是从 Google 搜索到镜像站看到这篇文章,拿着标题搜也没有搜到原帖,反而用 bing 搜找过来了....
    linusyang
        24
    linusyang  
    OP
       2017-10-28 20:49:24 +08:00 via Android
    @wangyilin1226 我后来写了个脚本,自动部署在 https://github.com/linusyang92/mipay-extract/releases 这样每次升级就很轻松了。
    wangyilin1226
        25
    wangyilin1226  
       2017-10-28 21:11:32 +08:00 via Android
    刚看到 update... 感谢大神 release 里面是可以直接卡刷了吗?另外国内版 MIUI 有个叫 circle N 的原生风格做的很好,大佬可以试试看。
    linusyang
        26
    linusyang  
    OP
       2017-10-28 22:45:28 +08:00 via Android
    @wangyilin1226 对,TWRP 里面直接安装就行了
    wangyilin1226
        27
    wangyilin1226  
       2017-10-28 23:08:12 +08:00 via Android
    添加 mipay 卡提示银联可信服务服务已停止... 我看其他帖子还添加了 smartcardservice 不知道是不是因为这个
    wangyilin1226
        28
    wangyilin1226  
       2017-10-28 23:08:48 +08:00 via Android
    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.simalliance.openmobileapi.jar", zip file "/system/app/UPTsmService/UPTsmService.apk"],nativeLibraryDirectories=[/system/app/UPTsmService/lib/arm64, /system/lib64, /vendor/lib64, /system/lib64, /vendor/lib64]]] couldn't find "libuptsmservice.so"
    at java.lang.Runtime.loadLibrary0(Runtime.java:984)
    at java.lang.System.loadLibrary(System.java:1530)
    at com.unionpay.tsmservice.base.UPApplication.<clinit>(Unknown Source)
    at java.lang.Class.newInstance(Native Method)
    at android.app.Instrumentation.newApplication(Instrumentation.java)
    at android.app.Instrumentation.newApplication(Instrumentation.java)
    at android.app.LoadedApk.makeApplication(LoadedApk.java)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java)
    at android.app.ActivityThread.-wrap2(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
    at android.os.Handler.dispatchMessage(Handler.java)
    at android.os.Looper.loop(Looper.java)
    at android.app.ActivityThread.main(ActivityThread.java)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
    wangyilin1226
        29
    wangyilin1226  
       2017-10-28 23:23:27 +08:00 via Android
    另外国际版 MIUI 短信不能自动复制验证码,不知道是不是短信 App 不用导致的
    wangyilin1226
        30
    wangyilin1226  
       2017-10-28 23:47:50 +08:00 via Android
    改 build.prop 卡第一屏了... 如果大佬用的.26 能不能发一下原版... [email protected]
    linusyang
        31
    linusyang  
    OP
       2017-10-29 02:07:14 +08:00 via Android   ❤️ 1
    @wangyilin1226 这个只支持 eu 版,eu 版是基于国内版的,差别不大。国际版应该不支持,还要提取其他组件。releases 里面都是 mix 2 固件里提取的,其他机型要自己提取。
    wangyilin1226
        32
    wangyilin1226  
       2017-10-29 02:45:33 +08:00 via Android
    再次刷机不用 Build 文件了 同步刷 mipay 不报错了
    wangyilin1226
        33
    wangyilin1226  
       2017-10-29 04:25:53 +08:00 via Android
    @linusyang 我说的不能自动提取复制短信验证码就是 eu 版 改了 build.prop 卡开机以后不敢动了... 另外能否把小米漫游加入脚本?
    huaxianyan
        34
    huaxianyan  
       2017-10-30 15:30:11 +08:00
    我倒是可以用 Android Pay,但是在国内用不了啊……
    asipirin1120
        35
    asipirin1120  
       2017-10-30 16:33:28 +08:00
    Mix 2 可以开通岭南通 今天去试了 完美使用
    就是不知道 EU 刷机升级之后 重新移植 Mipay 还能不能用
    Jormin
        36
    Jormin  
       2017-10-31 03:01:28 +08:00
    大神,我直接卡刷了你 Github 上的 Mipay 文件夹。
    开机后,可以看到 小米钱包,但是点进去之后页面一直是在 Loading 的状态,右上角可以添加卡片,但是想打开小米闪付的话,也会一直提示在 Processing。
    请问你这边也会这样么? 系统是 eu 版本的 7.10.26, 设备倒是跟你一样,也是 Mix2
    Jormin
        37
    Jormin  
       2017-10-31 10:28:28 +08:00 via Android
    @wangyilin1226 唔 我的昨晚一直 loading 今天正常了,但是添加 Mi Pay 一样提示银联可信服务已停止。。。 我刷的 eu 版本没改过 build 啊。。。好奇怪,请问后来你是咋解决的?就看你说没改 build,没看懂。。。
    aa2893785
        38
    aa2893785  
       2017-11-01 11:34:59 +08:00
    不知道刷类原生的第三方能否按照这个方法移植?
    flystar
        39
    flystar  
       2017-11-05 08:46:28 +08:00
    @linusyang 请教,刷 xiaomi.eu 的固件,在国内能收到 ota 升级么,看官方帖子是有 ota 的
    另外,首次刷机,需要 Format Data,连 sd 卡的都要格式化么?那放在 sd 卡内的刷机固件不是也没了,应该放哪里呢
    谢谢~
    Jormin
        40
    Jormin  
       2017-11-05 13:13:37 +08:00
    @flystar 1,可以收到 OTA,但是我这次收到的 OTA 跟 eu 直接下载完整固件大小一样 不知道是不是 miui 9 到 Miui 9.1 升级的原因
    2,必须 Format 所有的东西,你可以 Format 之后,连接电脑,进入第三方 Recovery,这个时候你的电脑可以识别你的手机,可以这个时候再把固件放进去 然后在 Recovery 里找到这个固件刷即可。
    Jormin
        41
    Jormin  
       2017-11-05 14:07:21 +08:00
    @linusyang 大神 我的机型也是 Mix2,128gb 的,刷的 Miui EU 版本。
    按照你的办法,刷入后增加卡片的时候会提示银联可信服务已停止,后来我自己的解决办法是,在刷入 UPTsmService.apk 的同时,把 lib 文件夹里的子文件夹 arm, arm64, X86, X86_64 也刷入。这些子文件夹里有 libuptsmservice.so.
    之后就可以正常读卡和加卡了。
    我是技术白,自己摸索出来的- -
    rebelliouswhiz
        42
    rebelliouswhiz  
       2017-11-06 14:30:55 +08:00
    @wangyilin1226 我也是莫名其妙,谷歌作者 nickname 才能找到这个文章...
    rebelliouswhiz
        43
    rebelliouswhiz  
       2017-11-06 14:44:46 +08:00
    @linusyang 请问是否有非 MIUI 系统移植 MIPAY 的相关经验?我的 MI6 准备上 xiaobai@XDA 的 Lineage 了,然而这个刷公交卡功能让我念念不忘... 如果有就最好啦,没有我就先拿 Superr's Kitchen 试着折腾一下
    rebelliouswhiz
        44
    rebelliouswhiz  
       2017-11-06 14:45:40 +08:00
    @aa2893785 你有没有试着折腾一下?
    flystar
        45
    flystar  
       2017-11-08 09:19:11 +08:00
    @Jormin 好的,多谢你的解答
    关于 1,查找了一些资料,基本确认 ota 下载的固件跟完整包一样大小,每次都是
    关于 2,Format data 之后,此时是在 recovery 之下,是直接可以 usb 连接电脑,传输 rom,进行刷机,还是需要重启进入 recovery,然后进行操作?
    另外,我是电信 cdma,不太清楚 eu 版本有没有精简掉这块,因为欧洲好像都没有使用 cdma 的网络。。。
    Jormin
        46
    Jormin  
       2017-11-08 20:42:03 +08:00 via Android
    @flystar 2,直接在 recovery 下连接电脑,不用重启。
    3,现在有官方的 MIUI9 国际版了,你可以试试看。我感觉小米不是一直在推自己这个商务人士很实用 因为支持的频段多么,国际版肯定不会阉割吧。。。
    strayuncle
        47
    strayuncle  
       2017-11-09 10:50:00 +08:00
    顶一个,我也想做这个。
    asipirin1120
        48
    asipirin1120  
       2017-11-10 01:22:10 +08:00 via Android
    @Jormin 不好意思 问一下 lib 文件夹是从哪来的
    asipirin1120
        49
    asipirin1120  
       2017-11-10 02:00:35 +08:00 via Android
    @Jormin 解决了 就是提取 apk 里对应版本的 so 文件放到系统的两个 lib 文件夹内 这样在执行银联那个模块的时候就能直接从系统调用对应 so 文件而不用去 app 内找了
    linusyang
        50
    linusyang  
    OP
       2017-11-10 03:08:14 +08:00   ❤️ 2
    @asipirin1120 @wangyilin1226 @Jormin
    最近没空回复,各位的解决方法是没问题的,提取 apk 里面 lib/arm64-v8a 路径下的文件,放在 /system/app/UPTsmService/lib/arm64,然后设置好权限应该就行了。我会在后面的脚本里加上。

    这个 UPTsmService.apk 是银联官方提供的 SDK,完整地包含了 dex 和 native library。找不到 libuptsmservice.so 可能是因为没有更新 dalvik/art 缓存,我每次升级系统都是双清 cache+dalvik 的,没遇到过这个问题。我查了一下 MIUI 官方固件,这个动态库只放在了 apk 里面,其他路径下都没有。

    @rebelliouswhiz 移植到非 MIUI 系统可能比较麻烦,Mipay.apk 的依赖太多:MIUI 的 UI 库、银联的 SDK、NFC 的 SDK,apk 内嵌的 native library 还有一些依赖。移植就是个苦力活,需要耐心调试,把依赖都找齐打包好,可以做成类似于 gapps 的刷机包。
    asipirin1120
        51
    asipirin1120  
       2017-11-10 20:24:56 +08:00 via Android
    @linusyang 我是把动态库直接丢到 /system/lib 和 /system/lib64 里的 还特意去查了查几个动态库的版本说明 (逃。
    flynaj
        52
    flynaj  
       2017-11-13 16:07:49 +08:00 via Android
    不需要,支付用支付宝,公交车刷卡就行
    flynaj
        53
    flynaj  
       2017-11-13 16:08:47 +08:00 via Android
    系统要的是干净快速
    Jormin
        54
    Jormin  
       2017-11-13 18:19:17 +08:00 via Android
    @flynaj 每个人的需求都不一样 我觉得闪付很多优惠 所以我要(
    wangyilin1226
        55
    wangyilin1226  
       2017-12-05 08:36:56 +08:00 via Android
    @linusyang 请问为什么 beta 版 release 停更了
    linusyang
        56
    linusyang  
    OP
       2017-12-06 12:05:40 +08:00
    @wangyilin1226 我在用稳定版,一周一更太麻烦。可以自己改 deploy.sh 里面的 url,然后运行一下这个脚本就可以了。
    Jormin
        57
    Jormin  
       2017-12-14 17:49:39 +08:00
    @linusyang 楼主 今天尝试着把你 Github 上的代码下载下来 修改了 deploy.sh 里国内新版 miui 的下载链接 运行脚本刷入解压出来的 zip 文件,结果打开后小米钱包没法用了。一打开就崩溃= =
    不会是厂商开始限制了吧= =
    linusyang
        58
    linusyang  
    OP
       2017-12-14 19:21:06 +08:00 via Android
    @Jormin 报错信息是什么?刷 releases 里面的旧版还能用吗?
    Jormin
        59
    Jormin  
       2017-12-14 19:53:22 +08:00
    @linusyang 我发现我钛备份安装后也是直接闪退。。。所以可能是系统的问题 我再测试下 然后有问题再跟你反馈下看看你能帮我不(囧 先谢谢啦
    Jormin
        60
    Jormin  
       2017-12-14 20:34:05 +08:00
    @linusyang 装旧版的 releases 可以了 我想爆炸- -
    看到你消息的时候我已经重装了系统了 TAT
    xiaozhizhu1997
        61
    xiaozhizhu1997  
       2017-12-15 11:24:24 +08:00
    之前用 MI5,刷国际版,直接装两个 APK,发现只能用原有的银行卡 /公交卡,不能新绑 /开,删了就只能刷回中国版绑回来了...
    看来把 APK 们固化很重要啊...
    linusyang
        62
    linusyang  
    OP
       2017-12-15 14:09:11 +08:00
    @Jormin 新版好像还依赖其他 apk,我有空研究一下新版的机制。
    @xiaozhizhu1997 不能开卡是因为国际版缺组件,银联的、NFC 的都少。eu 版的底包是国内版,不是国际版,所以补补 apk 就能用。
    Jormin
        63
    Jormin  
       2017-12-15 17:57:31 +08:00
    @linusyang 大神!我这种技术白就只能指望你了(捂脸
    wangyilin1226
        64
    wangyilin1226  
       2017-12-17 21:14:28 +08:00 via Android
    @linusyang 小米钱包新版加入了 NFC 卡片模拟,应该是缺这个吧。
    coldwan
        65
    coldwan  
       2017-12-31 16:20:19 +08:00
    @wangyilin1226 @linusyang 我刷了国际版的,钱包打开可以看到公交卡余额,3 张银行卡,但是点进公交卡就让我把系统默认钱包切换到小米钱包,可是在 NFC 下面根本没有这个选项,安全模块已经是使用 HCE 钱包了。
    coldwan
        66
    coldwan  
       2017-12-31 16:54:44 +08:00
    @coldwan 也没有 内置安全模块 这个选项
    linusyang
        67
    linusyang  
    OP
       2017-12-31 18:12:37 +08:00
    @coldwan 国际版的不行,eu 版不是国际版。
    coldwan
        68
    coldwan  
       2017-12-31 22:04:16 +08:00
    @linusyang 嗯 我知道。貌似解决国际版中的 内置安全模块 应该就可以了
    wangyilin1226
        69
    wangyilin1226  
       2018-01-07 16:56:10 +08:00
    似乎官方 NFC 模拟比软件做得更好 并且不需要 root 权限 过两天 MIX2 就要更新到 Android Oreo 了 希望大佬可以研究一下新版机制
    Jormin
        70
    Jormin  
       2018-01-12 15:39:42 +08:00
    每天都来刷一刷 看看大神更新了没- -
    wangyilin1226
        71
    wangyilin1226  
       2018-01-13 19:34:17 +08:00
    @linusyang realease 中有了强制加密的文件,看到 mokee 开发者 XiNGRZ 提到在开启了 FBE 的手机上运行不支持 FBE 的 ROM (反之亦然),那么在格式化 data 后刷入运行的 MIUI.eu 能够正常运行是否说明官方已经开启了 FBE?
    wangyilin1226
        72
    wangyilin1226  
       2018-01-13 19:49:49 +08:00
    不好意思,通过 rec 确定了 FBE 可以通过后期处理加入= =
    wangyilin1226
        73
    wangyilin1226  
       2018-01-14 13:22:55 +08:00 via Android
    最新版 MIUI.eu 9.2.5.0 稳定版刷入小米钱包后 NFC 选项中没有系统安全模块无法调用小米钱包支付
    wangyilin1226
        74
    wangyilin1226  
       2018-01-14 22:15:07 +08:00
    再次确认刷入其他版本的也无法调用,疑似 9.2.5.0 在 NFC 设置中屏蔽了系统安全模块
    srwgin
        75
    srwgin  
       2018-01-16 14:10:55 +08:00
    如果是其他机型的话 具体步骤是不是这样
    1.在本来国内版 rom 上 登陆小米账号 然后小米钱包创建交通卡并且绑定银行卡
    2.解锁 bl 刷 twrp 清数据 刷欧盟版 rom
    3.下载 mipay-extract 下载国内最新 rom 扔在一个目录后 运行 extract.bat 后得到 apk
    4.把 apk 扔到 /system/app 重启
    5.重启后就能正常使用了
    是不是这样一个过程
    如果不做 1 的话 是不是在欧盟版 rom 里面不能开卡和充值
    srwgin
        76
    srwgin  
       2018-01-16 15:04:55 +08:00
    顺便 如果用你的自动处理脚本 其他机型的话 除了改 2 个 rom 下载地址之外,其他还有代码要针对自己机型进行处理吗 谢谢
    rility
        77
    rility  
       2018-01-18 16:05:16 +08:00   ❤️ 2
    谢谢 op,用你做好的 zip 可以使用
    设备 mi6 版本最新国际版体验版 之前那些说没有内置安全模块的,可以在 build.prop 里进行更改 ro.se.type=HCE,UICC,eSE 即可
    推荐做成 magisk module
    linusyang
        78
    linusyang  
    OP
       2018-01-19 23:19:31 +08:00
    @rility 谢谢提醒,已经在最新的版本里加了这个修复。
    @srwgin 其他理论上应该不用改的。
    @wangyilin1226 eu 版又开始乱改东西了,刷最新版的包会自动修复,开发板稳定版都重新打包了。FBE 那个包就是我在主贴里提到的,只是以前忘了放出来。
    linusyang
        79
    linusyang  
    OP
       2018-01-20 00:00:11 +08:00
    @srwgin 补充一下,步骤 1 可以不需要,应该可以开卡充值的。我手机拿到手一解锁就刷了 eu 版和 mipay 包,基本没有用过原版国内系统。
    wangyilin1226
        80
    wangyilin1226  
       2018-01-21 07:02:29 +08:00
    请问强制加密的 zip 包是每刷一边系统都要重新刷入吗
    wangyilin1226
        81
    wangyilin1226  
       2018-01-21 07:29:54 +08:00
    在格式化并清空存储后刷入 8.0 包和强制加密,系统启动后 rec 依旧不需输入密码进入,加密失败。
    wangyilin1226
        82
    wangyilin1226  
       2018-01-21 07:44:43 +08:00   ❤️ 1
    MIUI.eu 论坛里的 rec 不支持 FBE 解密,可以从这里 http://www.shuajizu.cn/forum.php?mod=viewthread&tid=18300&extra=page%3D1 下载解密版本。
    Jormin
        83
    Jormin  
       2018-01-21 14:35:17 +08:00 via Android
    @wangyilin1226 请问你现在的系统是测试版的 8.1.18 不?强制加密的包是用的 OP stable 里的强制加密 zip 么?
    wangyilin1226
        84
    wangyilin1226  
       2018-01-21 16:18:54 +08:00
    @Jormin 我现在在 FBE 加密基础上直接刷入 Oreo 和刷入 Oreo 后刷入强制加密都会导致无法开机,现在修改 boot.img 试试
    wangyilin1226
        85
    wangyilin1226  
       2018-01-21 16:31:16 +08:00
    晕了,Oreo 解包 boot.img 后没有 fstab.qcom,是不是 MIUI.eu 开发者把 FBE 解密魔改掉了
    wangyilin1226
        86
    wangyilin1226  
       2018-01-21 16:41:47 +08:00
    Oreo 中去除了 fstab.qcom,和 MIUI 开发者没关系
    https://source.android.com/security/encryption/file-based?hl=zh-cn
    wangyilin1226
        87
    wangyilin1226  
       2018-01-21 16:46:26 +08:00
    启用文件级加密
    通过将 fileencryption=contents_encryption_mode[:filenames_encryption_mode] 标记添加到 userdata 分区最后一列的 fstab 行中,可以启用 FBE。contents_encryption_mode 参数定义了哪些加密算法用于文件内容的加密,filenames_encryption_mode 参数定义了哪些加密算法用于文件名的加密。contents_encryption_mode 只能是 aes-256-xts。filenames_encryption_mode 有两个可能的值:aes-256-cts 和 aes-256-heh。如果未指定 filenames_encryption_mode,则使用 aes-256-cts 值。
    wangyilin1226
        88
    wangyilin1226  
       2018-01-21 17:05:04 +08:00
    由于 Oreo 中 fstab 更换了位置
    找到 OP5 的 Oreo 在解除 FBE 加密时

    for fstab in /system/vendor/etc/fstab.*; do
    [ -f "$fstab" ] || continue
    print "Found fstab: $fstab"
    sed -i "
    s/\b\(forceencrypt\|forcefdeorfbe\|fileencryption\)=/encryptable=/g
    " "$fstab"
    found_fstab=true
    done

    似乎修改 fstab 位置后要修改三个项目才能引导开机加密?
    wangyilin1226
        89
    wangyilin1226  
       2018-01-21 18:23:36 +08:00
    魔改了一下别人给 OP5Oreo 做的去除加密可以加密了,我看看怎么上传上来
    wangyilin1226
        90
    wangyilin1226  
       2018-01-21 18:28:11 +08:00
    https://share.weiyun.com/0a0c59afb67ef61a43c8083430330318
    刷入 Oreo 后刷入此文件即可解锁 DM 并加密 FBE、
    wangyilin1226
        91
    wangyilin1226  
       2018-01-21 20:21:18 +08:00
    另外最新稳定版的短信验证码快捷复制在 Oreo 也没有了,不知道是被屏蔽了还是没做进去。
    linusyang
        92
    linusyang  
    OP
       2018-01-21 20:38:42 +08:00
    @wangyilin1226 Oreo 修改起来更简单了,不用改 boot.img 了,我直接加在 eufix 包的脚本里了:
    https://github.com/linusyang92/mipay-extract/commit/c19df91012a131ef61222cef163357b8de7fa9fd

    xiaomi.eu 经常乱改,比如 /data 分区的 quota 参数也没了,我在脚本里面加回来:
    https://source.android.com/devices/storage/faster-stats
    linusyang
        93
    linusyang  
    OP
       2018-01-21 20:42:14 +08:00
    @wangyilin1226 验证码这个估计是屏蔽了,可以反汇编短信程序看看。
    linusyang
        94
    linusyang  
    OP
       2018-01-21 21:28:09 +08:00
    @wangyilin1226 我改了一下 com.android.mms.util.VerificationCodeUtils 里面对国际版的判断。如果是 mix2,可以试试把 eufix.zip 解包,覆盖 priv-app/Mms.apk ,看看复制验证码功能恢复了没有。
    wangyilin1226
        95
    wangyilin1226  
       2018-01-21 22:39:11 +08:00
    欧版再这么搞下去我就要跳坑国际版了...
    linusyang
        96
    linusyang  
    OP
       2018-01-21 23:31:39 +08:00 via iPhone
    @wangyilin1226 这是小米的问题,国际版一样没有这些功能,eu 版就是因为把 build.prop 改成国际版才导致功能缺失,他们已经 patch 一部分 app,恢复了国内版的部分功能了。
    Jormin
        97
    Jormin  
       2018-01-22 00:41:39 +08:00 via Android
    @linusyang 大神 所以直接刷 eufix 这个包 就可以加密系统了吗?(捂脸
    Jormin
        98
    Jormin  
       2018-01-22 00:43:27 +08:00 via Android
    @linusyang 不需要刷好系统第一次开机刷吧?现在装了近 400 个 app 真是不敢乱来,怕卡米要清光数据重来
    akkkkk77
        99
    akkkkk77  
       2018-01-22 09:09:11 +08:00 via Android
    我想请问,刷国际版系统,再单独安装小米支付之类的 app 可否
    linusyang
        100
    linusyang  
    OP
       2018-01-22 10:11:50 +08:00   ❤️ 1
    @Jormin 呃,不行的,这个只能刚刷完机的时候加密。eu 的固件有 bug,在设置里点加密会卡米,所以才用这种临时方案,利用内核第一次启动时候根据 fstab.qcom 强制加密。
    @akkkkk77 没试过,你可以试试?可能还要补其他 nfc 相关的 apk (smartcard,nextpay 之类的,没仔细研究)。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1158 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.