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

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

  •  
  •   linusyang · 2017-09-29 14:10:38 +08:00 · 17011 次点击
    这是一个创建于 389 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原因:因同时需要使用 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,这下就不怕官方固件更新了。

    172 回复  |  直到 2018-09-19 10:47:11 +08:00
    1  2  
        101
    lucifer9   274 天前
    国际版 / EU 版,支持 widevine 不?支持到多少呢?有没有刷了的方便用 这个工具 https://play.google.com/store/apps/details?id=com.androidfung.drminfo 看一下呢。没有这东西看个 Netflix 还得找一年前的版本
        102
    Jormin   274 天前
    @linusyang 那我等下次有新版发布的时候再刷吧 先谢谢大佬~ 我也给你泡一杯卡布奇诺~
        103
    asipirin1120   274 天前
    @wangyilin1226 NFC 内置安全模块可以通过修改 build.prop 加回来
        104
    csvw   274 天前
    请问 eu 版是不是集成了 google 全家桶,国内使用是不是会加速电量消耗?
        105
    zshstc   274 天前
    我用的小米六,一直纠结于以下两点。

    1. 上划手势的全局搜索中无法用 google,目前是吧 chrome 的搜索部件放在了桌面,占了一行图标的位置。
    2. 无法添加美元开关到桌面,这个让人很不爽,其他的第三方桌面都支持,可惜第三方桌面怎么都不是亲生的,老是有小问题。

    就想知道楼主刷的欧洲版能不能解决这两个问题,值不值得刷?我每天都用公交卡功能,离不开。
        106
    Jormin   274 天前
    @lucifer9 我的显示支持
    版本是 1.0
        107
    lucifer9   273 天前
    @Jormin 多谢!请问是国际版还是 EU 啊,过几天我再刷了试试。L1 没高清,不过总比找 1 年前的 App 方便些。话说 Netflix 也够鸡贼的,过不了 safenet 测试连 play store 里面都搜不到。国内这些 ROM 当然是不可能过的。三棒国内版的也不行。不过他家有个好处是 widevine 版本 L3,能看高清。华为稍好点只有 L1 起码能装上 App。只有小米魔改的太厉害,啥都没有了。
        108
    Jormin   273 天前
    @lucifer9 我装的是 eu 版本
    Google Widevine Modular DRM 下写的是支持。版本 1.0 安全级别 L3
    具体的你可以看这个截图 https://imgchr.com/i/p4tqYj
    可是我 Google Play 里搜不到 Netflix 的东西诶(我是美区
        109
    Jormin   273 天前
    @lucifer9 MIUI eu 版本也是过不了 safenet 的
    你需要装插件
        110
    lucifer9   273 天前
    @Jormin Sorry,之前说错了,widevine 这东西,L1 是最高...貌似必须原厂支持才有戏,unlock 大部分就只剩 L3 了(我用 Sony xz1c 试了试)。只有亲儿子是 unlock 了还能 L1 的。SafeNet 过不去 Play Store 上看不到 Netflix,不过可以手工装,也不影响看。
        111
    srwgin   273 天前
    最新開發版是基於 Android O
    fstab.qcom 已經變更位置了,不再存放在 boot.img 裡面
    而是改放到 system.new.dat 裡面
        112
    linusyang   273 天前 via iPhone
    @Jormin @lucifer9 能过 safetynet,我就在用 android pay。

    @srwgin 新版脚本已支持修改 oreo 的 fstab,放在 eufix 那个包里面了。
        113
    linusyang   273 天前 via iPhone
    补充一下,我没有 root 而且启用了 fbe。
        114
    huclengyue   273 天前 via Android
    gapp 精简版刷了之后就能用 google pay。。用那些安装器安装的是不行的
        115
    linusyang   273 天前 via iPhone
    @huclengyue 是的,安装器安装的 google play 不在系统分区,缺少一定的系统权限。而且可能没有 certified(这个跟 build.prop 的版本 string 有关,xiaomi.eu 魔改成了国际稳定版的),cts 检验可能通不过。
        116
    JacFrak   273 天前
    @zshstc root 之后卸载装个软件卸载自带的搜索功能
        117
    zshstc   273 天前
    @JacFrak 自带的搜索可以搜索设置里面的项目,这个第三方软件做不到啊
        118
    linusyang   272 天前 via Android
    @lucifer9 我刚才测了一下,我机器的 widevine security level 是 L3
        119
    raptium   272 天前
    我的 小米 6,国际版 开发板 8.1.18
    看到其他地方说国际版需要多提取一个 SmartcardService.apk ,于是修改楼主的脚本提取了。
    然而 sideload 刷入了生成的 zip 以后,开机并没有看到 小米钱包。
    看下来觉得诡异的是,在 twrp 下,文件管理器能看到 /system/app/Mipay TSMClient 等文件
    但是开机进系统后,adb shell 进去看,/system/app/ 下面又没有 Mipay TSMClient ...
    也不知道究竟怎么了。
        120
    linusyang   272 天前 via Android
    @raptium 可能不可以用 sideload 方式刷,这个安装包的脚本 updater-binary 是 bash 脚本,不是二进制,只在 twrp 里测试过可以安装。
        121
    raptium   272 天前 via iPhone
    @linusyang 我用的 twrp 的 sideload,我看日志 update binary 里的脚本都执行了的,并且从 twrp 的文件管理器来看,那些文件也确实写入了。不知道是不是 Oreo 的原因。
        122
    raptium   272 天前
    昨天遇到的问题大概是我没有关闭 dm-verity,今天重新改用 Magisk 已经成功了。
    国际版 Rom 也不需要提取 SmartcardService,门卡模拟加一个 NextPay 就行了。
        123
    Jormin   270 天前
    @wangyilin1226 我好想死 抱着侥幸心理直接用了 eu 论坛的 recovery 加密了储存 结果直接显示 internal storage 为 0,只能清空 data 重新刷过。。。
        124
    linusyang   270 天前
    @Jormin 不用清空的,东西都还在,只是没有装载显示出来而已,xiaomi.eu 上的 twrp 不支持解密。
        125
    Jormin   270 天前
    @linusyang 我清空了之后才发现其实不用清空 TAT 我好蠢
        126
    cnmusa   264 天前
    感觉还是国人的包要好一些
        127
    linusyang   264 天前
    @cnmusa 主要看需求吧,我需要 safetynet 认证,貌似就 eu 版的可以。还有是信誉,eu 版还是靠谱的,国内的不太敢用。
        128
    cnmusa   264 天前 via Android
    @linusyang 嗯 两个手机 一个 mi6 一个红米 note4 准备 note4 刷一些 eu 的 rom 不过 e 文看着费劲 不知道刷什么包好
        129
    qqjt   263 天前
    windows 下运行了脚本,看到 all done,然后找不到 zip 文件,懵逼了……
    小米 6 的开发版 rom。
        130
    linusyang   263 天前   ♥ 1
    @qqjt 要先下载固件放在目录里。或者改一下 deploy.sh 里面的地址,用 deploy.bat 。这个脚本是自用的,不是很友好,要自己看一下代码。
        131
    qqjt   263 天前
    @linusyang 已成功提取,要用卡刷包我下的线刷包 =。=
        132
    qqjt   263 天前
    小米 6 搞机成功,版本 8.1.25 ,介绍下我的步骤:
    - 下载 xiaomi.eu 的 rom:xiaomi.eu_multi_MI6_8.1.25_v9-8.0.zip ,和国内的开发版 miui_MI6_8.1.25_0110827d3f_8.0.zip 。
    - 用楼主的脚本提取安装包:将国内版 zip 放到目录下,执行 extract.sh ,获得 mipay-MI6-8.1.25.zip ;换 eu 版,执行 cleaner-fix.bat ,获得 eufix-MI6-8.1.25.zip 。
    - 解锁 bootloader,刷入 twrp ;
    - 进入 twrp,四清,刷 xiaomi.eu 的 rom,挂载 system,刷入提取出的俩个 zip,reboot system。
        133
    linusyang   263 天前 via Android
    @qqjt 谢谢测试,补充一下,如果要国内天气源,可以装提取出来的 weather mod apk,如果要还原国外源就装回 orig apk。
        134
    srwgin   263 天前
    奇怪之前用还正常 更新 git 的文件后就这样了
    extract.sh: line 2: $'\r': command not found
    extract.sh: line 3: cd: $'.\r': No such file or directory
    extract.sh: line 4: $'\r': command not found
    extract.sh: line 6: $'\r': command not found
    extract.sh: line 18: $'\r': command not found
    extract.sh: line 19: syntax error near unexpected token `$'{\r''
    'xtract.sh: line 19: `exists() {
    请按任意键继续. . .
        135
    linusyang   262 天前 via Android
    @srwgin 换行符错了,crlf 转 lf 应该就行了,我这个打包的 bash 是 cygwin 的,比较敏感。
        136
    asipirin1120   262 天前
    唔 楼主的加密脚本成功让我卡启动进不了系统了
        137
    linusyang   262 天前 via Android   ♥ 1
    @asipirin1120 可能要等一会,加密要时间的。只推荐第一次刷机时候用,速度会快点。这个脚本主要是为了提取 mipay,eufix 是我自用的,没仔细测试过,可能有风险。
        138
    royalsys   262 天前
    感谢楼主指路……
    我在用国际版的 rom 8.2.1,使用楼主的最新版本 8.2.1 的包的话,在打开公交卡页面的时候,会报错退出……
    报错信息是这个: ,不知道楼主有思路吗?

    用 8.1.25 的就好了。感觉是 miui 玩坏什么了……

    @raptium #121 似乎也用的国际版 ROM。是否有遇到同样的问题呢?
        139
    asipirin1120   262 天前
    @linusyang 唔我是刷好了想加 eufix 的时候刷进去的 然后就卡启动画面进不去 重启直接进 rec 了
    唔 现在还是多一步把 zip 里的东西自提替换 暂时放弃加密了
        140
    Jormin   262 天前 via Android
    @asipirin1120 你是 eu 版本么? eu 论坛提供的 recovery 是不支持加密的 所以会没法挂载 开机直接进 recovery。 你可以看下上面的帖子有提到支持的 recovery 的下载地址。
        141
    linusyang   259 天前
    @asipirin1120 @Jormin 现在 eu 又搞幺蛾子,会自动给你刷 xda 上网友 raupe 自己做的 recovery,而且还是人家不支持解密的旧版。raupe 的最新版是支持解密的,我正在用。
        142
    linusyang   259 天前
    @royalsys 你就先用旧版 8.1.25 提取的吧,这个貌似是小米自己的问题了,国际版和国内版某些 miui 框架不匹配。eu 版 rom=国内版底包+gapps+精简系统 apk+build.prop 修改国际版+系统 app 魔改加回部分国内版功能,所以可以直接提取国内版的用。
        143
    Frost   250 天前
    @qqjt 这样卡刷之后,应该还是没加锁的吧,没加锁也能用 pay 吗?
        144
    raptium   250 天前
    @royalsys 嗯,之前一直没有空升级,今天升级后确实和你一样的问题,还是用旧版就行了
        145
    Jormin   223 天前
    @raptium
    @royalsys 请问目前国际版 8.3.8 有无报错呢?
        146
    Jormin   222 天前
    不知道前面几楼用国际版(非 EU )的大神是怎么操作的,我这边国际版的刷了之后会卡米。。。
        147
    Jormin   222 天前
    可以了- -
    参考了 @raptium 的回复 用了 magisk 刷 可以用了
        148
    danbao   210 天前
    For Oreo-based MIUI (Android 8.x), the location of "fstab.qcom" has been moved to /system/vendor/etc/fstab.qcom. You need to modify that file accordingly, by changing "encryptable=ice" to "fileencryption=ice".

    Edit: If you already encrypted the data partition in Nougat/Oreo MIUI, there is no need to re-format the partition when flashing the new system. The partition will be kept encrypted. But you need a recovery (TWRP) with encryption support (try @raupe 's TWRP Build 20180124-0958 or later version).
        149
    danbao   210 天前
    找到了 Android 8 下面怎么改了
        150
    linusyang   210 天前   ♥ 1
    @danbao 这就是我发的。。
        151
    wangyilin1226   208 天前
    @linusyang 没有在 eufix 中找到 mms
        152
    eiarhabi   200 天前
    @linusyang 缺什么?不知道有没有大佬能研究一下把组件补上……
        153
    to2false   177 天前 via Android
    感谢大大,国际版稳定版已经刷上了
        154
    liangch   169 天前
    @linusyang 请教下,微信 /支付宝 /小米钱包的指纹支付在 eu 版本上能用么?
        155
    chestermax   161 天前
    @qqjt 小米 6 8.5.8 似乎不行
        156
    wangyilin1226   141 天前
    @linusyang 稍微挖个坟 MIUI10 的适配的大佬还有兴趣做吗
        157
    Jormin   128 天前
    @wangyilin1226 miui 10 不支持了吗?
    我这边还可以用啊
        158
    wangyilin1226   126 天前
    @Jormin MIUI10 国际版刷现行 release 直接不显示 App
        159
    Jormin   125 天前
    @wangyilin1226 我现在用的是 miui 10 8.6.14 国际版
    然后用 magisk 刷入的 https://www.v2ex.com/t/426629 这个 PO 主提供的 Magisk 包,然后再到 System/App (好像是这个目录吧 忘记了)拿 Release 里的文件直接替换就可以正常用了。
    实际上可以自己用 Release 里的文件写 Magisk 的,我替换是因为原 Po 的 Mipay 版本太低了 刷进去打开会崩溃。
        160
    linusyang   124 天前   ♥ 3
    @wangyilin1226 @Jormin @liangch @chestermax
    诸位,好久没升级系统,所以没办法测试。刚升到 xiaomi.eu 发布的 MIUI 10,版本号 8.6.14 ,提取同版本国内 ROM 的小米支付,可以顺利使用各项功能,无 FC。

    最新提取脚本和 Mix 2 提取文件已更新到 Repo。遇到奇怪问题请备份好,清掉 Dalvik Cache 再试。
        161
    wuyuxing   81 天前
    真的非常感谢,我本人也是 Google 重度使用者,同样也选择了 EU 作为日常用系统,一直苦闷于这个问题,近日用您的方法成功为 mix2s 添加上了公交卡服务,另外想问一下页面中有写 eufix 需要在加密或新分区中刷入,我未加密过手机分区,但是有 8.0 自带的强制加密,不知是否可以直接刷入 eufix 不清空数据?
        162
    watermeter   77 天前   ♥ 1
    @wuyuxing #161 现在 mix2s 有没有能自动解密 data 的 rec
        163
    linusyang   72 天前   ♥ 1
    @wuyuxing 我改了下最新的脚本,默认 eufix 不改加密了,可以直接刷。强制加密的脚本单独放在了 eufix-force-fbe-oreo.zip 。
        164
    ly19870111   71 天前 via Android
    请问 eufix-mimix2.zip 和 eufix-appvault-MIMIX2.zip 的作用分别是什么?我也是用的 eu 版
        165
    wuyuxing   69 天前
    现在是有了,不过我也还没用过
        166
    linusyang   67 天前   ♥ 1
    @ly19870111 appvault 是负一屏,就是最左边的快捷方式。eu 和国际版的把支付相关的快捷方式去掉了,我把国内版的提取回来了,放在这个包里面,有需要的可以单独刷。
        167
    ly19870111   62 天前 via Android
    感谢楼主回答,之前已经解包了解,十分感谢啊!
        168
    PowerDi   56 天前
    @linusyang 感谢!实在解决了大问题,如果可能,是否也可以把国内的“个性主题”也提取出来?
        169
    eraserking   38 天前
    @linusyang 有一个疑问,MIX 2S,现在刷进 O 版的 EU 之后,格式化了内置存储。按你所述,应该是开启了加密,然后我也检查了 /vendor/etc/fstab.qcom,确实是 encryptable=ice,quota,在手机设置里面看到也是已加密,但是进 Recovery ( EU 版自带的 TWRP )并不提示要解密,也能正常读取存储。所以我有些疑惑,那现在究竟是处于加密还是不加密呢?因为按我之前的经历来看,加密之后进 TWRP 是要求解密的,但是现在并没有,所以我也不确定是什么状态了。
        170
    linusyang   34 天前
    @eraserking 你要确认一下你这个版本的 twrp 是否真的解密 data 分区了。点 install,看 sdcard 里的文件名是否是乱码。如果是乱码说明 twrp 并没有真正解密。理论上来说 data 分区加密了,只要不格式化就一直是加密的。
        171
    linusyang   34 天前
    @PowerDi eu 版本把 build.prop 里的参数改了,伪装成国际版了,就算提取了原版 apk,装进去也是国际市场,需要反编译 apk,或者用 xposed hook,这个需要你自己研究。另外,修改主题 app 涉及到版权的问题,有点不太好,所以不打算支持。
        172
    eraserking   34 天前
    @linusyang 谢谢。后来升了 P (没格式化),现在显示是未加密了,和实际情况相符,说明 O 的时候应该这里是显示错误。不过这就带来个问题,在 encryptable=ice,quota 的情况下,我格式化了存储,为什么是未加密的状态?还是说这个状态只是在已加密的状态下支持加密,但是并非在格式化的时候启用加密?
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3162 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 25ms · UTC 07:50 · PVG 15:50 · LAX 00:50 · JFK 03:50
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1