Merge branch 'master' into 'master'

Numerous fixes and more respect of the general rule of avoiding uppercase variables

See merge request Nanolx/NanoDroid!23
merge-requests/24/head
Christopher Roy Bratusek 5 years ago
commit 82f4c4509a

29
.gitignore vendored

@ -0,0 +1,29 @@
BromiteWebView/system/
BromiteWebView/system
Full/gsync/K/
Full/gsync/K
Full/gsync/L/
Full/gsync/L
Full/gsync/M/
Full/gsync/M
Full/gsync/N/
Full/gsync/N
Full/gsync/O/
Full/gsync/O
Full/gsync/P/
Full/gsync/P
Full/gsync/common/
Full/gsync/common
Full/swipe/
Full/swipe
Full/system/app/
Full/system/app
Full/system/priv-app/
Full/system/priv-app
NanoDroid-*.zip
NanoDroid-*.zip.sha256
NanoDroid-*.zip.sha256.sig
OsmAnd/system/
OsmAnd/system
data/repo/
data/repo

@ -4,8 +4,28 @@ VERSION=22.3.20190805
CWD=$(readlink -m "${BASH_SOURCE[0]}") CWD=$(readlink -m "${BASH_SOURCE[0]}")
CWD=$(dirname "${CWD}") CWD=$(dirname "${CWD}")
for funcfile in pkg update common download database report; do # DIRS
source "${CWD}/data/build-package.${funcfile}" || exit 1 datafolder="${CWD}/data"
repofolder="$datafolder/repo"
# AppsFolder
appsfolder[0]="Full"
appsfolder[1]="${appsfolder[0]}/system"
appsfolder[2]="${CWD}/${appsfolder[1]}"
appsfolder[3]="${appsfolder[1]}/app"
appsfolder[4]="${appsfolder[1]}/priv-app"
appsfolder[5]="${appsfolder[0]}/gsync"
appsfolder[6]="${CWD}/${appsfolder[5]}"
appsfolder[7]="${appsfolder[0]}/swipe"
appsfolder[8]="${CWD}/${appsfolder[7]}"
appsfolder[9]="OsmAnd/system"
appsfolder[10]="${CWD}/${appsfolder[9]}"
appsfolder[11]="BromiteWebView/system"
appsfolder[12]="${CWD}/${appsfolder[11]}"
for funcfile in pkg update common download database report; do
source "$datafolder/build-package.${funcfile}" || exit 1
done done
[[ -z ${1} ]] && show_help [[ -z ${1} ]] && show_help
@ -82,29 +102,34 @@ for opt in ${@}; do
pull ) pull )
update_indices update_indices
nanodroid_pull nanodroid_pull
update_master
check_nanodroid check_nanodroid
;; ;;
u-microg ) u-microg )
update_indices update_indices
update_microg update_microg
update_master
check_nanodroid check_nanodroid
;; ;;
u-fdroid ) u-fdroid )
update_indices update_indices
update_fdroid update_fdroid
update_master
check_nanodroid check_nanodroid
;; ;;
u-apps ) u-apps )
update_indices update_indices
update_apps update_apps
update_master
check_nanodroid check_nanodroid
;; ;;
u-swipe ) u-swipe )
update_swipe update_swipe
update_master
check_nanodroid check_nanodroid
;; ;;

