015

NikGappsの中身から自作Magiskモジュールを作ってみる

2021年08月11日

Mi 11 Liteの/systemパーティションはとても小さく、GSIを焼くと50MBほどしか空きがありません。そのためいわゆるgappsもMagiskモジュールとしてインストールする必要があります。

Screenshot 20210811-180633 Magisk

他の場所ではMagiskGAppsがオススメされていますが、所々GMS関係の部分が英語だったり、位置情報がうまく動作しなかったりと少々怪しい所があります。そこで既存のGappsパッケージから中身を取り出して、Magiskモジュールを自作してみようと思います。/systemの以下に何かを置くか、既存のファイルを新しいファイルに置き換えるだけのモジュールなら簡単に作れますよ。

今回はNikGappsを使います。Basic版以降を再現しようとするとAOSPの標準アプリをいくつか置き換える処理が入ってきて面倒なので、今回はGMSを使ううえで最小限のものが入ったCore版のモジュールを作ってみましょう。

016

zipを解凍してみると、/commonフォルダ内にスクリプトが、/AppSet/Core内になにやらzipが入っています。

017

見るからにGMSっぽいですね。展開してみましょう。

018

ざっくりこれらのファイルを配置するべき場所がわかりますね。たとえば___priv-app___PrebuiltGmsCore/PrebuiltGmsCore.apkなら、/system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apkに配置することになります。

新しいフォルダを作り、/system/productフォルダを作ってその下にファイルを配置していきます。またGmsCore.zip内のinstaller.shにはいくつか電池消費の最適化まわりの設定が入っています。これもMagiskモジュールの仕組みを使えばできます。

こんな内容のpost-fs-data.shを用意します。公式のDeveloper Guideも参照してください。

#!/system/bin/sh
 
MODDIR=${0%/*}
 
# Copy original system file
cp /system/product/etc/permissions/*.xml $MODDIR/system/product/etc/permissions/
cp /system/product/etc/sysconfig/*.xml $MODDIR/system/product/etc/sysconfig/
 
sed -i '/allow-in-power-save package="com.google.android.gms"/d' $MODDIR/system/product/etc/permissions/*.xml
sed -i '/allow-in-data-usage-save package="com.google.android.gms"/d' $MODDIR/system/product/etc/permissions/*.xml
sed -i '/allow-unthrottled-location package="com.google.android.gms"/d' $MODDIR/system/product/etc/permissions/*.xml
sed -i '/allow-ignore-location-settings package="com.google.android.gms"/d' $MODDIR/system/product/etc/permissions/*.xml
sed -i '/allow-in-power-save package="com.google.android.gms"/d' $MODDIR/system/product/etc/sysconfig/*.xml
sed -i '/allow-in-data-usage-save package="com.google.android.gms"/d' $MODDIR/system/product/etc/sysconfig/*.xml
sed -i '/allow-unthrottled-location package="com.google.android.gms"/d' $MODDIR/system/product/etc/sysconfig/*.xml
sed -i '/allow-ignore-location-settings package="com.google.android.gms"/d' $MODDIR/system/product/etc/sysconfig/*.xml

module_installer.shをダウンロードしてきて、updater-scriptにリネームします。updater-scriptをMETA-INF/com/google/androidの下にコピーし、同フォルダ内に#MAGISKとだけ書かれたupdate-binaryファイルを用意します。

以下のような内容のmodule.propを用意します。idは他と被らないものを用意しましょう。

id=nikgapps-core-ls
name=NikGapps Core
version=210804
versionCode=210804
author=Lon Sagisawa & NikGapps Contributors
description=Minimal Google apps

最終的にこんな構造になります。

019

zipで固めてMagiskで焼くとGMSが使えるようになります。