npem: install microG APKs as user app

The init script was used to do it before, but init.d has been all but
abandoned by ROMs universally, so effectively the only situation in which
the init script runs is for Magisk.

This change will be very helpful for non-Magisk users, as they will no
longer have to extract and install the APK by hand.

Also deduplicate code from init script and make it just call npem.

(TODO? do the same for bromite?)
merge-requests/39/head
FriendlyNeighborhoodShane 2 years ago
parent ac3da53fbe
commit 08c0ddf11a

@ -18,6 +18,7 @@ perm_rsms="android.permission.RECEIVE_SMS"
# Packages
microG="com.google.android.gms"
PlayStore="com.android.vending"
DroidGuard="org.microg.gms.droidguard"
GCalSync="com.google.android.syncadapters.calendar"
GConSync="com.google.android.syncadapters.contacts"
nlpIchnaea="org.microg.nlp.backend.ichnaea"
@ -61,8 +62,38 @@ permissions () {
fi
}
get_app_location () {
pm list packages -f ${1} | sed 's|package:\(.*\)=[^=]*|\1|g'
}
user_install_app () {
pm install -r ${1}
}
user_install () {
check_package ${1} || return
loc=$(get_app_location ${1})
case ${loc} in
/data/* ) echo "package ${1} already is user app" ;;
* )
user_install_app ${loc} && \
echo "package ${1} installed as user app" || \
echo "failed to install package ${1} as user app"
;;
esac
}
[[ $(whoami) = "root" ]] || [[ $(whoami) = "shell" ]] || error "not running as either ADB or root"
if [ "$(getprop ro.build.version.sdk)" -ge 29 ]; then
# microG GmsCore needs to be installed as user app for all permissions to be granted
# see https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711088518
user_install ${microG}
fi
# microG DroidGuard Helper needs to be installed as user app to prevent crashes
user_install ${DroidGuard}
# Fake Package Signature
permissions ${microG} ${perm_fake}
permissions ${PlayStore} ${perm_fake}

@ -23,29 +23,10 @@ run_initscripts () {
done
}
install_gmscore () {
run_npem () {
# wait until boot completed
until [ $(getprop sys.boot_completed). = 1. ]; do sleep 1; done
if [ $(getprop ro.system.build.version.sdk) -ge 29 ]; then
# microG GmsCore needs to be installed as user app for all permissions to be granted
# see https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711088518
if [ -f "${MODDIR}/system/priv-app/GmsCore/GmsCore.apk" ]; then
pm list packages -f | grep -q /data.*com.google.android.gms || \
pm install -r "${MODDIR}/system/priv-app/GmsCore/GmsCore.apk" &
fi
fi
}
install_droidguardhelper () {
# wait until boot completed
until [ $(getprop sys.boot_completed). = 1. ]; do sleep 1; done
# microG DroidGuard Helper needs to be installed as user app to prevent crashes
if [ -f "${MODDIR}/system/app/DroidGuard/DroidGuard.apk" ]; then
pm list packages -f | grep -q /data.*org.microg.gms.droidguard || \
pm install -r "${MODDIR}/system/app/DroidGuard/DroidGuard.apk" &
fi
${MODDIR}/system/bin/npem
}
install_bromitewebview () {
@ -65,13 +46,11 @@ install_bromitewebview () {
case ${MODULE} in
NanoDroid )
run_initscripts &
install_droidguardhelper &
install_gmscore &
run_npem &
;;
NanoDroid_microG )
install_droidguardhelper &
install_gmscore &
run_npem &
;;
NanoDroid_BromiteWebView )

Loading…
Cancel
Save