@ -1,13 +1,17 @@
#!/bin/bash #!/bin/bash
NANODROID_MISSING_FILES=0 nanodroid_missing_files=0
NANODROID_BROKEN_FILES=0 nanodroid_broken_files=0
missing_database="" missing_database=""
debug_message () {
[ "$DEBUG" = '1' ] && echo "$2$(tput setaf 3)$1$(tput sgr 0)"
}
check_nanodroid () { check_nanodroid () {
for file in ${file_database[@]}; do for file in ${file_database[@]}; do
if [[ ! -f ${CWD}/${file} ]]; then if [[ ! -f ${CWD}/${file} ]]; then
NANODROID_MISSING_FILES=1 nanodroid_missing_files=1
missing_database=(${missing_database[@]} ${file}) missing_database=(${missing_database[@]} ${file})
else else
case ${file} in case ${file} in
@ -32,7 +36,7 @@ check_nanodroid () {
;; ;;
* ) * )
NANODROID_BROKEN_FILES=1 nanodroid_broken_files=1
broken_database=(${broken_database[@]} ${file}) broken_database=(${broken_database[@]} ${file})
rm -f ${CWD}/${file} rm -f ${CWD}/${file}
;; ;;
@ -48,7 +52,7 @@ check_nanodroid () {
;; ;;
* ) * )
NANODROID_BROKEN_FILES=1 nanodroid_broken_files=1
broken_database=(${broken_database[@]} ${file}) broken_database=(${broken_database[@]} ${file})
rm -f ${CWD}/${file} rm -f ${CWD}/${file}
;; ;;
@ -56,17 +60,17 @@ check_nanodroid () {
fi fi
done done
if [[ ${NANODROID_MISSING_FILES} -ne 0 ]]; then if [[ ${nanodroid_missing_files} -ne 0 ]]; then
echo -e "\nThe following files are missing:\n" echo -e "\nThe following files are missing:\n"
printf '%s\n' ${missing_database[@]} | uniq printf '%s\n' ${missing_database[@]} | uniq
fi fi
if [[ ${NANODROID_BROKEN_FILES} -ne 0 ]]; then if [[ ${nanodroid_broken_files} -ne 0 ]]; then
echo -e "\nThe following files are broken (and will be removed):\n" echo -e "\nThe following files are broken (and will be removed):\n"
printf '%s\n' ${broken_database[@]} | uniq printf '%s\n' ${broken_database[@]} | uniq
fi fi
if [[ ${NANODROID_MISSING_FILES} -eq 0 && ${NANODROID_BROKEN_FILES} -eq 0 ]]; then if [[ ${nanodroid_missing_files} -eq 0 && ${nanodroid_broken_files} -eq 0 ]]; then
echo -e "\nNanoDroid correctly populated\n" echo -e "\nNanoDroid correctly populated\n"
return 0 return 0
else return 1 else return 1
@ -92,18 +96,18 @@ progress () {
} }
zip_add () { zip_add () {
FILE_PATH="${CWD}/${1}" local file_path="${CWD}/${1}"
FILE_MASK="${2}" local file_mask="${2}"
ZIP_PATH="${CWD}/${ZIP}" local zip_path="${CWD}/${ZIP}"
cd "${FILE_PATH}" cd "${file_path}"
if [ -z "${FILE_MASK}" ]; then if [ -z "${file_mask}" ]; then
zip -qr "${ZIP_PATH}" . || exit 1 zip -qr "${zip_path}" . || exit 1
elif [ -d "${FILE_MASK}" ]; then elif [ -d "${file_mask}" ]; then
zip -qr "${ZIP_PATH}" "${FILE_MASK}" || exit 1 zip -qr "${zip_path}" "${file_mask}" || exit 1
else else
zip -q "${ZIP_PATH}" ${FILE_MASK} || exit 1 zip -q "${zip_path}" ${file_mask} || exit 1
fi fi
cd "${CWD}" cd "${CWD}"
@ -112,17 +116,17 @@ zip_add () {
zip_add_setup () { zip_add_setup () {
cd "${CWD}/doc" cd "${CWD}/doc"
ZIP_PATH="${CWD}/${ZIP}" local zip_path="${CWD}/${ZIP}"
case ${1} in case ${1} in
0 ) 0 )
sed -e 's/nanodroid_overlay=1/nanodroid_overlay=0/' -i .nanodroid-setup sed -e 's/nanodroid_overlay=1/nanodroid_overlay=0/' -i .nanodroid-setup
zip -q "${ZIP_PATH}" .nanodroid-setup || exit 1 zip -q "${zip_path}" .nanodroid-setup || exit 1
sed -e 's/nanodroid_overlay=0/nanodroid_overlay=1/' -i .nanodroid-setup sed -e 's/nanodroid_overlay=0/nanodroid_overlay=1/' -i .nanodroid-setup
;; ;;
1 ) 1 )
zip -q "${ZIP_PATH}" .nanodroid-setup || exit 1 zip -q "${zip_path}" .nanodroid-setup || exit 1
;; ;;
esac esac
@ -158,7 +162,7 @@ increase_version_number () {
increase_module_version () { increase_module_version () {
for module in Full microG FDroid BromiteWebView OsmAnd; do for module in Full microG FDroid BromiteWebView OsmAnd; do
eval $(grep versionCode "${PWD}"/"${module}"/module.prop) eval $(grep versionCode "${PWD}"/"${module}"/module.prop)
versionCode=$((versionCode+1)) local versionCode=$((versionCode+1))
sed -e "s/versionCode.*/versionCode=${versionCode}/" \ sed -e "s/versionCode.*/versionCode=${versionCode}/" \
-i "${CWD}/${module}/module.prop" -i "${CWD}/${module}/module.prop"
done done

@ -107,90 +107,90 @@ fd_OSMAND_CONTOURLINES=(fdroid net.osmand.srtmPlugin.paid app OsmAnd_ContourLine
### ###
file_database=( file_database=(
Full/system/app/Alarmio/Alarmio.apk.gz ${appsfolder[3]}/Alarmio/Alarmio.apk.gz
Full/system/app/Amaze/Amaze.apk.gz ${appsfolder[3]}/Amaze/Amaze.apk.gz
Full/system/app/AnysoftKeyboard/AnysoftKeyboard.apk.gz ${appsfolder[3]}/AnysoftKeyboard/AnysoftKeyboard.apk.gz
Full/system/app/AuroraDroid/AuroraDroid.apk.gz ${appsfolder[3]}/AuroraDroid/AuroraDroid.apk.gz
Full/system/app/AuroraStore/AuroraStore.apk.gz ${appsfolder[3]}/AuroraStore/AuroraStore.apk.gz
Full/system/app/Blokada/Blokada.apk.gz ${appsfolder[3]}/Blokada/Blokada.apk.gz
Full/system/app/DroidGuard/DroidGuard.apk.gz ${appsfolder[3]}/DroidGuard/DroidGuard.apk.gz
Full/system/app/FaceSlim/FaceSlim.apk.gz ${appsfolder[3]}/FaceSlim/FaceSlim.apk.gz
Full/system/app/FDroid/FDroid.apk.gz ${appsfolder[3]}/FDroid/FDroid.apk.gz
Full/system/app/HackersKeyboard/HackersKeyboard.apk.gz ${appsfolder[3]}/HackersKeyboard/HackersKeyboard.apk.gz
Full/system/app/K9Mail/K9Mail.apk.gz ${appsfolder[3]}/K9Mail/K9Mail.apk.gz
Full/system/app/KeePassDX/KeePassDX.apk.gz ${appsfolder[3]}/KeePassDX/KeePassDX.apk.gz
Full/system/app/MPV/MPV.apk.gz ${appsfolder[3]}/MPV/MPV.apk.gz
Full/system/app/NewPipe/NewPipe.apk.gz ${appsfolder[3]}/NewPipe/NewPipe.apk.gz
Full/system/app/nlpBackendApple/nlpBackendApple.apk.gz ${appsfolder[3]}/nlpBackendApple/nlpBackendApple.apk.gz
Full/system/app/nlpBackendDejavu/nlpBackendDejavu.apk.gz ${appsfolder[3]}/nlpBackendDejavu/nlpBackendDejavu.apk.gz
Full/system/app/nlpBackendIchnaea/nlpBackendIchnaea.apk.gz ${appsfolder[3]}/nlpBackendIchnaea/nlpBackendIchnaea.apk.gz
Full/system/app/nlpBackendNominatim/nlpBackendNominatim.apk.gz ${appsfolder[3]}/nlpBackendNominatim/nlpBackendNominatim.apk.gz
Full/system/app/nlpBackendRadiocell/nlpBackendRadiocell.apk.gz ${appsfolder[3]}/nlpBackendRadiocell/nlpBackendRadiocell.apk.gz
Full/system/app/Oandbackup/Oandbackup.apk.gz ${appsfolder[3]}/Oandbackup/Oandbackup.apk.gz
Full/system/app/Odyssey/Odyssey.apk.gz ${appsfolder[3]}/Odyssey/Odyssey.apk.gz
Full/system/app/OpenCamera/OpenCamera.apk.gz ${appsfolder[3]}/OpenCamera/OpenCamera.apk.gz
Full/system/app/OpenKeyChain/OpenKeyChain.apk.gz ${appsfolder[3]}/OpenKeyChain/OpenKeyChain.apk.gz
Full/system/app/OpenLauncher/OpenLauncher.apk.gz ${appsfolder[3]}/OpenLauncher/OpenLauncher.apk.gz
Full/system/app/OpenVPN/OpenVPN.apk.gz ${appsfolder[3]}/OpenVPN/OpenVPN.apk.gz
Full/system/app/Orbot/Orbot.apk.gz ${appsfolder[3]}/Orbot/Orbot.apk.gz
Full/system/app/PrivacyBrowser/PrivacyBrowser.apk.gz ${appsfolder[3]}/PrivacyBrowser/PrivacyBrowser.apk.gz
Full/system/app/QKSMS/QKSMS.apk.gz ${appsfolder[3]}/QKSMS/QKSMS.apk.gz
Full/system/app/SimpleCalendar/SimpleCalendar.apk.gz ${appsfolder[3]}/SimpleCalendar/SimpleCalendar.apk.gz
Full/system/app/SimpleGallery/SimpleGallery.apk.gz ${appsfolder[3]}/SimpleGallery/SimpleGallery.apk.gz
Full/system/app/SmartPackKernelManager/SmartPackKernelManager.apk.gz ${appsfolder[3]}/SmartPackKernelManager/SmartPackKernelManager.apk.gz
Full/system/app/Substratum/Substratum.apk.gz ${appsfolder[3]}/Substratum/Substratum.apk.gz
Full/system/app/Termux/Termux.apk.gz ${appsfolder[3]}/Termux/Termux.apk.gz
Full/system/app/TorBrowser/TorBrowser.apk.gz ${appsfolder[3]}/TorBrowser/TorBrowser.apk.gz
Full/system/app/Twidere/Twidere.apk.gz ${appsfolder[3]}/Twidere/Twidere.apk.gz
Full/system/app/XDALabs/XDALabs.apk.gz ${appsfolder[3]}/XDALabs/XDALabs.apk.gz
Full/system/priv-app/AuroraServices/AuroraServices.apk.gz ${appsfolder[4]}/AuroraServices/AuroraServices.apk.gz
Full/system/priv-app/FakeStore/FakeStore.apk.gz ${appsfolder[4]}/FakeStore/FakeStore.apk.gz
Full/system/priv-app/FDroidPrivileged/FDroidPrivileged.apk.gz ${appsfolder[4]}/FDroidPrivileged/FDroidPrivileged.apk.gz
Full/system/priv-app/GmsCore/GmsCore.apk.gz ${appsfolder[4]}/GmsCore/GmsCore.apk.gz
Full/system/priv-app/GsfProxy/GsfProxy.apk.gz ${appsfolder[4]}/GsfProxy/GsfProxy.apk.gz
Full/system/priv-app/Phonesky/Phonesky.apk.gz ${appsfolder[4]}/Phonesky/Phonesky.apk.gz
Full/system/priv-app/YalpStore/YalpStore.apk.gz ${appsfolder[4]}/YalpStore/YalpStore.apk.gz
Full/gsync/common/app/GoogleCalendarSync/GoogleCalendarSync.apk.gz ${appsfolder[5]}/common/app/GoogleCalendarSync/GoogleCalendarSync.apk.gz
Full/gsync/K/app/GoogleContactsSync/GoogleContactsSync.apk.gz ${appsfolder[5]}/K/app/GoogleContactsSync/GoogleContactsSync.apk.gz
Full/gsync/K/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz ${appsfolder[5]}/K/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz
Full/gsync/L/app/GoogleContactsSync/GoogleContactsSync.apk.gz ${appsfolder[5]}/L/app/GoogleContactsSync/GoogleContactsSync.apk.gz
Full/gsync/L/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz ${appsfolder[5]}/L/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz
Full/gsync/M/app/GoogleContactsSync/GoogleContactsSync.apk.gz ${appsfolder[5]}/M/app/GoogleContactsSync/GoogleContactsSync.apk.gz
Full/gsync/M/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz ${appsfolder[5]}/M/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz
Full/gsync/N/app/GoogleContactsSync/GoogleContactsSync.apk.gz ${appsfolder[5]}/N/app/GoogleContactsSync/GoogleContactsSync.apk.gz
Full/gsync/N/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz ${appsfolder[5]}/N/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz
Full/gsync/O/app/GoogleContactsSync/GoogleContactsSync.apk.gz ${appsfolder[5]}/O/app/GoogleContactsSync/GoogleContactsSync.apk.gz
Full/gsync/O/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz ${appsfolder[5]}/O/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz
Full/gsync/P/app/GoogleContactsSync/GoogleContactsSync.apk.gz ${appsfolder[5]}/P/app/GoogleContactsSync/GoogleContactsSync.apk.gz
Full/gsync/P/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz ${appsfolder[5]}/P/priv-app/GoogleBackupTransport/GoogleBackupTransport.apk.gz
BromiteWebView/system/app/BromiteWebView_arm/BromiteWebView_arm.apk.gz ${appsfolder[11]}/app/BromiteWebView_arm/BromiteWebView_arm.apk.gz
BromiteWebView/system/app/BromiteWebView_arm64/BromiteWebView_arm64.apk.gz ${appsfolder[11]}/app/BromiteWebView_arm64/BromiteWebView_arm64.apk.gz
BromiteWebView/system/app/BromiteWebView_x86/BromiteWebView_x86.apk.gz ${appsfolder[11]}/app/BromiteWebView_x86/BromiteWebView_x86.apk.gz
OsmAnd/system/app/OsmAnd/OsmAnd.apk.gz ${appsfolder[9]}/app/OsmAnd/OsmAnd.apk.gz
OsmAnd/system/app/OsmAnd_ContourLines/OsmAnd_ContourLines.apk.gz ${appsfolder[9]}/app/OsmAnd_ContourLines/OsmAnd_ContourLines.apk.gz
Full/swipe/arm/libjni_keyboarddecoder.so ${appsfolder[7]}/arm/libjni_keyboarddecoder.so
Full/swipe/arm/libjni_latinimegoogle.so_19 ${appsfolder[7]}/arm/libjni_latinimegoogle.so_19
Full/swipe/arm/libjni_latinimegoogle.so_21 ${appsfolder[7]}/arm/libjni_latinimegoogle.so_21
Full/swipe/arm/libjni_latinimegoogle.so_22 ${appsfolder[7]}/arm/libjni_latinimegoogle.so_22
Full/swipe/arm/libjni_latinimegoogle.so_23 ${appsfolder[7]}/arm/libjni_latinimegoogle.so_23
Full/swipe/arm/libjni_latinimegoogle.so_27 ${appsfolder[7]}/arm/libjni_latinimegoogle.so_27
Full/swipe/arm/libjni_latinimegoogle.so_28 ${appsfolder[7]}/arm/libjni_latinimegoogle.so_28
Full/swipe/arm64/libjni_keyboarddecoder.so ${appsfolder[7]}/arm64/libjni_keyboarddecoder.so
Full/swipe/arm64/libjni_latinimegoogle.so_21 ${appsfolder[7]}/arm64/libjni_latinimegoogle.so_21
Full/swipe/arm64/libjni_latinimegoogle.so_22 ${appsfolder[7]}/arm64/libjni_latinimegoogle.so_22
Full/swipe/arm64/libjni_latinimegoogle.so_23 ${appsfolder[7]}/arm64/libjni_latinimegoogle.so_23
Full/swipe/arm64/libjni_latinimegoogle.so_27 ${appsfolder[7]}/arm64/libjni_latinimegoogle.so_27
Full/swipe/arm64/libjni_latinimegoogle.so_28 ${appsfolder[7]}/arm64/libjni_latinimegoogle.so_28
Full/swipe/x86/libjni_keyboarddecoder.so ${appsfolder[7]}/x86/libjni_keyboarddecoder.so
Full/swipe/x86/libjni_latinimegoogle.so ${appsfolder[7]}/x86/libjni_latinimegoogle.so
Full/swipe/x86_64/libjni_keyboarddecoder.so ${appsfolder[7]}/x86_64/libjni_keyboarddecoder.so
Full/swipe/x86_64/libjni_latinimegoogle.so ${appsfolder[7]}/x86_64/libjni_latinimegoogle.so
) )

@ -4,11 +4,11 @@
# Michael Bryant / Shadow53 # Michael Bryant / Shadow53
# https://gitlab.com/Shadow53/android-zip-builder # https://gitlab.com/Shadow53/android-zip-builder
REPO_FDROID="https://f-droid.org/repo" repo_fdroid="https://f-droid.org/repo"
REPO_GUARDIAN="https://guardianproject.info/fdroid/repo" repo_guardian="https://guardianproject.info/fdroid/repo"
REPO_MICROG="https://microg.org/fdroid/repo" repo_microg="https://microg.org/fdroid/repo"
REPO_NANOLX="https://nanolx.org/fdroid/repo" repo_nanolx="https://nanolx.org/fdroid/repo"
REPO_BROMITE="https://fdroid.bromite.org/fdroid/repo" repo_bromite="https://fdroid.bromite.org/fdroid/repo"
# check dependencies # check dependencies
for dep in gawk curl sha256sum jq gzip; do for dep in gawk curl sha256sum jq gzip; do
@ -18,218 +18,252 @@ for dep in gawk curl sha256sum jq gzip; do
fi fi
done done
debug_download () {
case $1 in
index)
if [ "$USE_WGET" = '1' ]; then
rm -rf "$2"
debug_message "wget -q --show-progress \"$3\" -O \"${2#$CWD/}\"" " "
wget -q --show-progress "$3" -O "$2" || error "$4"
else
debug_message "curl -sSL -o \"${2#$CWD/}\" \"$3\"" " "
curl -sSL -o "$2" "$3" || error "$4"
fi
;;
no_delete)
if [ "$USE_WGET" = '1' ]; then
rm -rf "$2"
debug_message "wget -q --show-progress \"$3\" -O \"${2#$CWD/}\""
wget -q --show-progress "$3" -O "$2"
else
debug_message "curl -sSL -o \"${2#$CWD/}\" \"$3\""
curl -sSL -o "$2" "$3"
fi
;;
delete)
if [ "$USE_WGET" = '1' ]; then
rm -rf "$2"
debug_message "wget -q --show-progress \"$3\" -O \"${2#$CWD/}\""
wget -q --show-progress "$3" -O "$2" || rm -f "$4"
else
debug_message "curl -sSL -o \"${2#$CWD/}\" \"$3\""
curl -sSL -o "$2" "$3" || rm -f "$4"
fi
;;
esac
}
index_update_required () { index_update_required () {
INDEX_FILE=${1} index_file=${1}
test ! -f ${INDEX_FILE} && return 0 test ! -f ${index_file} && return 0
test $(stat --format=%Z ${INDEX_FILE}) -le $(($(date +%s) - 3600)) && return 0 test $(stat --format=%Z ${index_file}) -le $(($(date +%s) - 3600)) && return 0
test "$(file -b ${INDEX_FILE})" == "empty" && return 0 test "$(file -b ${index_file})" == "empty" && return 0
return 1 return 1
} }
check_sha256sum () { check_sha256sum () {
INPUT="${1}" local input="${1}"
IN_CHECKSUM="" in_checksum=""
EX_CHECKSUM="${2}" local ex_checksum="${2}"
case ${INPUT} in case ${input} in
*.gz ) *.gz )
IN_CHECKSUM=$(gzip -dc ${INPUT} 2>/dev/null | sha256sum | gawk '{print $1}') in_checksum=$(gzip -dc ${input} 2>/dev/null | sha256sum | gawk '{print $1}')
;; ;;
* ) * )
IN_CHECKSUM=$(sha256sum ${INPUT} 2>/dev/null | gawk '{print $1}') in_checksum=$(sha256sum ${input} 2>/dev/null | gawk '{print $1}')
;; ;;
esac esac
[[ ${IN_CHECKSUM} == ${EX_CHECKSUM} ]] && return 0 || return 1 [[ ${in_checksum} == ${ex_checksum} ]] && return 0 || return 1
} }
update_index () { update_index () {
INDEX_JAR=${1} local index_jar=${1}
INDEX_JSON="${CWD}/data/$(basename ${INDEX_JAR} .jar).json" local index_json="$repofolder/$(basename ${index_jar} .jar).json"
INDEX_REPO=${2} local index_repo=${2}
if index_update_required ${INDEX_JSON}; then if index_update_required ${index_json}; then
curl -sSL -o "${INDEX_JAR}" "${INDEX_REPO}/index-v1.jar" || error " failed to update repo index" debug_download index "${index_jar}" "${index_repo}/index-v1.jar" " failed to update repo index"
unzip -q ${INDEX_JAR} index-v1.json -d "${CWD}/data/" unzip -q ${index_jar} index-v1.json -d "$repofolder/"
mv "${CWD}/data/index-v1.json" "${INDEX_JSON}" mv "$repofolder/index-v1.json" "${index_json}"
rm -f ${INDEX_JAR} rm -f ${index_jar}
fi fi
} }
update_indices () { update_indices () {
echo "+++ upating Repo Indices" echo "+++ upating Repo Indices"
echo " ++ F-Droid" echo " ++ F-Droid"
update_index "${CWD}/data/$(awk -F/ '{print $3}' <<< ${REPO_FDROID}).index-v1.jar" "${REPO_FDROID}" [ ! -d "$repofolder" ] && rm -rf "$repofolder" && mkdir -p "$repofolder"
update_index "$repofolder/$(awk -F/ '{print $3}' <<< ${repo_fdroid}).index-v1.jar" "${repo_fdroid}"
echo " ++ Guardian Project" echo " ++ Guardian Project"
update_index "${CWD}/data/$(awk -F/ '{print $3}' <<< ${REPO_GUARDIAN}).index-v1.jar" "${REPO_GUARDIAN}" update_index "$repofolder/$(awk -F/ '{print $3}' <<< ${repo_guardian}).index-v1.jar" "${repo_guardian}"
echo " ++ microG" echo " ++ microG"
update_index "${CWD}/data/$(awk -F/ '{print $3}' <<< ${REPO_MICROG}).index-v1.jar" "${REPO_MICROG}" update_index "$repofolder/$(awk -F/ '{print $3}' <<< ${repo_microg}).index-v1.jar" "${repo_microg}"
echo " ++ Nanolx" echo " ++ Nanolx"
update_index "${CWD}/data/$(awk -F/ '{print $3}' <<< ${REPO_NANOLX}).index-v1.jar" "${REPO_NANOLX}" update_index "$repofolder/$(awk -F/ '{print $3}' <<< ${repo_nanolx}).index-v1.jar" "${repo_nanolx}"
echo " ++ Bromite" echo " ++ Bromite"
update_index "${CWD}/data/$(awk -F/ '{print $3}' <<< ${REPO_BROMITE}).index-v1.jar" "${REPO_BROMITE}" update_index "$repofolder/$(awk -F/ '{print $3}' <<< ${repo_bromite}).index-v1.jar" "${repo_bromite}"
} }
grab_apk_from_repo () { grab_apk_from_repo () {
case "${1}" in case "${1}" in
fdroid ) fdroid )
REPO=${REPO_FDROID} local repo=${repo_fdroid}
REPO_P="F-Droid" local repo_p="F-Droid"
;; ;;
guardian ) guardian )
REPO=${REPO_GUARDIAN} local repo=${repo_guardian}
REPO_P="Guardian Project" local repo_p="Guardian Project"
;; ;;
microg ) microg )
REPO=${REPO_MICROG} local repo=${repo_microg}
REPO_P="microG" local repo_p="microG"
;; ;;
nanolx ) nanolx )
REPO=${REPO_NANOLX} local repo=${repo_nanolx}
REPO_P="Nanolx" local repo_p="Nanolx"
;; ;;
bromite ) bromite )
REPO=${REPO_BROMITE} local repo=${repo_bromite}
REPO_P="Bromite" local repo_p="Bromite"
;; ;;
esac esac
DOMAIN="$(awk -F/ '{print $3}' <<< ${REPO})" local domain="$(awk -F/ '{print $3}' <<< ${repo})"
INDEX_FILE="${CWD}/data/${DOMAIN}.index-v1.json" index_file="$repofolder/${domain}.index-v1.json"
PKG_NAME="${2}" local pkg_name="${2}"
if [ -z "${5}" ]; then if [ -z "${5}" ]; then
APK_NAME="$(jq -r --arg pkg "${PKG_NAME}" '.packages[$pkg][0].apkName' ${INDEX_FILE})" local apk_name="$(jq -r --arg pkg "${pkg_name}" '.packages[$pkg][0].apkName' ${index_file})"
SHA_SUM="$(jq -r --arg pkg "${PKG_NAME}" '.packages[$pkg][0].hash' ${INDEX_FILE})" local sha_sum="$(jq -r --arg pkg "${pkg_name}" '.packages[$pkg][0].hash' ${index_file})"
else else
APK_NAME="$(jq -r --arg pkg "${PKG_NAME}" --arg arch "${5}" '[.packages[$pkg][] | select (.nativecode[]==$arch).apkName][0]' ${INDEX_FILE})" local apk_name="$(jq -r --arg pkg "${pkg_name}" --arg arch "${5}" '[.packages[$pkg][] | select (.nativecode[]==$arch).apkName][0]' ${index_file})"
SHA_SUM="$(jq -r --arg pkg "${PKG_NAME}" --arg arch "${5}" '[.packages[$pkg][] | select (.nativecode[]==$arch).hash][0]' ${INDEX_FILE})" local sha_sum="$(jq -r --arg pkg "${pkg_name}" --arg arch "${5}" '[.packages[$pkg][] | select (.nativecode[]==$arch).hash][0]' ${index_file})"
fi fi
case "${PKG_NAME}" in case "${pkg_name}" in
com.android.webview ) com.android.webview )
APK_DEST="${CWD}/BromiteWebView/system/${3}/${4}" local apk_dest="${appsfolder[12]}/${3}/${4}"
;; ;;
net.osmand.plus | net.osmand.srtmPlugin.paid ) net.osmand.plus | net.osmand.srtmPlugin.paid )
APK_DEST="${CWD}/OsmAnd/system/${3}/${4}" local apk_dest="${appsfolder[10]}/${3}/${4}"
;; ;;
com.google.android.gms ) com.google.android.gms )
# XXX select mapbox build in official microG repo # XXX select mapbox build in official microG repo
APK_NAME="$(jq -r --arg pkg "${PKG_NAME}" '.packages[$pkg][0] | select (.versionName | contains("mapbox")).apkName' ${INDEX_FILE})" local apk_name="$(jq -r --arg pkg "${pkg_name}" '.packages[$pkg][0] | select (.versionName | contains("mapbox")).apkName' ${index_file})"
SHA_SUM="$(jq -r --arg pkg "${PKG_NAME}" '.packages[$pkg][0] | select (.versionName | contains("mapbox")).hash' ${INDEX_FILE})" local sha_sum="$(jq -r --arg pkg "${pkg_name}" '.packages[$pkg][0] | select (.versionName | contains("mapbox")).hash' ${index_file})"
APK_DEST="${CWD}/Full/system/${3}/${4}" local apk_dest="${appsfolder[2]}/${3}/${4}"
;; ;;
* ) * )
APK_DEST="${CWD}/Full/system/${3}/${4}" local apk_dest="${appsfolder[2]}/${3}/${4}"
;; ;;
esac esac
APK_URL="${REPO}/${APK_NAME}" local apk_url="${repo}/${apk_name}"
if check_sha256sum "${APK_DEST}/${4}.apk.gz" "${SHA_SUM}"; then if check_sha256sum "${apk_dest}/${4}.apk.gz" "${sha_sum}"; then
echo -e "\nUp-to-Date from ${REPO_P} : ${4}.apk" echo -e "\nUp-to-Date from ${repo_p} : ${4}.apk"
else echo -e "\nUpdating from ${REPO_P} : ${4}.apk" else echo -e "\nUpdating from ${repo_p} : ${4}.apk"
mkdir -p "${APK_DEST}" mkdir -p "${apk_dest}"
rm -f "${APK_DEST}/${4}.apk.gz" rm -f "${apk_dest}/${4}.apk.gz"
curl -sSL -o "${APK_DEST}/${4}.apk" "${APK_URL}" debug_download no_delete "${apk_dest}/${4}.apk" "${apk_url}"
if check_sha256sum "${APK_DEST}/${4}.apk" "${SHA_SUM}"; then if check_sha256sum "${apk_dest}/${4}.apk" "${sha_sum}"; then
echo " SHA256 hash of ${4}.apk is correct" echo " SHA256 hash of ${4}.apk is correct"
gzip "${APK_DEST}/${4}.apk" gzip "${apk_dest}/${4}.apk"
else echo -e " SHA256 hash of ${4}.apk is wrong!\ else echo -e " SHA256 hash of ${4}.apk is wrong!\
\n expected : ${SHA_SUM}\ \n expected : ${sha_sum}\
\n got : ${IN_CHECKSUM}" \n got : ${in_checksum}"
rm -f "${APK_DEST}/${4}.apk" rm -f "${apk_dest}/${4}.apk"
fi fi
fi fi
} }
grab_apk_from_url () { grab_apk_from_url () {
APK_URL="${1}" local apk_url="${1}"
APK_DEST="${CWD}/Full/system/${2}/${3}" local apk_dest="${appsfolder[2]}/${2}/${3}"
rm -f "${APK_DEST}/${3}.apk.gz" rm -f "${apk_dest}/${3}.apk.gz"
if [[ -f "${APK_DEST}/${3}.apk" ]]; then if [[ -f "${apk_dest}/${3}.apk" ]]; then
echo -e "\nUpdating from URL : ${3}.apk" echo -e "\nUpdating from URL : ${3}.apk"
else echo -e "\nDownloading from URL : ${3}.apk" else echo -e "\nDownloading from URL : ${3}.apk"
mkdir -p "${APK_DEST}" mkdir -p "${apk_dest}"
fi fi
echo " Checking SHA256 hash not (yet) supported" echo " Checking SHA256 hash not (yet) supported"
curl -sSL -o "${APK_DEST}/${3}.apk" "${APK_URL}" || \ debug_download delete "${apk_dest}/${3}.apk" "${apk_url}" "${apk_dest}/${3}.apk"
rm -f "${APK_DEST}/${3}.apk"
if [[ -f "${APK_DEST}/${3}.apk" ]]; then if [[ -f "${apk_dest}/${3}.apk" ]]; then
gzip "${APK_DEST}/${3}.apk" gzip "${apk_dest}/${3}.apk"
else echo "error downloading ${3}" else echo "error downloading ${3}"
fi fi
} }
grab_apk_from_github () { grab_apk_from_github () {
APK_URL="$(curl -s -N "https://api.github.com/repos/${1}/releases" | \ local apk_url="$(curl -s -N "https://api.github.com/repos/${1}/releases" | \
gawk -F\" '/browser_download_url.*apk/{print $4 ; exit}')" gawk -F\" '/browser_download_url.*apk/{print $4 ; exit}')"
APK_DEST="${CWD}/Full/system/${2}/${3}" local apk_dest="${appsfolder[2]}/${2}/${3}"
rm -f "${APK_DEST}/${3}.apk.gz" rm -f "${apk_dest}/${3}.apk.gz"
if [[ -f "${APK_DEST}/${3}.apk" ]]; then if [[ -f "${apk_dest}/${3}.apk" ]]; then
echo -e "\nUpdating from GitHub : ${3}.apk" echo -e "\nUpdating from GitHub : ${3}.apk"
else echo -e "\nDownloading from GitHub : ${3}.apk" else echo -e "\nDownloading from GitHub : ${3}.apk"
mkdir -p "${APK_DEST}" mkdir -p "${apk_dest}"
fi fi
echo " Checking SHA256 hash not (yet) supported" echo " Checking SHA256 hash not (yet) supported"
curl -sSL -o "${APK_DEST}/${3}.apk" "${APK_URL}" || \ debug_download delete "${apk_dest}/${3}.apk" "${apk_url}" "${apk_dest}/${3}.apk"
rm -f "${APK_DEST}/${3}.apk"
if [[ -f "${APK_DEST}/${3}.apk" ]]; then if [[ -f "${apk_dest}/${3}.apk" ]]; then
gzip "${APK_DEST}/${3}.apk" gzip "${apk_dest}/${3}.apk"
else echo "error downloading ${3}" else echo "error downloading ${3}"
fi fi
} }
grab_apk_from_gitlab () { grab_apk_from_gitlab () {
APK_URL="https://gitlab.com$(curl -s -N "https://gitlab.com/${1}/-/tags" | \ local apk_url=$(curl -s -N "https://gitlab.com/${1}/-/tags" | grep '.apk' | head -n 1)
gawk -F\" '/\.apk/{print $6 ; exit}')" local apk_url=${apk_url%\">*.apk*}
APK_DEST="${CWD}/Full/system/${2}/${3}" local apk_url="https://gitlab.com${apk_url##*a href=\"}"
local apk_dest="${appsfolder[2]}/${2}/${3}"
rm -f "${APK_DEST}/${3}.apk.gz" rm -f "${apk_dest}/${3}.apk.gz"
if [[ -f "${APK_DEST}/${3}.apk" ]]; then if [[ -f "${apk_dest}/${3}.apk" ]]; then
echo -e "\nUpdating from GitLab : ${3}.apk" echo -e "\nUpdating from GitLab : ${3}.apk"
else echo -e "\nDownloading from GitLab : ${3}.apk" else echo -e "\nDownloading from GitLab : ${3}.apk"
mkdir -p "${APK_DEST}" mkdir -p "${apk_dest}"
fi fi
echo " Checking SHA256 hash not (yet) supported" echo " Checking SHA256 hash not (yet) supported"
curl -sSL -o "${APK_DEST}/${3}.apk" "${APK_URL}" || \ debug_download delete "${apk_dest}/${3}.apk" "${apk_url}" "${apk_dest}/${3}.apk"
rm -f "${APK_DEST}/${3}.apk"
if [[ -f "${APK_DEST}/${3}.apk" ]]; then if [[ -f "${apk_dest}/${3}.apk" ]]; then
gzip "${APK_DEST}/${3}.apk" gzip "${apk_dest}/${3}.apk"
else echo "error downloading ${3}" else echo "error downloading ${3}"
fi fi
} }
@ -237,38 +271,37 @@ grab_apk_from_gitlab () {
grab_apk_from_ogapps () { grab_apk_from_ogapps () {
case "${1}" in case "${1}" in
"com.google.android.syncadapters.calendar" ) "com.google.android.syncadapters.calendar" )
APK_URL="https://gitlab.opengapps.org/opengapps/all/raw/master/${2}/${1}/15/nodpi/2015080710.apk" local apk_url="https://gitlab.opengapps.org/opengapps/all/raw/master/${2}/${1}/15/nodpi/2015080710.apk"
API_LETTER=common local api_letter=common
;; ;;
* ) * )
APK_URL="https://gitlab.opengapps.org/opengapps/all/raw/master/${2}/${1}/${4}/nodpi/${4}.apk" apk_url="https://gitlab.opengapps.org/opengapps/all/raw/master/${2}/${1}/${4}/nodpi/${4}.apk"
case "${4}" in case "${4}" in
19 ) API_LETTER=K ;; 19 ) local api_letter=K ;;
21 ) API_LETTER=L ;; 21 ) local api_letter=L ;;
23 ) API_LETTER=M ;; 23 ) local api_letter=M ;;
24 ) API_LETTER=N ;; 24 ) local api_letter=N ;;
26 ) API_LETTER=O ;; 26 ) local api_letter=O ;;
28 ) API_LETTER=P ;; 28 ) local api_letter=P ;;
esac esac
;; ;;
esac esac
APK_DEST="${CWD}/Full/gsync/${API_LETTER}/${2}/${3}" apk_dest="${appsfolder[6]}/${api_letter}/${2}/${3}"
if [[ -f "${APK_DEST}/${3}.apk.gz" ]]; then if [[ -f "${apk_dest}/${3}.apk.gz" ]]; then
echo -e "\nUpdating from OpenGApps : ${3}.apk [${API_LETTER}]" echo -e "\nUpdating from OpenGApps : ${3}.apk [${api_letter}]"
rm -f "${APK_DEST}/${3}.apk.gz" rm -f "${apk_dest}/${3}.apk.gz"
else echo -e "\nDownloading from OpenGApps: ${3}.apk [${API_LETTER}]" else echo -e "\nDownloading from OpenGApps: ${3}.apk [${api_letter}]"
mkdir -p "${APK_DEST}" mkdir -p "${apk_dest}"
fi fi
echo " Checking SHA256 hash not (yet) supported" echo " Checking SHA256 hash not (yet) supported"
curl -sSL -o "${APK_DEST}/${3}.apk" "${APK_URL}" || \ debug_download delete "${apk_dest}/${3}.apk" "${apk_url}" "${apk_dest}/${3}.apk"
rm -f "${APK_DEST}/${3}.apk"
[ -f "${APK_DEST}/${3}.apk" ] && gzip "${APK_DEST}/${3}.apk" [ -f "${apk_dest}/${3}.apk" ] && gzip "${apk_dest}/${3}.apk"
} }
grab_lib_from_ogapps () { grab_lib_from_ogapps () {
@ -277,35 +310,33 @@ grab_lib_from_ogapps () {
arm64 | x86_64 ) LIBD=lib64 ;; arm64 | x86_64 ) LIBD=lib64 ;;
esac esac
LIB_URL="https://gitlab.opengapps.org/opengapps/${3}/raw/master/${LIBD}/${2}/${1}?inline=false" local lib_url="https://gitlab.opengapps.org/opengapps/${3}/raw/master/${LIBD}/${2}/${1}?inline=false"
SWP_DEST="${CWD}/Full/swipe/${3}" local swp_dest="${appsfolder[8]}/${3}"
if [[ "${4}" == "true" ]]; then if [[ "${4}" == "true" ]]; then
LIB_DEST="${SWP_DEST}/${1}_${2}" local lib_dest="${swp_dest}/${1}_${2}"
else LIB_DEST="${SWP_DEST}/${1}" else lib_dest="${swp_dest}/${1}"
fi fi
if [[ -f "${LIB_DEST}" ]]; then if [[ -f "${lib_dest}" ]]; then
echo -e "\nUpdating from OpenGApps : ${1} [${2}:${3}]" echo -e "\nUpdating from OpenGApps : ${1} [${2}:${3}]"
else echo -e "\nDownloading from OpenGApps: ${1} [${2}:${3}]" else echo -e "\nDownloading from OpenGApps: ${1} [${2}:${3}]"
mkdir -p "${SWP_DEST}" mkdir -p "${swp_dest}"
fi fi
echo " Checking SHA256 hash not (yet) supported" echo " Checking SHA256 hash not (yet) supported"
curl -sSL -o "${LIB_DEST}" "${LIB_URL}" || \ debug_download delete "${lib_dest}" "${lib_url}" "${lib_dest}"
rm -f "${LIB_DEST}"
} }
grab_patches () { grab_patches () {
BASE_URL="https://github.com/Lanchon/haystack/blob/master/patches" base_url="https://github.com/Lanchon/haystack/blob/master/patches"
PATCH_URL="${BASE_URL}/${1}?raw=true" patch_url="${base_url}/${1}?raw=true"
PATCH_DST="${CWD}/patcher/dexpatcher/${2}" patch_dst="${CWD}/patcher/dexpatcher/${2}"
echo -e "\nUpdating from Haystack : ${2}" echo -e "\nUpdating from Haystack : ${2}"
echo " Checking SHA256 hash not (yet) supported" echo " Checking SHA256 hash not (yet) supported"
curl -sSL -o "${PATCH_DST}" "${PATCH_URL}" || \ debug_download delete "${patch_dst}" "${patch_url}""${patch_dst}"
rm -f "${PATCH_DST}"
} }

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
REPORT_FILE="${CWD}/NanoDroid_Report_${VERSION}" report_file="${CWD}/NanoDroid_Report_${VERSION}"
create_report_real () { create_report_real () {
@ -9,18 +9,18 @@ create_report_real () {
* ) ND_TYPE="Stable Release" ;; * ) ND_TYPE="Stable Release" ;;
esac esac
rm -f "${REPORT_FILE}"* rm -f "${report_file}"*
echo "creating NanoDroid report: echo "creating NanoDroid report:
| NanoDroid Version: ${VERSION} | NanoDroid Version: ${VERSION}
| NanoDroid Type: ${ND_TYPE} | NanoDroid Type: ${ND_TYPE}
| NanoDroid Report: $(basename ${REPORT_FILE}) | NanoDroid Report: $(basename ${report_file})
" "
echo "NanoDroid ${VERSION} package report [$(date +%Y%m%d-%H.%M.%S)] echo "NanoDroid ${VERSION} package report [$(date +%Y%m%d-%H.%M.%S)]
========================================================== ==========================================================
" > ${REPORT_FILE} " > ${report_file}
for file in $(find ${CWD} -maxdepth 1 -type f | sort) \ for file in $(find ${CWD} -maxdepth 1 -type f | sort) \
$(find ${CWD} -mindepth 2 -type f | sort); do $(find ${CWD} -mindepth 2 -type f | sort); do
@ -36,7 +36,7 @@ create_report_real () {
esac esac
done done
sum_sign_package "${REPORT_FILE}" sum_sign_package "${report_file}"
} }
@ -51,14 +51,14 @@ get_apk_info () {
gzip -dc ${1} > ${APK} gzip -dc ${1} > ${APK}
APK_FILE=$(basename ${1}) apk_file=$(basename ${1})
APK_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') apk_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
APK_NAME=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^package: name/{print $2}') apk_name=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^package: name/{print $2}')
APK_VERSION=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^package: name/{print $6}') apk_version=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^package: name/{print $6}')
APK_CODE=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^package: name/{print $4}') apk_code=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^package: name/{print $4}')
APK_PERM=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^uses-permission:/{print $2}' | sort) apk_perm=$(aapt dump badging ${APK} 2>/dev/null | gawk -F \' '/^uses-permission:/{print $2}' | sort)
APK_SHA=$(sha256sum ${APK} | gawk '{print $1}') apk_sha=$(sha256sum ${APK} | gawk '{print $1}')
GZIP_SHA=$(sha256sum ${1} | gawk '{print $1}') gzip_sha=$(sha256sum ${1} | gawk '{print $1}')
case ${1} in case ${1} in
*gsync/K* ) APK_TYPE="Google Sync Adapters [KitKat]" ;; *gsync/K* ) APK_TYPE="Google Sync Adapters [KitKat]" ;;
@ -72,18 +72,18 @@ get_apk_info () {
*app* ) APK_TYPE="Generic Application" ;; *app* ) APK_TYPE="Generic Application" ;;
esac esac
echo "Android Package: ${APK_NAME} echo "Android Package: ${apk_name}
| Filename: ${APK_FILE} | Filename: ${apk_file}
| Origin: ${APK_PATH} | Origin: ${apk_path}
| Type: ${APK_TYPE} | Type: ${APK_TYPE}
| Version: ${APK_VERSION} | Version: ${apk_version}
| VersionCode: ${APK_CODE} | VersionCode: ${apk_code}
| SHA256 APK: ${APK_SHA} | SHA256 APK: ${apk_sha}
| SHA256 GZip: ${GZIP_SHA}" >> ${REPORT_FILE} | SHA256 GZip: ${gzip_sha}" >> ${report_file}
if [ -z "${APK_PERM}" ]; then if [ -z "${apk_perm}" ]; then
echo -e " | Permissions: none requested\n" >> ${REPORT_FILE} echo -e " | Permissions: none requested\n" >> ${report_file}
else echo -e " | Permissions:\n$(printf "\t|- %s\n" ${APK_PERM})\n" >> ${REPORT_FILE} else echo -e " | Permissions:\n$(printf "\t|- %s\n" ${apk_perm})\n" >> ${report_file}
fi fi
rm -f ${APK} rm -f ${APK}
@ -92,214 +92,214 @@ get_apk_info () {
get_lib_info () { get_lib_info () {
LIB_FILE=$(basename ${1}) local lib_file=$(basename ${1})
LIB_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') local lib_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
case ${LIB_FILE} in case ${lib_file} in
*libjni_latinimegoogle* ) LIB_NAME="Latin IME Google" ;; *libjni_latinimegoogle* ) LIB_NAME="Latin IME Google" ;;
*libjni_keyboarddecoder*) LIB_NAME="Keyboard Decoder" ;; *libjni_keyboarddecoder*) LIB_NAME="Keyboard Decoder" ;;
esac esac
case ${1} in case ${1} in
*19* ) LIB_CODE="19 [KitKat]" ;; *19* ) local lib_code="19 [KitKat]" ;;
*21* ) LIB_CODE="21 [Lollipop]" ;; *21* ) local lib_code="21 [Lollipop]" ;;
*22* ) LIB_CODE="22 [Lollipop]" ;; *22* ) local lib_code="22 [Lollipop]" ;;
*23* ) LIB_CODE="23 [Marshmallow]" ;; *23* ) local lib_code="23 [Marshmallow]" ;;
*24* ) LIB_CODE="23 [Nougat] {24}" ;; *24* ) local lib_code="23 [Nougat] {24}" ;;
*25* ) LIB_CODE="23 [Nougat] {25}" ;; *25* ) local lib_code="23 [Nougat] {25}" ;;
*26* ) LIB_CODE="26 [Oreo] {26}" ;; *26* ) local lib_code="26 [Oreo] {26}" ;;
*27* ) LIB_CODE="27 [Oreo]" ;; *27* ) local lib_code="27 [Oreo]" ;;
*28* ) LIB_CODE="28 [Pie]" ;; *28* ) local lib_code="28 [Pie]" ;;
* ) LIB_CODE="Generic" ;; * ) local lib_code="Generic" ;;
esac esac
LIB_ARCH=$(file -b ${1} | gawk -F, '{print $2 " [ " $1 " ] [" $3 " ]"}') local lib_arch=$(file -b ${1} | gawk -F, '{print $2 " [ " $1 " ] [" $3 " ]"}')
LIB_SPECS=$(file -b ${1} | gawk -F, '{print $4 " [" $5 " ]"}') local lib_specs=$(file -b ${1} | gawk -F, '{print $4 " [" $5 " ]"}')
LIB_SHA=$(sha256sum ${1} | gawk '{print $1}') lib_sha=$(sha256sum ${1} | gawk '{print $1}')
echo "Android Library: ${LIB_NAME} echo "Android Library: ${LIB_NAME}
| Filename: ${LIB_FILE} | Filename: ${lib_file}
| Origin: ${LIB_PATH} | Origin: ${lib_path}
| SDK Code: ${LIB_CODE} | SDK Code: ${lib_code}
| Arch: ${LIB_ARCH} | Arch: ${lib_arch}
| Specifics: ${LIB_SPECS} | Specifics: ${lib_specs}
| SHA256: ${LIB_SHA} | SHA256: ${lib_sha}
" >> ${REPORT_FILE} " >> ${report_file}
} }
get_bin_info () { get_bin_info () {
BIN_FILE=$(basename ${1}) local bin_file=$(basename ${1})
BIN_NAME=$(basename ${1} | sed -e 's/\..*//') local bin_name=$(basename ${1} | sed -e 's/\..*//')
BIN_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') local bin_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
case ${BIN_PATH} in case ${bin_path} in
*xbin* ) BIN_TYPE="Android User Utility" ;; *xbin* ) local bin_type="Android User Utility" ;;
*tools*) BIN_TYPE="Android Installer Utility" ;; *tools*) local bin_type="Android Installer Utility" ;;
esac esac
BIN_ARCH=$(file -b ${1} | gawk -F, '{print $2 " [ " $1 " ] [" $3 " ]"}') local bin_arch=$(file -b ${1} | gawk -F, '{print $2 " [ " $1 " ] [" $3 " ]"}')
BIN_SPECS=$(file -b ${1} | gawk -F, '{print $4 " [" $7 " ] [" $6 " ]"}') local bin_specs=$(file -b ${1} | gawk -F, '{print $4 " [" $7 " ] [" $6 " ]"}')
BIN_SHA=$(sha256sum ${1} | gawk '{print $1}') local bin_sha=$(sha256sum ${1} | gawk '{print $1}')
echo "${BIN_TYPE}: ${BIN_NAME} echo "${bin_type}: ${bin_name}
| Filename: ${BIN_FILE} | Filename: ${bin_file}
| Origin: ${BIN_PATH} | Origin: ${bin_path}
| Arch: ${BIN_ARCH} | Arch: ${bin_arch}
| Specifics: ${BIN_SPECS} | Specifics: ${bin_specs}
| SHA256: ${BIN_SHA} | SHA256: ${bin_sha}
" >> ${REPORT_FILE} " >> ${report_file}
} }
get_etc_info () { get_etc_info () {
ETC_FILE=$(basename ${1}) local etc_file=$(basename ${1})
ETC_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') local etc_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
ETC_PKGS="" local etc_pkgs=""
case ${ETC_PATH} in case ${etc_path} in
*gsync*default-permissions* ) ETC_TYPE="Google Sync Adapaters Permissions" *gsync*default-permissions* ) local etc_type="Google Sync Adapaters Permissions"
ETC_PKGS="$(gawk -F\" '/package=/{print $2}' ${1})" ;; local etc_pkgs="$(gawk -F\" '/package=/{print $2}' ${1})" ;;
*etc/permissions* ) ETC_TYPE="Application Permissions" *etc/permissions* ) local etc_type="Application Permissions"
ETC_PKGS="$(gawk -F\" '/package=/{print $2}' ${1})" ;; local etc_pkgs="$(gawk -F\" '/package=/{print $2}' ${1})" ;;
*etc/default-permissions* ) ETC_TYPE="Application Permissions" *etc/default-permissions* ) local etc_type="Application Permissions"
ETC_PKGS="$(gawk -F\" '/package=/{print $2}' ${1})" ;; local etc_pkgs="$(gawk -F\" '/package=/{print $2}' ${1})" ;;
*etc/terminfo* ) ETC_TYPE="GNU Nano Terminfo" ;; *etc/terminfo* ) local etc_type="GNU Nano Terminfo" ;;
*etc/init.d* ) ETC_TYPE="NanoDroid init Script" ;; *etc/init.d* ) local etc_type="NanoDroid init Script" ;;
*etc/sysconfig* ) ETC_TYPE="Linux sysconfig Settings" ;; *etc/sysconfig* ) local etc_type="Linux sysconfig Settings" ;;
*etc/bash* ) ETC_TYPE="GNU Bash Configuration" ;; *etc/bash* ) local etc_type="GNU Bash Configuration" ;;
*etc/org.fdroid.fdroid* ) ETC_TYPE="F-Droid Configuration" ;; *etc/org.fdroid.fdroid* ) local etc_type="F-Droid Configuration" ;;
esac esac
ETC_SHA=$(sha256sum ${1} | gawk '{print $1}') local etc_sha=$(sha256sum ${1} | gawk '{print $1}')
echo "${ETC_TYPE}: ${ETC_FILE} echo "${etc_type}: ${etc_file}
| Filename: ${ETC_FILE} | Filename: ${etc_file}
| Origin: ${ETC_PATH} | Origin: ${etc_path}
| SHA256: ${ETC_SHA}" >> ${REPORT_FILE} | SHA256: ${etc_sha}" >> ${report_file}
if [ ! -z "${ETC_PKGS}" ]; then if [ ! -z "${etc_pkgs}" ]; then
echo -e " | Packages:\n$(printf "\t|- %s\n" ${ETC_PKGS})\n" >> ${REPORT_FILE} echo -e " | Packages:\n$(printf "\t|- %s\n" ${etc_pkgs})\n" >> ${report_file}
else echo "" >> ${REPORT_FILE} else echo "" >> ${report_file}
fi fi
} }
get_dex_info () { get_dex_info () {
DEX_FILE=$(basename ${1}) local dex_file=$(basename ${1})
DEX_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') local dex_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
case ${DEX_FILE} in case ${dex_file} in
*services* ) DEX_TYPE="Android DEX Patch File" *services* ) local dex_type="Android DEX Patch File"
DEX_NAME=$(basename ${1} .jar.dex) ;; local dex_name=$(basename ${1} .jar.dex) ;;
* ) DEX_TYPE="Android Dalvik Executable" * ) local dex_type="Android Dalvik Executable"
DEX_NAME=$(basename ${1} .dex) ;; local dex_name=$(basename ${1} .dex) ;;
esac esac
case ${DEX_FILE} in case ${dex_file} in
*services* ) DEX_SDK=$(gawk -F\_ '{print $2}' <(echo ${DEX_FILE})) ;; *services* ) local dex_sdk=$(gawk -F\_ '{print $2}' <(echo ${dex_file})) ;;
*smali* ) DEX_SDK=$(sed 's/.*_\(.*\)\..*/\1/' <(echo ${DEX_FILE})) ;; *smali* ) local dex_sdk=$(sed 's/.*_\(.*\)\..*/\1/' <(echo ${dex_file})) ;;
* ) DEX_SDK="universal" ;; * ) local dex_sdk="universal" ;;
esac esac
DEX_VER=$(file -b ${1} | gawk '{print $5}') dex_ver=$(file -b ${1} | gawk '{print $5}')
DEX_SHA=$(sha256sum ${1} | gawk '{print $1}') dex_sha=$(sha256sum ${1} | gawk '{print $1}')
echo "${DEX_TYPE}: ${DEX_NAME} echo "${dex_type}: ${dex_name}
| Filename: ${DEX_FILE} | Filename: ${dex_file}
| Origin: ${DEX_PATH} | Origin: ${dex_path}
| DEX Version: ${DEX_VER} | DEX Version: ${dex_ver}
| DEX SDK: ${DEX_SDK} | DEX SDK: ${dex_sdk}
| SHA256: ${DEX_SHA} | SHA256: ${dex_sha}
" >> ${REPORT_FILE} " >> ${report_file}
} }
get_msc_info () { get_msc_info () {
case ${1} in case ${1} in
*CommonAddon* ) MSC_TYPE="NanoDroid universal addon.d" ;; *CommonAddon* ) local msc_type="NanoDroid universal addon.d" ;;
*CommonInstaller* ) MSC_TYPE="NanoDroid universal Installer" ;; *CommonInstaller* ) local msc_type="NanoDroid universal Installer" ;;
*service.sh* ) MSC_TYPE="NanoDroid universal Magisk Module services.sh" ;; *service.sh* ) local msc_type="NanoDroid universal Magisk Module services.sh" ;;
*Full*update* ) MSC_TYPE="NanoDroid Full Package TWRP invoker" ;; *Full*update* ) local msc_type="NanoDroid Full Package TWRP invoker" ;;
*Full*.prop* ) MSC_TYPE="NanoDroid Full Package Module Module properties" ;; *Full*.prop* ) local msc_type="NanoDroid Full Package Module Module properties" ;;
*microG*update* ) MSC_TYPE="NanoDroid microG Package TWRP invoker" ;; *microG*update* ) local msc_type="NanoDroid microG Package TWRP invoker" ;;
*microG*.prop* ) MSC_TYPE="NanoDroid microG Package Module Module properties" ;; *microG*.prop* ) local msc_type="NanoDroid microG Package Module Module properties" ;;
*FDroid*update* ) MSC_TYPE="NanoDroid F-Droid Package TWRP invoker" ;; *FDroid*update* ) local msc_type="NanoDroid F-Droid Package TWRP invoker" ;;
*FDroid*.prop* ) MSC_TYPE="NanoDroid F-Droid Package Module Module properties" ;; *FDroid*.prop* ) local msc_type="NanoDroid F-Droid Package Module Module properties" ;;
*Bromite*update* ) MSC_TYPE="NanoDroid BromiteWebView Package TWRP invoker" ;; *Bromite*update* ) local msc_type="NanoDroid BromiteWebView Package TWRP invoker" ;;
*Bromite*.prop* ) MSC_TYPE="NanoDroid BromiteWebView Package Module Module properties" ;; *Bromite*.prop* ) local msc_type="NanoDroid BromiteWebView Package Module Module properties" ;;
*OsmAnd*update* ) MSC_TYPE="NanoDroid OsmAnd Package TWRP invoker" ;; *OsmAnd*update* ) local msc_type="NanoDroid OsmAnd Package TWRP invoker" ;;
*OsmAnd*.prop* ) MSC_TYPE="NanoDroid OsmAnd Package Module Module properties" ;; *OsmAnd*.prop* ) local msc_type="NanoDroid OsmAnd Package Module Module properties" ;;
*CommonPatcher* ) MSC_TYPE="NanoDroid Framework Patcher" ;; *CommonPatcher* ) local msc_type="NanoDroid Framework Patcher" ;;
*70-nanodroidpatcher.sh* ) MSC_TYPE="NanoDroid Framework Patcher addon.d" ;; *70-nanodroidpatcher.sh* ) local msc_type="NanoDroid Framework Patcher addon.d" ;;
*org.spoofing.apk*) MSC_TYPE="NanoDroid Framework Patcher spoofing info provider" ;; *org.spoofing.apk*) local msc_type="NanoDroid Framework Patcher spoofing info provider" ;;
*patcher*update* ) MSC_TYPE="NanoDroid Framework Patcher TWRP invoker" ;; *patcher*update* ) local msc_type="NanoDroid Framework Patcher TWRP invoker" ;;
*SetupWizard*update*) MSC_TYPE="NanoDroid SetupWizard AROMA invoker" ;; *SetupWizard*update*) local msc_type="NanoDroid SetupWizard AROMA invoker" ;;
*SetupWizard*aroma*) MSC_TYPE="NanoDroid SetupWizard AROMA configuration" ;; *SetupWizard*aroma*) local msc_type="NanoDroid SetupWizard AROMA configuration" ;;
*SetupWizard/nano*) MSC_TYPE="NanoDroid SetupWizard Worker" ;; *SetupWizard/nano*) local msc_type="NanoDroid SetupWizard Worker" ;;
*SysTest* ) MSC_TYPE="NanoDroid System Tester" ;; *SysTest* ) local msc_type="NanoDroid System Tester" ;;
*systest*update* ) MSC_TYPE="NanoDroid System Tester TWRP invoker" ;; *systest*update* ) local msc_type="NanoDroid System Tester TWRP invoker" ;;
*uninstaller*binary*) MSC_TYPE="NanoDroid Uninstaller" ;; *uninstaller*binary*) local msc_type="NanoDroid Uninstaller" ;;
*uninstaller*update*) MSC_TYPE="NanoDroid Uninstaller TWRP invoker" ;; *uninstaller*update*) local msc_type="NanoDroid Uninstaller TWRP invoker" ;;
*ChangeLog.md* ) MSC_TYPE="NanoDroid ChangeLog" ;; *ChangeLog.md* ) local msc_type="NanoDroid ChangeLog" ;;
*README.md* ) MSC_TYPE="NanoDroid README" ;; *README.md* ) local msc_type="NanoDroid README" ;;
*.nanodroid-apps* ) MSC_TYPE="NanoDroid default app installation configuration" ;; *.nanodroid-apps* ) local msc_type="NanoDroid default app installation configuration" ;;
*.nanodroid-setup*) MSC_TYPE="NanoDroid default installation configuration" ;; *.nanodroid-setup*) local msc_type="NanoDroid default installation configuration" ;;
*.nanodroid-overlay*) MSC_TYPE="NanoDroid default overlay configuration" ;; *.nanodroid-overlay*) local msc_type="NanoDroid default overlay configuration" ;;
*.maps.jar* ) MSC_TYPE="microG Maps v1 support" ;; *.maps.jar* ) local msc_type="microG Maps v1 support" ;;
*noti*.ogg* ) MSC_TYPE="The Legend of Zelda: Notification" ;; *noti*.ogg* ) local msc_type="The Legend of Zelda: Notification" ;;
*ring*.ogg* ) MSC_TYPE="The Legend of Zelda: Ringtone" ;; *ring*.ogg* ) local msc_type="The Legend of Zelda: Ringtone" ;;
*ui*.ogg* ) MSC_TYPE="The Legend of Zelda: UI Sound" ;; *ui*.ogg* ) local msc_type="The Legend of Zelda: UI Sound" ;;
*noti*.mp3* ) MSC_TYPE="The Legend of Zelda: Notification" ;; *noti*.mp3* ) local msc_type="The Legend of Zelda: Notification" ;;
*ring*.mp3* ) MSC_TYPE="The Legend of Zelda: Ringtone" ;; *ring*.mp3* ) local msc_type="The Legend of Zelda: Ringtone" ;;
*ui*.mp3* ) MSC_TYPE="The Legend of Zelda: UI Sound" ;; *ui*.mp3* ) local msc_type="The Legend of Zelda: UI Sound" ;;
*.ttf* ) MSC_TYPE="Nintendo UI Font" ;; *.ttf* ) local msc_type="Nintendo UI Font" ;;
*LICENSE* ) MSC_TYPE="exclude" ;; *LICENSE* ) local msc_type="exclude" ;;
*doc* ) MSC_TYPE="exclude" ;; *doc* ) local msc_type="exclude" ;;
*build-package* ) MSC_TYPE="exclude" ;; *build-package* ) local msc_type="exclude" ;;
*.json* ) MSC_TYPE="exclude" ;; *.json* ) local msc_type="exclude" ;;
*.git* ) MSC_TYPE="exclude" ;; *.git* ) local msc_type="exclude" ;;
*NanoDroid_Report*) MSC_TYPE="exclude" ;; *NanoDroid_Report*) local msc_type="exclude" ;;
*NanoDroid/dist* ) MSC_TYPE="exclude" ;; *NanoDroid/dist* ) local msc_type="exclude" ;;
* ) MSC_TYPE="unknown" ;; * ) local msc_type="unknown" ;;
esac esac
case ${MSC_TYPE} in case ${msc_type} in
exclude ) return 0 ;; exclude ) return 0 ;;
unknown ) echo "No report template for file: ${1}" ;; unknown ) echo "No report template for file: ${1}" ;;
* ) MSC_FILE=$(basename ${1}) * ) local msc_file=$(basename ${1})
MSC_NAME=$(basename ${1} | sed -e 's/\..*//') local msc_name=$(basename ${1} | sed -e 's/\..*//')
MSC_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') local msc_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
MSC_SHA=$(sha256sum ${1} | gawk '{print $1}') local msc_sha=$(sha256sum ${1} | gawk '{print $1}')
echo "${MSC_TYPE}: ${MSC_NAME} echo "${msc_type}: ${msc_name}
| Filename: ${MSC_FILE} | Filename: ${msc_file}
| Origin: ${MSC_PATH} | Origin: ${msc_path}
| SHA256: ${MSC_SHA} | SHA256: ${msc_sha}
" >> ${REPORT_FILE} " >> ${report_file}
;; ;;
esac esac
@ -309,36 +309,36 @@ get_dst_info () {
if [[ ! ${1} == *NanoDroid/dist* ]]; then if [[ ! ${1} == *NanoDroid/dist* ]]; then
DST_FILE=$(basename ${1}) local dst_file=$(basename ${1})
DST_NAME=$(basename ${1} | sed -e 's/-[0-9].*//') local dst_name=$(basename ${1} | sed -e 's/-[0-9].*//')
DST_PATH=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/') local dst_path=$(dirname ${1} | sed -e 's/.*NanoDroid/NanoDroid/')
case ${DST_FILE} in case ${dst_file} in
*NanoDroid-[0-9]*.zip*) DST_PKG="NanoDroid Full" ;; *NanoDroid-[0-9]*.zip*) local dst_pkg="NanoDroid Full" ;;
*microG*.zip* ) DST_PKG="NanoDroid microG" ;; *microG*.zip* ) local dst_pkg="NanoDroid microG" ;;
*fdroid*.zip* ) DST_PKG="NanoDroid F-Droid" ;; *fdroid*.zip* ) local dst_pkg="NanoDroid F-Droid" ;;
*BromiteWebView*.zip* ) DST_PKG="NanoDroid BromiteWebView" ;; *BromiteWebView*.zip* ) local dst_pkg="NanoDroid BromiteWebView" ;;
*OsmAnd*.zip* ) DST_PKG="NanoDroid OsmAnd" ;; *OsmAnd*.zip* ) local dst_pkg="NanoDroid OsmAnd" ;;
*patcher*.zip* ) DST_PKG="NanoDroid Framework Patcher" ;; *patcher*.zip* ) local dst_pkg="NanoDroid Framework Patcher" ;;
*setupwizard*.zip* ) DST_PKG="NanoDroid SetupWizard" ;; *setupwizard*.zip* ) local dst_pkg="NanoDroid SetupWizard" ;;
*systest*.zip* ) DST_PKG="NanoDroid System Tester" ;; *systest*.zip* ) local dst_pkg="NanoDroid System Tester" ;;
*uninstaller*.zip* ) DST_PKG="NanoDroid Uninstaller" ;; *uninstaller*.zip* ) local dst_pkg="NanoDroid Uninstaller" ;;
esac esac
case ${DST_FILE} in case ${dst_file} in
*.zip ) DST_TYPE="Flashable Package" ;; *.zip ) local dst_type="Flashable Package" ;;
*.sha256 ) DST_TYPE="Flashable Package (SHA256 Checksum)" ;; *.sha256 ) local dst_type="Flashable Package (SHA256 Checksum)" ;;
*.sig ) DST_TYPE="Flashable Package (GPG Signature)" ;; *.sig ) local dst_type="Flashable Package (GPG Signature)" ;;
esac esac
DST_SHA=$(sha256sum ${1} | gawk '{print $1}') dst_sha=$(sha256sum ${1} | gawk '{print $1}')
echo "${DST_TYPE}: ${DST_NAME} echo "${dst_type}: ${dst_name}
| Filename: ${DST_FILE} | Filename: ${dst_file}
| Origin: ${DST_PATH} | Origin: ${dst_path}
| Package: ${DST_PKG} | Package: ${dst_pkg}
| SHA256: ${DST_SHA} | SHA256: ${dst_sha}
" >> ${REPORT_FILE} " >> ${report_file}
fi fi

