Allow privileged app with JNIs

microG GmsCore now requires JNIs
This commit is contained in:
Peter Cai 2024-10-07 17:45:23 -04:00
parent f35ea9abad
commit a2e864481d

View file

@ -1,6 +1,11 @@
#!/bin/bash
set -e
PRIVILEGED_APPS=(
"com.google.android.gms"
"com.android.vending"
)
if ! which aapt; then
echo "No aapt binary found; run \`mm aapt\` first"
exit 1
@ -28,6 +33,10 @@ addPrebuiltJniModules() {
for lib_mod_name in "${prebuilt_libs[@]}"; do
lib="$(awk -F'__' '{ print $2 }' <<< "$lib_mod_name")"
app_mod="$(awk -F'__' '{ print $1 }' <<< "$lib_mod_name")"
app_dir="app"
if contains "$app_mod" "${PRIVILEGED_APPS[@]}"; then
app_dir="priv-app"
fi
cat >> Android.mk <<EOF
include \$(CLEAR_VARS)
LOCAL_MODULE := $lib_mod_name
@ -41,7 +50,7 @@ LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_CHECK_ELF_FILES := false
LOCAL_PRODUCT_MODULE := true
LOCAL_STRIP_MODULE := false
LOCAL_MODULE_PATH := \$(TARGET_OUT_PRODUCT)/app/$app_mod/lib/\$(TARGET_ARCH)/
LOCAL_MODULE_PATH := \$(TARGET_OUT_PRODUCT)/$app_dir/$app_mod/lib/\$(TARGET_ARCH)/
include \$(BUILD_PREBUILT)
EOF
done
@ -62,20 +71,20 @@ addJNI() {
local_prebuilt_libs+=("${libname}")
done <<< "$(unzip -l -qq bin/$1 'lib/*')"
if [[ ! -z "$local_prebuilt_libs" ]]; then
addition+=$'\n'
addition+="LOCAL_REQUIRED_MODULES := ${local_prebuilt_libs[@]}"
prebuilt_libs+=("${local_prebuilt_libs[@]}")
fi
}
addCopy() {
addition=""
if [ "$2" == com.google.android.gms ] || [ "$2" == com.android.vending ] ;then
addition=""
if contains "$2" "${PRIVILEGED_APPS[@]}"; then
addition="LOCAL_PRIVILEGED_MODULE := true"
else
# Only add JNI for non-priv-apps (because addJNI and addPrebuiltJniModules do not support priv-app properly)
addJNI $1 $2
fi
addJNI $1 $2
cat >> Android.mk <<EOF
include \$(CLEAR_VARS)
LOCAL_MODULE := $2