286 lines
9.9 KiB
Bash
Executable file
286 lines
9.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# Build BotOS Magisk Module
|
|
# Substitui boot animation, launcher padrão, e configurações do sistema
|
|
#
|
|
# O módulo será instalado via Magisk Manager
|
|
|
|
set -e
|
|
cd "$(dirname "$0")/.."
|
|
|
|
MODULE_DIR="magisk-module"
|
|
MODULE_ZIP="botos-magisk-v1.0.zip"
|
|
|
|
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
echo "║ Building BotOS Magisk Module ║"
|
|
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
|
|
# Limpar e criar estrutura
|
|
rm -rf "$MODULE_DIR"
|
|
mkdir -p "$MODULE_DIR/META-INF/com/google/android"
|
|
mkdir -p "$MODULE_DIR/system/media"
|
|
mkdir -p "$MODULE_DIR/system/etc/permissions"
|
|
mkdir -p "$MODULE_DIR/system/priv-app/BotOS"
|
|
mkdir -p "$MODULE_DIR/common"
|
|
|
|
# =====================================================
|
|
# module.prop - Metadados do módulo
|
|
# =====================================================
|
|
cat > "$MODULE_DIR/module.prop" << 'EOF'
|
|
id=botos
|
|
name=BotOS - General Bots Launcher
|
|
version=v1.0
|
|
versionCode=1
|
|
author=Pragmatismo.io
|
|
description=Transforma seu Android em BotOS - Remove bloatware, substitui boot animation e define BotOS como launcher padrão
|
|
EOF
|
|
|
|
# =====================================================
|
|
# update-binary - Script de instalação
|
|
# =====================================================
|
|
cat > "$MODULE_DIR/META-INF/com/google/android/update-binary" << 'INSTALLER'
|
|
#!/sbin/sh
|
|
|
|
#################
|
|
# Initialization
|
|
#################
|
|
|
|
TMPDIR=/dev/tmp
|
|
PERSISTDIR=/sbin/.magisk/mirror/persist
|
|
|
|
rm -rf $TMPDIR 2>/dev/null
|
|
mkdir -p $TMPDIR
|
|
|
|
# echo before loading util_functions
|
|
ui_print() { echo "$1"; }
|
|
|
|
require_new_magisk() {
|
|
ui_print "*******************************"
|
|
ui_print " Please install Magisk v20.4+! "
|
|
ui_print "*******************************"
|
|
exit 1
|
|
}
|
|
|
|
##########################
|
|
# Load util_functions.sh
|
|
##########################
|
|
|
|
OUTFD=$2
|
|
ZIPFILE=$3
|
|
|
|
mount /data 2>/dev/null
|
|
|
|
[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk
|
|
. /data/adb/magisk/util_functions.sh
|
|
[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk
|
|
|
|
install_module
|
|
exit 0
|
|
INSTALLER
|
|
|
|
chmod 755 "$MODULE_DIR/META-INF/com/google/android/update-binary"
|
|
|
|
# =====================================================
|
|
# updater-script (vazio, necessário para compatibilidade)
|
|
# =====================================================
|
|
echo "#MAGISK" > "$MODULE_DIR/META-INF/com/google/android/updater-script"
|
|
|
|
# =====================================================
|
|
# customize.sh - Script de customização pós-instalação
|
|
# =====================================================
|
|
cat > "$MODULE_DIR/customize.sh" << 'CUSTOMIZE'
|
|
#!/system/bin/sh
|
|
# BotOS Magisk Module - Customization Script
|
|
|
|
ui_print "╔══════════════════════════════════════════════════════════════╗"
|
|
ui_print "║ Installing BotOS ║"
|
|
ui_print "╚══════════════════════════════════════════════════════════════╝"
|
|
ui_print ""
|
|
|
|
# Verificar arquitetura
|
|
ARCH=$(getprop ro.product.cpu.abi)
|
|
ui_print "- Device architecture: $ARCH"
|
|
ui_print "- Android version: $(getprop ro.build.version.release)"
|
|
ui_print "- Device: $(getprop ro.product.model)"
|
|
ui_print ""
|
|
|
|
# Copiar boot animation se existir
|
|
if [ -f "$MODPATH/bootanimation.zip" ]; then
|
|
ui_print "- Installing custom boot animation..."
|
|
mkdir -p "$MODPATH/system/media"
|
|
cp "$MODPATH/bootanimation.zip" "$MODPATH/system/media/"
|
|
fi
|
|
|
|
# Copiar APK do BotOS se existir
|
|
if [ -f "$MODPATH/BotOS.apk" ]; then
|
|
ui_print "- Installing BotOS launcher as system app..."
|
|
mkdir -p "$MODPATH/system/priv-app/BotOS"
|
|
cp "$MODPATH/BotOS.apk" "$MODPATH/system/priv-app/BotOS/"
|
|
fi
|
|
|
|
# Configurar permissões
|
|
ui_print "- Setting permissions..."
|
|
set_perm_recursive $MODPATH 0 0 0755 0644
|
|
|
|
if [ -d "$MODPATH/system/priv-app" ]; then
|
|
set_perm_recursive "$MODPATH/system/priv-app" 0 0 0755 0644
|
|
fi
|
|
|
|
ui_print ""
|
|
ui_print "╔══════════════════════════════════════════════════════════════╗"
|
|
ui_print "║ BotOS installed successfully! ║"
|
|
ui_print "║ ║"
|
|
ui_print "║ After reboot: ║"
|
|
ui_print "║ 1. Press Home button ║"
|
|
ui_print "║ 2. Select 'BotOS' as default launcher ║"
|
|
ui_print "║ 3. Choose 'Always' ║"
|
|
ui_print "╚══════════════════════════════════════════════════════════════╝"
|
|
CUSTOMIZE
|
|
|
|
chmod 755 "$MODULE_DIR/customize.sh"
|
|
|
|
# =====================================================
|
|
# post-fs-data.sh - Executado no boot (após fs montado)
|
|
# =====================================================
|
|
cat > "$MODULE_DIR/post-fs-data.sh" << 'POSTFS'
|
|
#!/system/bin/sh
|
|
# BotOS - Post-FS-Data Script
|
|
# Executado após o sistema de arquivos ser montado
|
|
|
|
MODDIR=${0%/*}
|
|
|
|
# Log
|
|
log -t BotOS "BotOS module post-fs-data started"
|
|
|
|
# Desabilitar apps de fabricante (overlay)
|
|
# Isso "esconde" os apps sem deletá-los
|
|
for bloat in \
|
|
"com.facebook.katana" \
|
|
"com.facebook.appmanager" \
|
|
"com.facebook.services" \
|
|
"com.samsung.android.bixby.agent" \
|
|
"com.samsung.android.bixby.service" \
|
|
"com.huawei.appmarket" \
|
|
"com.miui.msa.global" \
|
|
"com.miui.analytics"
|
|
do
|
|
# Criar diretório vazio para "substituir" o app
|
|
if [ -d "/system/app/$bloat" ]; then
|
|
mkdir -p "$MODDIR/system/app/$bloat"
|
|
touch "$MODDIR/system/app/$bloat/.replace"
|
|
fi
|
|
if [ -d "/system/priv-app/$bloat" ]; then
|
|
mkdir -p "$MODDIR/system/priv-app/$bloat"
|
|
touch "$MODDIR/system/priv-app/$bloat/.replace"
|
|
fi
|
|
done
|
|
|
|
log -t BotOS "BotOS bloatware disabled via overlay"
|
|
POSTFS
|
|
|
|
chmod 755 "$MODULE_DIR/post-fs-data.sh"
|
|
|
|
# =====================================================
|
|
# service.sh - Executado como serviço no boot
|
|
# =====================================================
|
|
cat > "$MODULE_DIR/service.sh" << 'SERVICE'
|
|
#!/system/bin/sh
|
|
# BotOS - Service Script
|
|
# Executado como serviço após o boot completar
|
|
|
|
MODDIR=${0%/*}
|
|
|
|
# Aguardar boot completar
|
|
while [ "$(getprop sys.boot_completed)" != "1" ]; do
|
|
sleep 1
|
|
done
|
|
|
|
# Aguardar mais um pouco para sistema estabilizar
|
|
sleep 5
|
|
|
|
log -t BotOS "BotOS service started"
|
|
|
|
# Configurar BotOS como launcher padrão (se instalado)
|
|
BOTOS_PKG="br.com.pragmatismo.botos"
|
|
|
|
if pm list packages | grep -q "$BOTOS_PKG"; then
|
|
# Tentar definir como launcher padrão
|
|
# Nota: Isso pode não funcionar em todos os dispositivos
|
|
pm set-home-activity "$BOTOS_PKG/.MainActivity" 2>/dev/null || true
|
|
log -t BotOS "BotOS set as preferred launcher"
|
|
fi
|
|
|
|
# Desabilitar analytics/telemetria de fabricantes
|
|
settings put global upload_apk_enable 0 2>/dev/null || true
|
|
settings put secure send_action_app_error 0 2>/dev/null || true
|
|
|
|
# Ativar modo imersivo (esconde barra de navegação)
|
|
# settings put global policy_control immersive.full=* 2>/dev/null || true
|
|
|
|
log -t BotOS "BotOS service configuration complete"
|
|
SERVICE
|
|
|
|
chmod 755 "$MODULE_DIR/service.sh"
|
|
|
|
# =====================================================
|
|
# uninstall.sh - Script de desinstalação
|
|
# =====================================================
|
|
cat > "$MODULE_DIR/uninstall.sh" << 'UNINSTALL'
|
|
#!/system/bin/sh
|
|
# BotOS - Uninstall Script
|
|
|
|
# Restaurar launcher padrão do sistema
|
|
# (O Magisk automaticamente remove os overlays)
|
|
|
|
log -t BotOS "BotOS module uninstalled"
|
|
UNINSTALL
|
|
|
|
chmod 755 "$MODULE_DIR/uninstall.sh"
|
|
|
|
# =====================================================
|
|
# Copiar boot animation se existir
|
|
# =====================================================
|
|
if [ -f "../bootanimation.zip" ]; then
|
|
echo "- Incluindo boot animation customizada..."
|
|
cp "../bootanimation.zip" "$MODULE_DIR/"
|
|
else
|
|
echo "- Boot animation não encontrada."
|
|
echo " Execute ../scripts/create-bootanimation.sh primeiro."
|
|
fi
|
|
|
|
# =====================================================
|
|
# Copiar APK do BotOS se existir
|
|
# =====================================================
|
|
APK_PATH="../gen/android/app/build/outputs/apk/release/app-release.apk"
|
|
if [ -f "$APK_PATH" ]; then
|
|
echo "- Incluindo BotOS APK..."
|
|
cp "$APK_PATH" "$MODULE_DIR/BotOS.apk"
|
|
else
|
|
echo "- APK não encontrado."
|
|
echo " Compile com: cd .. && cargo tauri android build --release"
|
|
fi
|
|
|
|
# =====================================================
|
|
# Criar arquivo ZIP do módulo
|
|
# =====================================================
|
|
echo ""
|
|
echo "Criando $MODULE_ZIP..."
|
|
cd "$MODULE_DIR"
|
|
zip -r "../$MODULE_ZIP" . -x "*.DS_Store"
|
|
cd ..
|
|
|
|
echo ""
|
|
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
echo "║ Magisk Module criado com sucesso! ║"
|
|
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
echo ""
|
|
echo "Arquivo: $(pwd)/$MODULE_ZIP"
|
|
echo ""
|
|
echo "Para instalar:"
|
|
echo " 1. Copie para o dispositivo:"
|
|
echo " adb push $MODULE_ZIP /sdcard/"
|
|
echo ""
|
|
echo " 2. Abra o Magisk Manager"
|
|
echo " 3. Vá em 'Modules' → '+' → Selecione o ZIP"
|
|
echo " 4. Reinicie o dispositivo"
|
|
echo ""
|