@ -1,5 +1,32 @@
#!/bin/bash #!/bin/bash
# MicroG
update_act[0]='0'
# Swipe
update_act[1]='0'
# Gsync
update_act[2]='0'
# Bromite
update_act[3]='0'
# Osmand
update_act[4]='0'
# FDroid
update_act[5]='0'
# FDroid Privileged Extension
update_act[6]='0'
# AuroraDroid
update_act[7]='0'
# AuroraStore
update_act[8]='0'
# AuroraServices
update_act[9]='0'
# Yalp
update_act[10]='0'
# Phonesky
update_act[11]='0'
# General Apps
update_act[12]='0'
nanodroid_pull () { nanodroid_pull () {
update_microg update_microg
update_fdroid update_fdroid
@ -10,23 +37,27 @@ nanodroid_pull () {
update_osmand update_osmand
} }
update_swipe () { grab_swipe () {
for ARCH in arm arm64 x86 x86_64; do for arch in arm arm64 x86 x86_64; do
grab_lib_from_ogapps libjni_keyboarddecoder.so 23 ${ARCH} false grab_lib_from_ogapps libjni_keyboarddecoder.so 23 ${arch} false
done done
for ARCH in arm arm64; do for arch in arm arm64; do
for SDK in 19 21 22 23 27 28; do for sdk in 19 21 22 23 27 28; do
grab_lib_from_ogapps libjni_latinimegoogle.so ${SDK} ${ARCH} true grab_lib_from_ogapps libjni_latinimegoogle.so ${sdk} ${arch} true
done done
done done
for ARCH in x86 x86_64; do for arch in x86 x86_64; do
grab_lib_from_ogapps libjni_latinimegoogle.so 23 ${ARCH} false grab_lib_from_ogapps libjni_latinimegoogle.so 23 ${arch} false
done done
} }
update_microg () { update_swipe () {
update_act[1]='1'
}
grab_microg () {
# applications managed in repositories # applications managed in repositories
grab_apk_from_repo ${uG_GMSCORE[@]} grab_apk_from_repo ${uG_GMSCORE[@]}
grab_apk_from_repo ${uG_GSFPROXY[@]} grab_apk_from_repo ${uG_GSFPROXY[@]}
@ -37,15 +68,17 @@ update_microg () {
grab_apk_from_repo ${fd_NLPNOMINATIM[@]} grab_apk_from_repo ${fd_NLPNOMINATIM[@]}
grab_apk_from_repo ${fd_NLPAPPLE[@]} grab_apk_from_repo ${fd_NLPAPPLE[@]}
grab_apk_from_repo ${fd_NLPRADIOCELL[@]} grab_apk_from_repo ${fd_NLPRADIOCELL[@]}
grab_apk_from_repo ${fd_YALPSTORE[@]} }
grab_apk_from_repo ${fd_AURORASTORE[@]}
grab_apk_from_repo ${nlx_PHONESKY[@]}
# GitLab update_microg () {
grab_apk_from_gitlab ${gl_AURORASERVICES[@]} update_act[0]='1'
update_act[8]='1'
update_act[9]='1'
update_act[10]='1'
update_act[11]='1'
} }
update_gsync () { grab_gsync () {
# KK LL M N O P # KK LL M N O P
for API in 19 21 23 24 26 28; do for API in 19 21 23 24 26 28; do
grab_apk_from_ogapps ${og_CONSYNC[@]} ${API} grab_apk_from_ogapps ${og_CONSYNC[@]} ${API}
@ -55,14 +88,18 @@ update_gsync () {
grab_apk_from_ogapps ${og_CALSYNC[@]} grab_apk_from_ogapps ${og_CALSYNC[@]}
} }
update_gsync () {
update_act[2]='1'
}
update_fdroid () { update_fdroid () {
grab_apk_from_repo ${fd_FDROID[@]} update_act[5]='1'
grab_apk_from_repo ${fd_FDROID_PE[@]} update_act[6]='1'
grab_apk_from_repo ${fd_AURORADROID[@]} update_act[7]='1'
grab_apk_from_gitlab ${gl_AURORASERVICES[@]} update_act[9]='1'
} }
update_apps () { grab_apps () {
# applications managed in repositories # applications managed in repositories
grab_apk_from_repo ${fd_ALARMIO[@]} grab_apk_from_repo ${fd_ALARMIO[@]}
grab_apk_from_repo ${fd_AMAZE[@]} grab_apk_from_repo ${fd_AMAZE[@]}
@ -97,13 +134,40 @@ update_apps () {
grab_apk_from_url ${raw_XDALABS[@]} grab_apk_from_url ${raw_XDALABS[@]}
} }
update_bromite () { update_apps () {
update_act[12]='1'
}
grab_bromite () {
grab_apk_from_repo ${bm_WEBVIEW_arm64[@]} grab_apk_from_repo ${bm_WEBVIEW_arm64[@]}
grab_apk_from_repo ${bm_WEBVIEW_arm[@]} grab_apk_from_repo ${bm_WEBVIEW_arm[@]}
grab_apk_from_repo ${bm_WEBVIEW_x86[@]} grab_apk_from_repo ${bm_WEBVIEW_x86[@]}
} }
update_osmand () { update_bromite () {
update_act[3]='1'
}
grab_osmand () {
grab_apk_from_repo ${fd_OSMAND[@]} grab_apk_from_repo ${fd_OSMAND[@]}
grab_apk_from_repo ${fd_OSMAND_CONTOURLINES[@]} grab_apk_from_repo ${fd_OSMAND_CONTOURLINES[@]}
} }
update_osmand () {
update_act[4]='1'
}
update_master () {
[ "${update_act[0]}" = "1" ] && grab_microg
[ "${update_act[7]}" = "1" ] && grab_apk_from_repo ${fd_AURORADROID[@]}
[ "${update_act[8]}" = "1" ] && grab_apk_from_repo ${fd_AURORASTORE[@]}
[ "${update_act[9]}" = "1" ] && grab_apk_from_gitlab ${gl_AURORASERVICES[@]}
[ "${update_act[5]}" = "1" ] && grab_apk_from_repo ${fd_FDROID[@]}
[ "${update_act[6]}" = "1" ] && grab_apk_from_repo ${fd_FDROID_PE[@]}
[ "${update_act[10]}" = "1" ] && grab_apk_from_repo ${fd_YALPSTORE[@]}
[ "${update_act[11]}" = "1" ] && grab_apk_from_repo ${nlx_PHONESKY[@]}
[ "${update_act[3]}" = "1" ] && grab_bromite
[ "${update_act[4]}" = "1" ] && grab_osmand
[ "${update_act[12]}" = "1" ] && grab_apps
[ "${update_act[2]}" = "1" ] && grab_gsync
}

Loading…
Cancel
Save