#!/bin/bash set -e # Always execute in the script's directory pushd "$(dirname "$(realpath "$0")")" repo="https://f-droid.org/repo/" prebuilt_libs=() contains() { local e match="$1" shift for e; do [[ "$e" == "$match" ]] && return 0; done return 1 } addPrebuiltJniModules() { local lib="" local app_mod="" 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")" cat >> Android.mk <> Android.mk <> apps.mk } addMultiarch() { addition="" # Use the arm64 apk as an example to generate LOCAL_PREBUILT_JNI_LIBS only addJNI $1_$2_arm64.apk $1 # Extract JNIs for all the other architectures as well for apk in bin/$1_$2_*.apk; do [[ "$apk" == bin/$1_$2_arm64.apk ]] && continue unzip -o $apk 'lib/*' || continue done cat >> Android.mk <> apps.mk } rm -Rf apps.mk lib cat > Android.mk < apps.mk mkdir -p bin #downloadFromFdroid packageName overrides downloadFromFdroid() { mkdir -p tmp [ "$oldRepo" != "$repo" ] && rm -f tmp/index.xml oldRepo="$repo" if [ ! -f tmp/index.xml ];then #TODO: Check security keys wget --connect-timeout=10 $repo/index.jar -O tmp/index.jar unzip -p tmp/index.jar index.xml > tmp/index.xml fi marketversion="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]' -v ./marketversion tmp/index.xml || true)" nativecodes="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[version="'"$marketversion"'"]' -v nativecode -o ' ' tmp/index.xml || true)" # If packages have separate nativecodes if echo "$nativecodes" |grep -q arm && ! echo "$nativecodes" |grep -q ',' ;then for native in $nativecodes;do newNative="$(echo $native |sed -e s/arm64-v8a/arm64/g -e s/armeabi-v7a/arm/g)" apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[version="'"$marketversion"'" and nativecode="'"$native"'"]' -v ./apkname tmp/index.xml)" localName="${1}_${marketversion}_${newNative}.apk" if [ ! -f bin/$localName ];then while ! wget --connect-timeout=10 $repo/$apk -O bin/$localName;do sleep 1;done fi done addMultiarch $1 $marketversion "$2" else apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[version="'"$marketversion"'"]' -v ./apkname tmp/index.xml || xmlstarlet sel -t -m '//application[id="'"$1"'"]/package[1]' -v ./apkname tmp/index.xml)" if [ ! -f bin/$apk ];then while ! wget --connect-timeout=10 $repo/$apk -O bin/$apk;do sleep 1;done fi addCopy $apk $1 "$2" fi } # Web browser downloadFromFdroid org.mozilla.fennec_fdroid "Browser2 QuickSearchBox" # Calendar downloadFromFdroid ws.xsoh.etar Calendar # Pdf viewer downloadFromFdroid com.artifex.mupdf.viewer.app # Play Store download downloadFromFdroid com.aurora.store # Mail client downloadFromFdroid com.fsck.k9 "Email" downloadFromFdroid com.simplemobiletools.gallery.pro "Photos Gallery Gallery2" downloadFromFdroid com.aurora.adroid repo=https://microg.org/fdroid/repo/ downloadFromFdroid com.google.android.gms downloadFromFdroid com.google.android.gsf downloadFromFdroid com.android.vending repo=https://fdroid.bromite.org/fdroid/repo/ downloadFromFdroid org.bromite.bromite "Browser2 QuickSearchBox" # Bromite SystemWebview temporarily disabled due to low targetSDK # TODO: Re-enable when they upgrade to API 33 #downloadFromFdroid org.bromite.webview "WebView webview" addPrebuiltJniModules echo >> apps.mk rm -Rf tmp