mirror of
https://gitlab.com/Nanolx/NanoDroid
synced 2024-10-31 09:20:23 +00:00
264 lines
6.2 KiB
Bash
264 lines
6.2 KiB
Bash
#!/bin/bash
|
|
|
|
nanodroid_missing_files=0
|
|
nanodroid_broken_files=0
|
|
missing_database=""
|
|
|
|
debug_message () {
|
|
[ "$BP_DEBUG" != '1' ] && return 0
|
|
case "$1" in
|
|
normal)
|
|
echo "$3$(tput setaf 3)$2$(tput sgr 0)"
|
|
;;
|
|
newline)
|
|
echo -e "$3$(tput setaf 3)$2$(tput sgr 0)"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
check_nanodroid () {
|
|
for file in ${file_database[@]}; do
|
|
if [[ ! -f ${CWD}/${file} ]]; then
|
|
nanodroid_missing_files=1
|
|
missing_database=(${missing_database[@]} ${file})
|
|
else
|
|
case ${file} in
|
|
*.gz )
|
|
mimetype=$(file -b --mime-type ${CWD}/${file})
|
|
mimetype_int=$(gzip -dc ${CWD}/${file} | file -b --mime-type - )
|
|
;;
|
|
|
|
*.so* )
|
|
mimetype=$(file -b --mime-type ${CWD}/${file})
|
|
mimetype_int=""
|
|
;;
|
|
esac
|
|
|
|
case ${mimetype} in
|
|
application/x-sharedlib )
|
|
# library
|
|
;;
|
|
|
|
application/gzip )
|
|
# APK
|
|
;;
|
|
|
|
* )
|
|
nanodroid_broken_files=1
|
|
broken_database=(${broken_database[@]} ${file})
|
|
rm -f ${CWD}/${file}
|
|
;;
|
|
esac
|
|
|
|
case ${mimetype_int} in
|
|
"" )
|
|
# library
|
|
;;
|
|
|
|
application/java-archive | application/zip )
|
|
# APK
|
|
;;
|
|
|
|
* )
|
|
nanodroid_broken_files=1
|
|
broken_database=(${broken_database[@]} ${file})
|
|
rm -f ${CWD}/${file}
|
|
;;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
if [[ ${nanodroid_missing_files} -ne 0 ]]; then
|
|
echo -e "\nThe following files are missing:\n"
|
|
printf '%s\n' ${missing_database[@]} | uniq
|
|
fi
|
|
|
|
if [[ ${nanodroid_broken_files} -ne 0 ]]; then
|
|
echo -e "\nThe following files are broken (and will be removed):\n"
|
|
printf '%s\n' ${broken_database[@]} | uniq
|
|
fi
|
|
|
|
if [[ ${nanodroid_missing_files} -eq 0 && ${nanodroid_broken_files} -eq 0 ]]; then
|
|
echo -e "\nNanoDroid correctly populated\n"
|
|
return 0
|
|
else return 1
|
|
fi
|
|
}
|
|
|
|
update_patches () {
|
|
grab_patches sigspoof-core/services.jar.dex core_services.jar.dex
|
|
grab_patches sigspoof-hook-4.1-6.0/services.jar.dex hook_4.1-6.0_services.jar.dex
|
|
grab_patches sigspoof-hook-7.0-9.0/services.jar.dex hook_7.0-9.0_services.jar.dex
|
|
}
|
|
|
|
progress () {
|
|
sleep 0.5
|
|
while [ -d "/proc/${1}" ];do
|
|
echo -ne '/\x08' ; sleep 0.05
|
|
echo -ne '-\x08' ; sleep 0.05
|
|
echo -ne '\\\x08' ; sleep 0.05
|
|
echo -ne '|\x08' ; sleep 0.05
|
|
done
|
|
|
|
echo "Done"
|
|
}
|
|
|
|
zip_add () {
|
|
local file_path="${CWD}/${1}"
|
|
local file_mask="${2}"
|
|
local zip_path="${CWD}/${ZIP}"
|
|
|
|
cd "${file_path}"
|
|
|
|
if [ -z "${file_mask}" ]; then
|
|
zip -qr "${zip_path}" . || exit 1
|
|
elif [ -d "${file_mask}" ]; then
|
|
zip -qr "${zip_path}" "${file_mask}" || exit 1
|
|
else
|
|
zip -q "${zip_path}" ${file_mask} || exit 1
|
|
fi
|
|
|
|
cd "${CWD}"
|
|
}
|
|
|
|
zip_add_setup () {
|
|
cd "${CWD}/doc"
|
|
|
|
local zip_path="${CWD}/${ZIP}"
|
|
|
|
case ${1} in
|
|
0 )
|
|
sed -e 's/nanodroid_overlay=1/nanodroid_overlay=0/' -i .nanodroid-setup
|
|
zip -q "${zip_path}" .nanodroid-setup || exit 1
|
|
sed -e 's/nanodroid_overlay=0/nanodroid_overlay=1/' -i .nanodroid-setup
|
|
;;
|
|
|
|
1 )
|
|
zip -q "${zip_path}" .nanodroid-setup || exit 1
|
|
;;
|
|
esac
|
|
|
|
cd "${CWD}"
|
|
}
|
|
|
|
increase_version_number () {
|
|
if [ -z ${2} ]; then
|
|
date=99999999
|
|
else date=${2}
|
|
fi
|
|
|
|
[ -z ${1} ] && error "no new version number given (current: ${version_code})"
|
|
|
|
for file in "CommonAddon" "CommonInstaller" \
|
|
"systest/SysTest" "patcher/CommonPatcher" \
|
|
"SetupWizard/nanodroid-setup" \
|
|
"uninstaller/META-INF/com/google/android/update-binary"; do
|
|
sed -e "s/^VERSION=.*/VERSION=${1}.${date}/" -i "${CWD}/${file}"
|
|
done
|
|
|
|
sed -e "s/^version_code.*/version_code=${1}/g" -i "${CWD}/build-package"
|
|
sed -e "s/^version_date.*/version_date=${date}/g" -i "${CWD}/build-package"
|
|
|
|
for module in Full microG FDroid BromiteWebView OsmAnd; do
|
|
sed -e "s/version=.*/version=v${1}.${date}/" -i \
|
|
"${CWD}/${module}/module.prop"
|
|
done
|
|
|
|
sed -e "s/rom_version\",.*/rom_version\", \"${1}\")\;/" -i \
|
|
"${CWD}/SetupWizard/META-INF/com/google/android/aroma-config"
|
|
sed -e "s/rom_date\",.*/rom_date\", \"${date}\")\;/" -i \
|
|
"${CWD}/SetupWizard/META-INF/com/google/android/aroma-config"
|
|
}
|
|
|
|
increase_module_version () {
|
|
for module in Full microG FDroid BromiteWebView OsmAnd; do
|
|
eval $(grep versionCode "${CWD}/${module}/module.prop")
|
|
local versionCode=$((versionCode+1))
|
|
sed -e "s/versionCode.*/versionCode=${versionCode}/" \
|
|
-i "${CWD}/${module}/module.prop"
|
|
done
|
|
}
|
|
|
|
dalvikize_jar () {
|
|
|
|
[ -z "${ANDROID_HOME}" ] && error "ANDROID_HOME is not set!"
|
|
[ ! -f "${ANDROID_HOME}/build-tools/28.0.3/dx" ] && error "can't find 'dx' binary in \"${ANDROID_HOME}/build-tools/28.0.3\"!"
|
|
[ ! -z "${2}" ] && local dx_extra_arg="--min-sdk-version=${2}"
|
|
|
|
if [ -f "${1}" ]; then
|
|
${ANDROID_HOME}/build-tools/28.0.3/dx --dex \
|
|
--output="$(basename "${1}" .jar).dex" \
|
|
${dx_extra_arg} "${1}"
|
|
else
|
|
error "can't find input file \"${1}\""
|
|
fi
|
|
|
|
}
|
|
|
|
show_help () {
|
|
echo -e "
|
|
** NanoDroid ${VERSION} helper script **
|
|
|
|
usage: build-package [opt] [arg]
|
|
|
|
setup NanoDroid [! do this first !]:
|
|
pull | download all required apks for NanoDroid
|
|
|
|
update contents:
|
|
u-microg | update microG and companions
|
|
u-fdroid | update F-Droid and Extension
|
|
u-bromite | update Bromite System WebView
|
|
u-osmand | update OsmAnd and Plugins
|
|
u-apps | update applications
|
|
u-swipe | update swipe libraries
|
|
u-gsync | update Google Sync Adapters
|
|
u-patch | download Haystack patches
|
|
|
|
create zip files:
|
|
full | create Full package zip from repo
|
|
microg | create microG package zip from repo
|
|
fdroid | create FDroid package zip from repo
|
|
patcher | create framework patcher zip from repo
|
|
uninstaller | create uninstaller zip from repo
|
|
setupwizard | create SetupWizard zip from repo
|
|
bromitewebview | create Bromite WebView zip from repo
|
|
osmand | create OsmAnd package zip from repo
|
|
all | create all zips from repo
|
|
|
|
misc. stuff:
|
|
check | check if all files were properly downloaded
|
|
clean | remove any untracked files from the repo
|
|
report | create package report (work-in-progress)
|
|
dalvik [jar] [:minsdk] | prepare a jar file for dalvikvm usage
|
|
ver [ver] [:date] | bump version accross whole project
|
|
bump | increment Magisk Module versionCodes by 1
|
|
"
|
|
|
|
exit 0
|
|
}
|
|
|
|
print_package () {
|
|
echo "
|
|
Creating Package
|
|
|
|
Type ${1}
|
|
Name ${ZIP}
|
|
Directory ${CWD}
|
|
"
|
|
|
|
rm -f "${CWD}/${ZIP}"*
|
|
}
|
|
|
|
error () {
|
|
echo -e "${@}"
|
|
exit 1
|
|
}
|
|
|
|
sum_sign_package () {
|
|
cd "${CWD}"
|
|
cd "$(dirname "${1}")"
|
|
sha256sum "$(basename "${1}")" > "${1}.sha256"
|
|
cd "${CWD}"
|
|
gpg --sign --detach-sign "${1}.sha256"
|
|
}
|