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をインストールする
③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して再起動します
もしくは端末をセーフモードで起動させます
作成したファイルの使い回しは出来ません
参考
https://www.ombob.eu.org/2023/04/smali-patcher-for-android-13-step-by.html