-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_android.sh
More file actions
executable file
·190 lines (163 loc) · 5.8 KB
/
deploy_android.sh
File metadata and controls
executable file
·190 lines (163 loc) · 5.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
#!/bin/bash
# Kolory dla outputu
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Funkcja wyświetlania błędu i wyjścia
error_exit() {
echo -e "${RED}❌ Błąd: $1${NC}" >&2
exit 1
}
# Funkcja wyświetlania sukcesu
success() {
echo -e "${GREEN}✅ $1${NC}"
}
# Funkcja wyświetlania info
info() {
echo -e "${BLUE}ℹ️ $1${NC}"
}
# Funkcja wyświetlania ostrzeżenia
warning() {
echo -e "${YELLOW}⚠️ $1${NC}"
}
# Banner
echo -e "${BLUE}"
echo "╔═══════════════════════════════════════╗"
echo "║ Fit26 - Deploy na Android ║"
echo "╔═══════════════════════════════════════╗"
echo -e "${NC}"
# Domyślne wartości
BUILD_MODE="debug"
CLEAN_BUILD=false
RUN_AFTER=true
# Parsowanie argumentów
while getopts "rchdp" opt; do
case $opt in
r)
BUILD_MODE="release"
;;
c)
CLEAN_BUILD=true
;;
d)
BUILD_MODE="debug"
;;
p)
BUILD_MODE="profile"
;;
h)
echo "Użycie: ./deploy_android.sh [OPCJE]"
echo ""
echo "Opcje:"
echo " -r Zbuduj w trybie release (APK gotowy do publikacji)"
echo " -d Zbuduj w trybie debug (domyślnie)"
echo " -p Zbuduj w trybie profile (do profilowania wydajności)"
echo " -c Wyczyść build przed budowaniem (flutter clean)"
echo " -h Pokaż tę pomoc"
echo ""
echo "Przykłady:"
echo " ./deploy_android.sh # Debug build i instalacja"
echo " ./deploy_android.sh -r # Release build i instalacja"
echo " ./deploy_android.sh -c -r # Clean + release build"
exit 0
;;
\?)
error_exit "Nieprawidłowa opcja: -$OPTARG. Użyj -h aby zobaczyć pomoc."
;;
esac
done
info "Tryb budowania: ${BUILD_MODE}"
# Sprawdź czy Flutter jest zainstalowany
if ! command -v flutter &> /dev/null; then
error_exit "Flutter nie jest zainstalowany lub nie jest w PATH"
fi
# Sprawdź wersję Flutter
info "Sprawdzam wersję Flutter..."
flutter --version | head -1
# Sprawdź czy jesteś w katalogu projektu Flutter
if [ ! -f "pubspec.yaml" ]; then
error_exit "Nie znaleziono pubspec.yaml. Uruchom skrypt z katalogu głównego projektu."
fi
# Sprawdź czy telefon jest podłączony
info "Sprawdzam podłączone urządzenia Android..."
DEVICES=$(flutter devices --machine | grep -o '"android"' | wc -l)
if [ "$DEVICES" -eq 0 ]; then
warning "Nie znaleziono podłączonego urządzenia Android!"
echo ""
echo "Upewnij się, że:"
echo " 1. Telefon jest podłączony przez USB"
echo " 2. USB Debugging jest włączony"
echo " 3. Zaakceptowałeś autoryzację ADB na telefonie"
echo ""
read -p "Kontynuować sprawdzanie? (t/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Tt]$ ]]; then
exit 1
fi
fi
# Wyświetl listę urządzeń
flutter devices
# Clean build jeśli wymagane
if [ "$CLEAN_BUILD" = true ]; then
info "Czyszczenie poprzednich build'ów..."
flutter clean || error_exit "flutter clean zakończone niepowodzeniem"
success "Build wyczyszczony"
fi
# Pobierz zależności
info "Pobieranie zależności..."
flutter pub get || error_exit "flutter pub get zakończone niepowodzeniem"
success "Zależności pobrane"
# Sprawdź czy potrzebne jest uruchomienie build_runner
if [ ! -d ".dart_tool/build/generated" ] || [ "$CLEAN_BUILD" = true ]; then
info "Generowanie kodu (build_runner)..."
dart run build_runner build --delete-conflicting-outputs || error_exit "build_runner zakończony niepowodzeniem"
success "Kod wygenerowany"
fi
# Zbuduj APK w odpowiednim trybie
info "Budowanie aplikacji w trybie ${BUILD_MODE}..."
echo ""
case $BUILD_MODE in
release)
flutter build apk --release || error_exit "Budowanie APK zakończone niepowodzeniem"
APK_PATH="build/app/outputs/flutter-apk/app-release.apk"
;;
debug)
flutter build apk --debug || error_exit "Budowanie APK zakończone niepowodzeniem"
APK_PATH="build/app/outputs/flutter-apk/app-debug.apk"
;;
profile)
flutter build apk --profile || error_exit "Budowanie APK zakończone niepowodzeniem"
APK_PATH="build/app/outputs/flutter-apk/app-profile.apk"
;;
esac
success "Aplikacja zbudowana pomyślnie!"
# Wyświetl informacje o APK
if [ -f "$APK_PATH" ]; then
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
info "Rozmiar APK: ${APK_SIZE}"
info "Lokalizacja: ${APK_PATH}"
fi
# Instalacja na urządzeniu
info "Instalowanie aplikacji na urządzeniu..."
info "APK: ${APK_PATH}"
echo ""
# Użyj adb install zamiast flutter install aby zainstalować konkretny APK
adb install -r "$APK_PATH" || error_exit "Instalacja zakończona niepowodzeniem"
echo ""
success "🎉 Aplikacja została pomyślnie zainstalowana na urządzeniu!"
success "Tryb: ${BUILD_MODE}"
success "Package: com.kldev.fit26"
# Opcjonalnie uruchom aplikację
read -p "Czy uruchomić aplikację teraz? (t/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Tt]$ ]]; then
info "Uruchamianie aplikacji..."
adb shell monkey -p com.kldev.fit26 -c android.intent.category.LAUNCHER 1 2>/dev/null
success "Aplikacja uruchomiona!"
fi
echo ""
echo -e "${GREEN}╔═══════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ Deployment zakończony! ║${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════╝${NC}"