MIUI13,14でSmaliPatcherを使う

注意事項

失敗した場合、boot loopする可能性があります
必ずboot loopからの復旧方法を確認しておいてください

以下の手順はMIUI13,14のXiaomi端末でテストしています
※Android12以降のMIUI13,14です
※他のROMや機種は手順が異なる場合があります

新しくA13以降に対応したSmaliPatcherEXが出ていますが、一部の機種(SoC)で再起動時にboot loopする現象を確認しています
SmaliPatcherEXで問題が発生した場合は、以下の手順またはLSPosedを利用する方法を推奨します

必要なファイル

SmaliPatcherMod.zip
MT Manager

動画

海外の掲示板に出す予定で作ったので英語になってますが、同じ操作をしてください。

手順

①SmaliPatcherMod.zipを端末のフォルダ内にダウンロード

②MT Managerをインストールする
③MT Managerを開き、root権限の許可及びファイルアクセスの許可を行う

④右側(システム)のファイル一覧から
system/framework/services.jarを長押しして<- Copyでコピーする

⑤左側(ストレージ)のファイル一覧にservices.jarがあるのでOpen with… "View"で開く

⑥classes.dexをOpen with… "Dex Editor plus"で開き、classes.dexにチェックが入っているのを確認してOK

com.android/server/location/injector/SystemAppOpsHelperを開く

⑧.method public noteOp~と書かれている行を探す

⑨次の行から.method public noteOpNoThrow~直前までの行を全て削除する

⑩削除した部分に以下を追記する

.method public noteOp~(↓ここから↓)
    .registers 14

    const/4 v0, 0x1

    return v0
.end method

.method public noteOpNoThrow~(↑ここまで↑)

⑪右上の保存マークを押して戻り、
com.android/server/location/provider/MockLocationProviderを開く

⑫.method public setProviderLocation~の行を探す(一番下)

⑬記述を以下のように変更する

.method public setProviderLocation(Landroid/location/Location;)V 
    .registers 5

    new-instance v0, Landroid/location/Location;

    invoke-direct {v0, p1}, Landroid/location/Location;-><init>(Landroid/location/Location;)V

    const/4 v1, 0x1

    invoke-virtual {v0, v1}, Landroid/location/Location;->setIsFromMockProvider(Z)V
......
......
......

.method public setProviderLocation(Landroid/location/Location;)V 
    .registers 6

    new-instance v0, Landroid/location/Location;

    invoke-direct {v0, p1}, Landroid/location/Location;-><init>(Landroid/location/Location;)V

    .local v0, "location":Landroid/location/Location;

    const/4 v1, 0x1

    const/4 v3, 0x0

    invoke-virtual {v0, v3}, Landroid/location/Location;->setIsFromMockProvider(Z)V
......
......
......

14右上で保存して戻る
SAVE AND EXIT >> OK

⑮右側のエクスプローラーで一番上の…を押して一番上のファイルまで戻り、storage/emulated/0/(SmaliPatcherModがあるフォルダ)へ移動する

⑯smalipathermod.zipを開き、system/frameworkへ移動する

⑰左側のエクスプローラーのservices.jarを長押ししてAdd->を選択しOKする

⑱Magiskアプリから出来上がったsmalipatchermodをインストールする

⑲エラ-12がでなければ完了です

boot loopしてしまった場合
TWRP 等から Advanced File Managerを開き、
data/adb/modules/fomey.smalipatcher のフォルダをDeleteして再起動します
もしくは端末をセーフモードで起動させます
作成したファイルの使い回しは出来ません

長期間の使用において問題ないことを以下の端末で確認しています
テスト端末
RedmiNote9S MIUI14
POCO X3 GT MIUI14
Redmi9T MIUI14
POCO X3 Pro MIUI14
POCO F4 MIUI13

参考
https://www.ombob.eu.org/2023/04/smali-patcher-for-android-13-step-by.html