안드로이드 앱 업로드구글 플레이스토어에 등록하려면 .aab 또는 .apk 파일이 필요→ 일단 앱의 유니크한 Bundle ID 라는게 필요합니다.이름을 바꾸는 방법(주의) 앱이름, 회사이름에 _ 언더바 넣는건 나중에 ios 앱발행시 문제생길 수 있음 → 되도록이면 _를 넣지 마라aab 파일 만드는 절차(쉬운 방법)앱 출시버전 변경하는 방법IOS 앱 업로드 키체인 확인하는 방법
안드로이드 앱 업로드
구글 플레이스토어에 등록하려면 .aab 또는 .apk 파일이 필요
→ 일단 앱의 유니크한 Bundle ID 라는게 필요합니다.
android/app/build.gradle 파일에 있는 applicationId "com.example.contact_app" 항목이 님의 Bundle ID
com.회사명.앱이름 이렇게 지어주면 OK
"com.example.ev_card_solution”을 → .example을 지워줘봄
추가로, dart pub global activate rename을 해도, example이 남아 있어서, example이름을 지워주면 에러가 다시 사라진다.
이름을 바꾸는 방법
1) 터미널을 열기
2) dart pub global activate rename 명령어 입력
dart pub global activate rename
3) terminal에 추가로,
rename setAppName --targets ios,android --value "com.회사명.앱이름"
회사명은 : wmu,
앱이름은: wmuWallet으로 업로드
rename setAppName --targets ios,android --value "com.wmu.wmuWallet"
(주의) 앱이름, 회사이름에 _ 언더바 넣는건 나중에 ios 앱발행시 문제생길 수 있음 → 되도록이면 _를 넣지 마라
aab 파일 만드는 절차(쉬운 방법)
1)https://docs.flutter.dev/deployment/android
Deployment → Build and release an Android app 에서 확인

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA \
-keysize 2048 -validity 10000 -alias upload
2) 터미널에 운영체제에 맞게 붙여넣기
3) 질문들이 나올텐데, 모두 입력하도록 하기
4) 질문이 입력이 완료되면, 이렇게 확인이 됨
[Storing /Users/jay/upload-keystore.jks]
jay@Jayui-MacBookPro zrqst_wmu_webview_app % keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA \
-keysize 2048 - 10000 -alias upload
여기서...Storing 부분에, /Users/jay/upload-keystore.jks만 storeFIle에 잘 집어넣기
5) 확인이 완료되면, Android 폴더 아래에, key.properties 파일을 만들어 줌
storePassword=eco0422
keyPassword=eco0422
keyAlias=upload //임의로 넣어도 되는 것 같다.
storeFile=/Users/jay/upload-keystore.jks
//간혹가다가 jks 뒤에 띄어쓰기가 있어서 안될 가능성이 있는데, 이럴 경우 뒤에 공백 지우기
//이상하게 공백이 많이 먹는다. 꼭 공백이 없어야 된다.
Storing 에 나온 위치를 제대로 입력하고, 꼭 keyAlias 부분을 upload로 수정해주기
6) 추가적으로 설정할 내용
android/app/build.gradle파일에서,
android { 이 앞 부분에 위에 내용을 넣어주기
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android { 어쩌구~~~
7) buildTypes { 바로 전에 붙여 넣기
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
8) debug를 release로 수정해주기
buildTypes {
release {
signingConfig signingConfigs.release
}
}
- .gitignore에 추가해주기
# Keystore files
**/android/key.properties
앱 출시
혹여나, 잘 되지 않을 경우에, flutter clean → flutter build appbundle로 처리해주기
flutter build appbundle
버전 변경하는 방법
1. pubspec.yaml : 변경하고자 하는 버전으로 변경하기
→ version: 1.0.0+2 //뒤에 숫자를 붙이는 것이 중요하다.
2. /android/local.properties 하단에 숫자만 추가 하기
sdk.dir=/Users/kang/Library/Android/sdk
flutter.sdk=/Users/kang/development/flutter
flutter.buildMode=release
flutter.versionName="1.0.2" //버전 네임은 String이다.
flutter.versionCode=5 //code 부분을 수정하는 것이 중요(개발자가 관리하는 것)
3. 프로젝트파일/android/app/build.gradle 상단에 아래의 코드를 숫자만 수정
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '5'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0.2'
}
왜 그런지는 모르지만, 내부 테스트에 넣은 aab 파일을 비공개 테스트에서 쓰면 에러가 난다.
따라서, 그냥 버전코드를 변경해서, flutter build appbundle 하는 것이 좋을 것 같다.
IOS 앱 업로드
iOS 발행은 맥북이 필요합니다. Xcode도 앱스토어에서 찾아서 설치하셈
- Apple Developer Program에 개발자로 가입해야합니다. 1년에 13만원 내야 가입시켜줍니다.
사전준비 : 버전체크
앱을 빌드하기 전에
지금 발행하는 앱의 버전을 수정하고 싶으면 pubspec.yaml 파일에서 기록하고 pub get 누르면 됩니다.
version: 1.0.0+1
이런 부분이 있을텐데 맘대로 바꾸면 됩니다.
1.0.0은 버전넘버, +1은 버전코드입니다.
대격변 업데이트를 하면 2.0.0 이렇게 첫째 숫자를 +1 하는게 일반적이고
마이너한 기능추가는 1.1.0 이렇게 둘째 숫자를 +1 하는게 일반적이고
자잘한 수정사항 패치는 1.0.1 이렇게 셋째 숫자를 +1 하는게 일반적입니다.
애플 개발자 등록
https://developer.apple.com/programs/
들어가서 애플아이디로 로그인하고 apple developer program 에 enroll 해봅시다.
1년에 13만원 결제해야 이용가능합니다. 첫 결제시 하루 이틀 정도 기다려야합니다.
Xcode에서 설정확인하기
ios폴더를 우클릭해서 Xcode에서 오픈하기 누르고 시작하면 됩니다.
Xcode 왼쪽 파일트리에서 젤 위의 Runner 눌러보시면 뭐가 뜹니다.

