diff --git a/ChangeLog.md b/ChangeLog.md index 9ef9f2f..eedc783 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -18,6 +18,9 @@ * Full package * drop OmniJAWS +* Bromite WebView package + * only install Bromite WebView if ROM supports `com.android.webview` + * Scripts * detect full path to storage instead of hardcoding `/sdcard` diff --git a/CommonInstaller b/CommonInstaller index 130f180..6afb8eb 100644 --- a/CommonInstaller +++ b/CommonInstaller @@ -785,27 +785,50 @@ gapps_destroy_artifacts () { } ########################################################################################## +# check if ROM has native fake signature spoofing support # by @ale5000 ########################################################################################## -search_fake_package_signature () { +check_fake_package_signature () { PERMISSION=android.permission.FAKE_PACKAGE_SIGNATURE PERMISSION_OD=$(echo -n "${PERMISSION}" | od -A n -t x1 | tr -d '\n' | sed -e 's/^ //g;s/ /00/g') HAS_FAKESIGN=false FW_RES_DIR="${TMPDIR}/framework-res" + FW_RES_FILE="${FW_RES_DIR}/AndroidManifest.xml" - if [ ! -f ${FW_RES_DIR}/AndroidManifest.xml ]; then + if [ ! -f ${FW_RES_FILE} ]; then mkdir -p "${FW_RES_DIR}" unzip -oq /system/framework/framework-res.apk -d "${FW_RES_DIR}" fi - grep -qF "${PERMISSION}" "${FW_RES_DIR}/AndroidManifest.xml" && HAS_FAKESIGN=true - od -A n -t x1 "${FW_RES_DIR}/AndroidManifest.xml" | tr -d ' \n' | grep -qF "${PERMISSION_OD}" && HAS_FAKESIGN=true + grep -qF "${PERMISSION}" "${FW_RES_FILE}" && HAS_FAKESIGN=true + od -A n -t x1 "${FW_RES_FILE}" | tr -d ' \n' | grep -qF "${PERMISSION_OD}" && HAS_FAKESIGN=true ${HAS_FAKESIGN} && return 0 || return 1 } +########################################################################################## +# check if Bromite System WebView is supported +########################################################################################## + +check_bromite_webview_support () { + WEBVIEW_PKG="com.android.webview" + HAS_WEBVIEW=false + + FW_RES_DIR="${TMPDIR}/framework-res" + FW_RES_FILE="${FW_RES_DIR}/res/xml/config_webview_packages.xml" + + if [ ! -f ${FW_RES_FILE} ]; then + mkdir -p "${FW_RES_DIR}" + unzip -oq /system/framework/framework-res.apk -d "${FW_RES_DIR}" + fi + + grep -qF "${WEBVIEW_PKG}" "${FW_RES_FILE}" && HAS_WEBVIEW=true + + ${HAS_WEBVIEW} && return 0 || return 1 +} + ########################################################################################## # Generic Installation ########################################################################################## @@ -871,7 +894,7 @@ install_microg () { # if android.permission.FAKE_PACKAGE_SIGNATURE is not a runtime-permission # (read: ROM is not pre-patched), remove that permission from pre-sets - if ! search_fake_package_signature; then + if ! check_fake_package_signature; then sed '/android.permission.FAKE_PACKAGE_SIGNATURE/d' \ -i ${INSTALLER}/system/etc/permissions/privapp-permissions-google.xml @@ -987,7 +1010,7 @@ install_store () { # if android.permission.FAKE_PACKAGE_SIGNATURE is not a runtime-permission # (read: ROM is not pre-patched), remove that permission from pre-sets - search_fake_package_signature || \ + check_fake_package_signature || \ sed '/android.permission.FAKE_PACKAGE_SIGNATURE/d' \ -i ${INSTALLER}/system/etc/default-permissions/phonesky-permissions.xml @@ -1015,7 +1038,7 @@ install_store () { ui_print " << with Fake Store" nanodroid_install_apk FakeStore - if search_fake_package_signature; then + if check_fake_package_signature; then nanodroid_install_file etc/default-permissions/fakestore-permissions.xml nanodroid_install_file etc/permissions/com.android.vending.xml fi @@ -1136,42 +1159,47 @@ install_initd () { install_bromite_webview () { if [ "${MODID}" = "NanoDroid_BromiteWebView" ]; then - ui_print " << with Bromite WebView" - case ${ARCH} in - arm | arm64 | x86 ) BROMITE_ARCH=${ARCH} ;; - x86_64 ) BROMITE_ARCH=x86 ;; - esac + if ! check_bromite_webview_support; then + error "ROM does not support Bromite WebView installation!" + else + ui_print " << with Bromite WebView" - WEBVIEW_REPLACE=BromiteWebView - BACKUP_PATH="${STORAGE}/nanodroid_backups/$(grep_prop ro.build.flavor)_$(grep_prop ro.build.id)" + case ${ARCH} in + arm | arm64 | x86 ) BROMITE_ARCH=${ARCH} ;; + x86_64 ) BROMITE_ARCH=x86 ;; + esac - for app in webview webviewstub WebViewStub Webview; do - if [ -d /system/app/${app} ]; then - if [ "${MODE}" = "SYSTEM" ]; then - echo " backing up ${app} to ${BACKUP_PATH}/app/${app}" - mkdir -p "${BACKUP_PATH}/app" - rm -rf "${BACKUP_PATH}/app/${app}" - mv /system/app/${app} "${BACKUP_PATH}/app/" + WEBVIEW_REPLACE=BromiteWebView + BACKUP_PATH="${STORAGE}/nanodroid_backups/$(grep_prop ro.build.flavor)_$(grep_prop ro.build.id)" + + for app in webview webviewstub WebViewStub Webview; do + if [ -d /system/app/${app} ]; then + if [ "${MODE}" = "SYSTEM" ]; then + echo " backing up ${app} to ${BACKUP_PATH}/app/${app}" + mkdir -p "${BACKUP_PATH}/app" + rm -rf "${BACKUP_PATH}/app/${app}" + mv /system/app/${app} "${BACKUP_PATH}/app/" + fi + + WEBVIEW_REPLACE=${app} + break fi + done - WEBVIEW_REPLACE=${app} - break + if [ "${NANODROID_UPGRADE}" -eq 0 ]; then + for app in com.android.webview; do + rm -rf /data/data/${app} + rm -rf /data/user/*/${app} + rm -rf /data/user_de/*/${app} + rm -rf /data/app/${app}-* + rm -rf /mnt/asec/${app}-* + rm -rf ${STORAGE}/Android/data/${app} + done fi - done - if [ "${NANODROID_UPGRADE}" -eq 0 ]; then - for app in com.android.webview; do - rm -rf /data/data/${app} - rm -rf /data/user/*/${app} - rm -rf /data/user_de/*/${app} - rm -rf /data/app/${app}-* - rm -rf /mnt/asec/${app}-* - rm -rf ${STORAGE}/Android/data/${app} - done + nanodroid_install_apk BromiteWebView_${BROMITE_ARCH} multilib ${WEBVIEW_REPLACE} fi - - nanodroid_install_apk BromiteWebView_${BROMITE_ARCH} multilib ${WEBVIEW_REPLACE} fi }