blob: d65b2088f4804c3b4310bd2a5a00011094325a00 [file] [log] [blame]
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +01001#!/bin/bash
Jon West1c44e902021-04-01 19:29:47 -04002#~ set -e
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +01003
Jon West9fd0d662021-04-01 16:07:30 -04004RED='\033[0;31m'
5GREEN='\033[0;32m'
6YELLOW='\033[0;33m'
7LT_BLUE='\033[0;34m'
8
9NC='\033[0m' # No Color
10
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010011repo="https://f-droid.org/repo/"
12
Jon West81cd34f2021-04-01 19:30:33 -040013# Device type selection
14PS3='Which device type do you plan on building?: '
15echo -e ${CL_CYN}"(default is 'ABI:x86_64 & ABI2:x86')"
16TMOUT=10
17options=("ABI:x86_64 & ABI2:x86"
18 "ABI:arm64-v8a & ABI2:armeabi-v7a")
19echo "Timeout in $TMOUT sec."${CL_RST}
20select opt in "${options[@]}"
21do
22 case $opt in
23 "ABI:x86_64 & ABI2:x86")
24 echo "you chose choice $REPLY which is $opt"
25 MAIN_ARCH="x86_64"
26 SUB_ARCH="x86"
27 break
28 ;;
29 "ABI:arm64-v8a & ABI2:armeabi-v7a")
30 echo "you chose choice $REPLY which is $opt"
31 MAIN_ARCH="arm64-v8a"
32 SUB_ARCH="armeabi-v7a"
33 break
34 ;;
35 *) echo "invalid option $REPLY";;
36 esac
37done
38if [ "$opt" == "" ]; then
39 MAIN_ARCH="x86_64"
40 SUB_ARCH="x86"
41fi
Jon West1c44e902021-04-01 19:29:47 -040042
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010043addCopy() {
Pierre-Hugues Husson16644af2020-04-05 16:08:40 +020044 addition=""
Jon West1c44e902021-04-01 19:29:47 -040045 if [ "$native" != "" ]
46 then
47 unzip bin/$1 "lib/*"
48 if [ "$native" == "$MAIN_ARCH" ];then
49 addition="
50LOCAL_PREBUILT_JNI_LIBS := \\
51$(unzip -lv bin/$1 |grep -v Stored |sed -nE 's;.*(lib/'"$MAIN_ARCH"'/.*);\t\1 \\;p')
52 "
53 fi
54 if [ "$native" == "$SUB_ARCH" ];then
55 addition="
56LOCAL_MULTILIB := 32
57LOCAL_PREBUILT_JNI_LIBS := \\
58$(unzip -lv bin/$1 |grep -v Stored |sed -nE 's;.*(lib/'"$SUB_ARCH"'/.*);\t\1 \\;p')
59 "
60 fi
61 fi
Pierre-Hugues Hussone1b56f52020-11-03 18:15:49 +010062 if [ "$2" == com.google.android.gms ] || [ "$2" == com.android.vending ] ;then
63 addition="LOCAL_PRIVILEGED_MODULE := true"
64 fi
Pierre-Hugues Hussonc1f73e82017-12-04 16:43:14 +010065cat >> Android.mk <<EOF
66include \$(CLEAR_VARS)
Pierre-Hugues Hussonc1f73e82017-12-04 16:43:14 +010067LOCAL_MODULE := $2
68LOCAL_MODULE_TAGS := optional
69LOCAL_SRC_FILES := bin/$1
70LOCAL_MODULE_CLASS := APPS
Pierre-Hugues Hussonea4517b2017-12-04 16:45:04 +010071LOCAL_CERTIFICATE := PRESIGNED
Pierre-Hugues Husson3811d162017-12-04 23:07:00 +010072LOCAL_OVERRIDES_PACKAGES := $3
Pierre-Hugues Husson16644af2020-04-05 16:08:40 +020073$addition
Pierre-Hugues Hussonc1f73e82017-12-04 16:43:14 +010074include \$(BUILD_PREBUILT)
Pierre-Hugues Husson5250fdd2017-12-04 22:18:22 +010075
Pierre-Hugues Hussonc1f73e82017-12-04 16:43:14 +010076EOF
77echo -e "\t$2 \\" >> apps.mk
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010078}
79
Jon West9fd0d662021-04-01 16:07:30 -040080echo -e "${LT_BLUE}# Setting Up${NC}"
Pierre-Hugues Husson16644af2020-04-05 16:08:40 +020081rm -Rf apps.mk lib
Pierre-Hugues Hussonc1f73e82017-12-04 16:43:14 +010082cat > Android.mk <<EOF
83LOCAL_PATH := \$(my-dir)
84
85EOF
86echo -e 'PRODUCT_PACKAGES += \\' > apps.mk
87
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010088mkdir -p bin
Pierre-Hugues Hussone1b56f52020-11-03 18:15:49 +010089
Pierre-Hugues Husson5250fdd2017-12-04 22:18:22 +010090#downloadFromFdroid packageName overrides
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010091downloadFromFdroid() {
92 mkdir -p tmp
Pierre-Hugues Hussone1b56f52020-11-03 18:15:49 +010093 [ "$oldRepo" != "$repo" ] && rm -f tmp/index.xml
94 oldRepo="$repo"
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010095 if [ ! -f tmp/index.xml ];then
96 #TODO: Check security keys
Pierre-Hugues Husson3db36f72019-04-01 23:14:30 +020097 wget --connect-timeout=10 $repo/index.jar -O tmp/index.jar
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +010098 unzip -p tmp/index.jar index.xml > tmp/index.xml
99 fi
Jon West1c44e902021-04-01 19:29:47 -0400100
101 index=1
102 apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./apkname tmp/index.xml)"
103 native="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./nativecode tmp/index.xml)"
104 if [ "$native" != "" ]
105 then
106 index=1
107 while true
108 do
109 apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./apkname tmp/index.xml)"
110 native="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./nativecode tmp/index.xml)"
111 if [ "$native" != "" ] && [ "$(echo $native | grep $MAIN_ARCH)" != "" ]
112 then
113 native=$MAIN_ARCH
114 echo -e "${YELLOW}# native is $native ${NC}"
115 break
116 fi
117 if [ "$native" == "" ]
118 then
119 echo -e "${YELLOW}# native is blank or $native ${NC}"
120 break
121 fi
122 index=$((index + 1))
123 done
124 if [ "$native" != "$MAIN_ARCH" ]
125 then
126 index=1
127 while true
128 do
129 apk="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./apkname tmp/index.xml)"
130 native="$(xmlstarlet sel -t -m '//application[id="'"$1"'"]/package['$index']' -v ./nativecode tmp/index.xml)"
131 if [ "$native" != "" ] && [ "$(echo $native | grep $SUB_ARCH)" != "" ]
132 then
133 native=$SUB_ARCH
134 echo -e "${YELLOW}# native is $native ${NC}"
135 break
136 fi
137 index=$((index + 1))
138 done
139 if [ "$native" != "$SUB_ARCH" ]
140 then
141 echo -e "${RED} $1 is not available in $MAIN_ARCH nor $SUB_ARCH ${NC}"
142 exit 1
143 fi
144 fi
145 fi
paledega6303e2a2020-03-02 09:39:50 +0300146 if [ ! -f bin/$apk ];then
147 while ! wget --connect-timeout=10 $repo/$apk -O bin/$apk;do sleep 1;done
Jon Wested6857b2021-04-01 16:37:30 -0400148 else
149 echo -e "${GREEN}# Already grabbed $apk ${NC}"
paledega6303e2a2020-03-02 09:39:50 +0300150 fi
Pierre-Hugues Husson5250fdd2017-12-04 22:18:22 +0100151 addCopy $apk $1 "$2"
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +0100152}
Jon West1c44e902021-04-01 19:29:47 -0400153
Jon West9fd0d662021-04-01 16:07:30 -0400154echo -e "${YELLOW}# grabbing F-Droid Apps${NC}"
Jon West311f0ca2021-04-01 15:42:33 -0400155# Terminal Emulator
156downloadFromFdroid com.termoneplus
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +0100157#Navigation
158downloadFromFdroid net.osmand.plus
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +0100159#Calendar
Jon Wested6857b2021-04-01 16:37:30 -0400160downloadFromFdroid ws.xsoh.etar "Calendar"
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +0100161#Pdf viewer
Pierre-Hugues Husson02f4dcb2018-06-04 21:19:03 +0200162downloadFromFdroid com.artifex.mupdf.viewer.app
Unknown2974a752020-11-07 20:18:09 -0500163# Aurora App Store
Pierre-Hugues Husson06683c22020-03-31 23:16:24 +0200164downloadFromFdroid com.aurora.store
Pierre-Hugues Hussonb7a5f4a2017-12-04 17:07:27 +0100165#Mail client
Pierre-Hugues Husson5250fdd2017-12-04 22:18:22 +0100166downloadFromFdroid com.fsck.k9 "Email"
Pierre-Hugues Hussone46e3702018-06-04 21:19:57 +0200167#Calendar/Contacts sync
Pierre-Hugues Husson06683c22020-03-31 23:16:24 +0200168downloadFromFdroid com.etesync.syncadapter
Pierre-Hugues Husson06683c22020-03-31 23:16:24 +0200169# Todo lists
170downloadFromFdroid org.tasks
Unknown2974a752020-11-07 20:18:09 -0500171#Fake assistant that research on duckduckgo
172downloadFromFdroid co.pxhouse.sas
173# Gallery App
174downloadFromFdroid com.simplemobiletools.gallery.pro "Photos Gallery Gallery2"
175# Aurora Fdroid
176downloadFromFdroid com.aurora.adroid
Jon Wested6857b2021-04-01 16:37:30 -0400177# F-Droid App Store
178#~ downloadFromFdroid org.fdroid.fdroid
Jon West1c44e902021-04-01 19:29:47 -0400179#fdroid extension
180#~ downloadFromFdroid org.fdroid.fdroid.privileged
q0kHaN77f09432019-11-11 12:36:35 +0000181#Phonograph
182downloadFromFdroid com.kabouzeid.gramophone "Eleven"
kisekinopureya6a3d0362020-01-19 21:35:08 +0300183#Alarmio
184downloadFromFdroid me.jfenn.alarmio "GoogleClock DeskClock"
kisekinopureya13634d72019-12-12 01:23:53 +0300185#Mozilla Nlp
kisekinopureyae47d0882020-01-19 21:44:48 +0300186downloadFromFdroid org.microg.nlp.backend.ichnaea
kisekinopureyabb4217d2019-12-10 20:47:31 +0300187#Nominatim Nlp
188downloadFromFdroid org.microg.nlp.backend.nominatim
Jon Westbc3240a2021-04-01 15:30:41 -0400189# Midori Browser
Jon Wested6857b2021-04-01 16:37:30 -0400190downloadFromFdroid org.midorinext.android "Browser2 QuickSearchBox"
Jon Westddb6a382021-04-01 15:43:49 -0400191# EtchDroid USB Writer
192downloadFromFdroid eu.depau.etchdroid
Pierre-Hugues Hussonb7a5f4a2017-12-04 17:07:27 +0100193
kisekinopureyabb4217d2019-12-10 20:47:31 +0300194#Web browser
Unknown2974a752020-11-07 20:18:09 -0500195#~ downloadFromFdroid org.mozilla.fennec_fdroid "Browser2 QuickSearchBox"
196#Public transportation
197#~ downloadFromFdroid de.grobox.liberario
198#Ciphered Instant Messaging
199#downloadFromFdroid im.vector.alpha
200#Nextcloud client
201#~ downloadFromFdroid com.nextcloud.client
202# Social Media Apps
Unknowna0b877c2020-11-07 19:48:33 -0500203#~ downloadFromFdroid org.mariotaku.twidere
204#~ downloadFromFdroid com.pitchedapps.frost
205#~ downloadFromFdroid com.keylesspalace.tusky
paledega6303e2a2020-03-02 09:39:50 +0300206
Jon West9fd0d662021-04-01 16:07:30 -0400207echo -e "${YELLOW}# grabbing MicroG Apps${NC}"
Pierre-Hugues Hussone1b56f52020-11-03 18:15:49 +0100208repo=https://microg.org/fdroid/repo/
209downloadFromFdroid com.google.android.gms
210downloadFromFdroid com.google.android.gsf
211downloadFromFdroid com.android.vending
212downloadFromFdroid org.microg.gms.droidguard
213
Jon West9fd0d662021-04-01 16:07:30 -0400214echo -e "${YELLOW}# grabbing NanoLX Apps${NC}"
Unknown2974a752020-11-07 20:18:09 -0500215repo=https://nanolx.org/fdroid/repo/
216downloadFromFdroid is.xyz.mpv
217
Jon West9fd0d662021-04-01 16:07:30 -0400218echo -e "${LT_BLUE}# finishing up apps.mk${NC}"
Pierre-Hugues Hussonc1f73e82017-12-04 16:43:14 +0100219echo >> apps.mk
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +0100220
Jon West9fd0d662021-04-01 16:07:30 -0400221echo -e "${YELLOW}# Cleaning up${NC}"
Pierre-Hugues Hussonbcc5b642017-12-04 16:27:25 +0100222rm -Rf tmp
Jon West9fd0d662021-04-01 16:07:30 -0400223
224echo -e "${GREEN}# DONE${NC}"