-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_new_project.bat
More file actions
173 lines (138 loc) · 7.82 KB
/
setup_new_project.bat
File metadata and controls
173 lines (138 loc) · 7.82 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
REM ============================================
REM Flutter 새 프로젝트 자동 세팅 스크립트
REM ============================================
@echo off
REM 명령어 코드를 화면에 표시하지 않음 (출력만 보임)
chcp 65001 >nul
REM UTF-8 인코딩 설정 (한글과 이모지 표시용), >nul로 설정 메시지 숨김
echo ============================================
echo Flutter 새 프로젝트 세팅 스크립트
echo ============================================
echo.
REM echo. = 빈 줄 출력
REM ============================================
REM 1단계: 기존 키스토어 파일 삭제
REM ============================================
echo [1/5] 기존 키스토어 파일 삭제 중...
if exist "android\app\upload-keystore.jks" (
REM 파일이 존재하면 삭제 (/f=강제삭제, /q=확인안함)
del /f /q "android\app\upload-keystore.jks"
echo ✓ upload-keystore.jks 삭제 완료
) else (
REM 파일이 없으면 메시지만 출력
echo - upload-keystore.jks 파일이 없습니다
)
if exist "android\key.properties" (
REM key.properties 파일도 삭제
del /f /q "android\key.properties"
echo ✓ key.properties 삭제 완료
) else (
echo - key.properties 파일이 없습니다
)
echo.
REM ============================================
REM 2단계: 사용자 입력 받기
REM ============================================
echo [2/5] 새 프로젝트 정보 입력
echo.
REM set /p 변수명="프롬프트" : 사용자 입력을 변수에 저장
set /p APP_NAME="앱 이름을 입력하세요 (예: 해리포터 마법 주문): "
set /p APP_ID="Application ID를 입력하세요 (예: com.appname.app): "
set /p PROJECT_NAME="프로젝트 코드명을 입력하세요 (예: harrypotter_magic_spells): "
set /p APP_DESC="앱 설명을 입력하세요: "
set /p KEYSTORE_PASSWORD="키스토어 비밀번호를 입력하세요: "
echo.
REM ============================================
REM 3단계: 새 키스토어 생성
REM ============================================
echo [3/5] 새 키스토어 생성 중...
cd android\app
REM android\app 디렉토리로 이동 (키스토어 저장 위치)
REM keytool: Java 키스토어 생성 도구
REM -genkey: 키 생성, -v: 상세정보 표시, -keystore: 파일명
REM -keyalg RSA: RSA 알고리즘, -keysize 2048: 키 크기
REM -validity 10000: 10000일 유효, -alias upload: 별칭
REM -storepass와 -keypass: 비밀번호 직접 지정
REM -dname: 인증서 정보를 직접 지정하여 대화형 입력 회피 (반복 입력 방지)
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload -storepass "%KEYSTORE_PASSWORD%" -keypass "%KEYSTORE_PASSWORD%" -dname "CN=Devpreneur, OU=Dev, O=Devpreneur, L=Seoul, ST=Seoul, C=KR"
cd ..\..
REM 원래 디렉토리로 돌아가기 (프로젝트 루트)
echo ✓ 키스토어 생성 완료
echo.
REM ============================================
REM 4단계: key.properties 생성
REM ============================================
echo [4/5] key.properties 파일 생성 중...
REM ( ... ) > 파일명 : 괄호 안의 내용을 파일로 저장
(
echo # 키스토어 비밀번호
echo storePassword=%KEYSTORE_PASSWORD%
echo # 키 비밀번호
echo keyPassword=%KEYSTORE_PASSWORD%
echo keyAlias=upload
echo storeFile=upload-keystore.jks
) > android\key.properties
REM key.properties 파일 생성 완료
echo ✓ key.properties 생성 완료
echo.
REM ============================================
REM 5단계: 프로젝트 파일 수정
REM ============================================
echo [5/5] 프로젝트 파일 수정 중...
REM -------- build.gradle.kts 수정 --------
REM PowerShell을 이용해 파일 내용 치환 (정규식 사용)
REM Get-Content: 파일 읽기, -replace: 치환, Set-Content: 파일 쓰기
REM -Encoding UTF8: UTF-8 인코딩으로 저장 (한글 깨짐 방지)
REM namespace 수정 (Android 패키지명)
powershell -Command "$content = Get-Content 'android\app\build.gradle.kts' -Encoding UTF8; $content -replace 'namespace\s*=\s*\".*?\"', 'namespace = \"%APP_ID%\"' | Set-Content 'android\app\build.gradle.kts' -Encoding UTF8"
REM applicationId 수정 (앱 고유 식별자)
powershell -Command "$content = Get-Content 'android\app\build.gradle.kts' -Encoding UTF8; $content -replace 'applicationId\s*=\s*\".*?\"', 'applicationId = \"%APP_ID%\"' | Set-Content 'android\app\build.gradle.kts' -Encoding UTF8"
REM versionCode 수정 (앱 버전 코드, 숫자)
powershell -Command "$content = Get-Content 'android\app\build.gradle.kts' -Encoding UTF8; $content -replace 'versionCode = \\d+ // 🔄 새 프로젝트 생성 시 수정 \\(1로 시작\\)', 'versionCode = 1 // 🔄 새 프로젝트 생성 시 수정 (1로 시작)' | Set-Content 'android\app\build.gradle.kts' -Encoding UTF8"
REM versionName 수정 (앱 버전 이름, 문자열)
powershell -Command "$content = Get-Content 'android\app\build.gradle.kts' -Encoding UTF8; $content -replace 'versionName = \".*?\" // 🔄 새 프로젝트 생성 시 수정 \\(1\\.0\\.0으로 시작\\)', 'versionName = \"1.0.0\" // 🔄 새 프로젝트 생성 시 수정 (1.0.0으로 시작)' | Set-Content 'android\app\build.gradle.kts' -Encoding UTF8"
echo ✓ build.gradle.kts 수정 완료
REM -------- AndroidManifest.xml 수정 --------
REM 앱 이름(레이블) 수정 - UTF-8 인코딩 지정 필수 (한글 깨짐 방지)
powershell -Command "$content = Get-Content 'android\app\src\main\AndroidManifest.xml' -Encoding UTF8; $content -replace 'android:label=\".*?\"', 'android:label=\"%APP_NAME%\"' | Set-Content 'android\app\src\main\AndroidManifest.xml' -Encoding UTF8"
echo ✓ AndroidManifest.xml 수정 완료
REM -------- pubspec.yaml 수정 --------
REM 프로젝트 이름 수정 (^는 줄 시작을 의미) - UTF-8 인코딩
powershell -Command "$content = Get-Content 'pubspec.yaml' -Encoding UTF8; $content -replace '^name:\s*.*$', 'name: %PROJECT_NAME% # 🔄 새 프로젝트 생성 시 수정 (프로젝트 코드명)' | Set-Content 'pubspec.yaml' -Encoding UTF8"
REM 앱 설명 수정 - UTF-8 인코딩
powershell -Command "$content = Get-Content 'pubspec.yaml' -Encoding UTF8; $content -replace '^description: .*? # 🔄 새 프로젝트 생성 시 수정', 'description: %APP_DESC% # 🔄 새 프로젝트 생성 시 수정' | Set-Content 'pubspec.yaml' -Encoding UTF8"
REM 버전 수정 (1.0.0+1 형식: 버전명+빌드번호) - UTF-8 인코딩
powershell -Command "$content = Get-Content 'pubspec.yaml' -Encoding UTF8; $content -replace '^version: .*? # 🔄 새 프로젝트 생성 시 수정 \\(1\\.0\\.0\\+1로 시작\\)', 'version: 1.0.0+1 # 🔄 새 프로젝트 생성 시 수정 (1.0.0+1로 시작)' | Set-Content 'pubspec.yaml' -Encoding UTF8"
echo ✓ pubspec.yaml 수정 완료
REM ============================================
REM 완료 메시지 출력
REM ============================================
echo.
echo ============================================
echo ✅ 새 프로젝트 세팅 완료!
echo ============================================
echo.
REM 설정된 내용 요약 출력
echo 📋 설정된 내용:
echo - 앱 이름: %APP_NAME%
echo - Application ID: %APP_ID%
echo - 프로젝트 코드명: %PROJECT_NAME%
echo - 버전: 1.0.0+1
echo.
REM 생성된 보안 파일 안내
echo 🔒 보안 파일 생성:
echo - android/app/upload-keystore.jks
echo - android/key.properties
echo.
REM 수동으로 해야 할 작업 안내
echo ⚠️ 다음 작업을 직접 수행하세요:
echo 1. 앱 아이콘 변경 (android/app/src/main/res/mipmap-*)
echo 2. flutter clean 실행
echo 3. flutter pub get 실행
echo 4. flutter build appbundle --release 테스트
echo.
REM 키스토어 백업 경고
echo 💾 키스토어 파일을 반드시 안전한 곳에 백업하세요!
echo.
pause
REM pause: 사용자가 키를 누를 때까지 대기 (창이 자동으로 닫히지 않음)