▲
1. Bundle Identifier를 확인합니다.
이게 앱스토어에서 앱들을 구분짓는 유니크한 아이디입니다.
com.회사명.프로젝트명으로 알아서 채워주는게 맘에 안들면 바꾸면 됩니다.
rename이라는 플러터 패키지 이용하면 편리합니다. https://pub.dev/packages/rename
rename 패키지 써서 바꾸려면 안드로이드 스튜디오 상단 View - Tool Windows - Terminal 누르고
dart pub global activate rename 입력하고
rename setBundleId --targets android,ios --value "com.회사명.프로젝트명"
입력합시다.
(주의) 앱이름, 회사이름에 _ 언더바 있으면 안됩니다.
2. 버전이 pubspec.yaml이랑 다르면 그냥 맞추십시오
3. 중간 Deployment info 란에서 iOS 버전은 기본 셋팅되어있는거 그대로 쓰면 됩니다. 특정 iOS버전에만 배포하려고 할 때 수정하면 됩니다.
4. 하단 App Icons and Launch Images 메뉴에서 앱 아이콘 이미지 확인도 가능합니다.
android/ios용 앱 아이콘 변경은 flutter_launcher_icons 이런 패키지 찾아서 설치해서 쓰는게 간단하고 좋습니다.
애플 개발자 사이트로 들어갑니다

https://developer.apple.com/account/
Account 페이지에서 certificates, identifiers & profiles 메뉴를 눌러봅니다.
거기서 Identifiers 메뉴에서 App ID 새로만들기 이런거 누르시면 됩니다.

▲ App ID 만든다고 하면 됩니다.
타입정하라고 나오면 App Clip 말고 App으로 합시다

▲ 앱 설명을 영어로 잘 적고 Bundle ID를 여기에 잘 기록하면 되는데
Bundle ID는 아까처럼 Xcode에서 확인할 수 있습니다.
하단에 Capabilities에 내 앱이 사용중인 항목이 있다면 체크합시다.
아마 없을듯

▲ https://appstoreconnect.apple.com/
여기로 들어가서 앱을 눌러봅니다. 그리고 새 앱을 만들어봅시다.

▲ 그리고 여러가지 정보를 기입하면 됩니다.
SKU는 여러분만 볼 수 있는 앱 이름입니다.
그리고 이제 Xcode 가서 archive 빌드하면 끝
Xcode로 돌아와서 마지막 확인

▲ Xcode를 다시 켜봅니다.
앱에 서명해야 앱스토어에 올릴 수 있습니다.
1. 자동 서명하기 버튼이 체크되어있는지 확인합시다.
체크안하면 님들이 수동으로 서명해야함
2. Team 항목에서 개발자 등록된 계정도 고르셔야함

▲ Failed to create provisioning profile 에러가 나는 경우
상단메뉴 Product - Destination - My Mac 을 선택하고 하단에 Try again 버튼을 누르면 아마 해결됩니다.
그래도 안되면 상단 Xcode - Preferences - Account 메뉴에서 개발자계정으로 로그인했는지 확인합시다.

▲ 이제 Xcode 상단메뉴에서
Product - Destination - Any iOS device 누르시고
Product - Archive 누르면 됩니다.
- 중간에 뭐 선택하라고하면 App Store Connect로 발행하기 누르면 됩니다
혹시 플러터 프로젝트에 문법에러같은게 있으면 실패할텐데
정확한 에러메세지는 Xcode 좌상단 세모 아이콘 눌러보면 됩니다.
애플이 1~3일 심사해주고 심사결과를 알려줍니다.
앱 관리는 App Store Connect에서 해주면 됩니다.
키체인 확인하는 방법
- 애플 아이디 들어가서 → 키체인 클릭 → 이곳에서 암호도 변경 가능
- cmd + space → 키체인 접근 클릭
https://inflearn-discount.netlify.com/
https://inflearn-discount.netlify.com/
- 키체인 검색 → 들어가서 더블 클릭 → 암호 보기 → 암호 요청할 건데, → 맥북 암호를 입력하면 된다.
https://inflearn-discount.netlify.com/
IOS 출시하기
step1 번들 identifier 생성
step2 Xcode 앱 업로드
step3 App store connect 앱 등록
번들 identifier →
Share article