ref : 코딩 애플[Flutter로 만드는 iOS, Android 앱] 강의
.apik .aab 로 빌드하면 앱 설치 가능
새폰으로 테스트하면 잘 되는데 유저폰에서 에러나는 이유는?
-> 연락처가 하나있는데 이름이 저장 안되어 있을 수도 있고... 연락처가 아예 없을수도 있고
해결 : 변수 함수 만들때 타입지정 잘했는지, null check.
타입지정 확인하기
그냥 var 말고 더 엄격하게 변수, 함수의 타입지정을 해준다.
(등호가 있으면 타입지정은 자동으로 되긴함)
null check 하기
title: Text(name[i].givenName),
이런 코드 보면 에러가 뜨는데 String 타입자리에 String?을 넣으면 안된다고 뜬다
String?의 의미는 String인지 null인지 확신할 수 없다는 의미
null인지 체크하려면?
-> if문 쓰자(null이면 이름없음 이라고 하기)
-> 삼항 연산자를 쓰자
-> ?? 쓰자
name[i].givenName ?? '이름 없음'
이런 식으로 쓰면 왼쪽 변수가 null일때 '이름 없음' 남겨달라 라는 의미. null 아니면 왼쪽에 있는거 남기기
.apk로 발행하려면
project structure 버튼-> SDK 버전 맞추고 (여기선 31)
-> Build -> Flutter APK 하면 apk 파일 발행됨.
구글 플레이스토어에 만들고 싶으면 .aab 파일로 발행해야함.
근데 일단 keyfile로 사인해야함.
keyfile부터 만들어보자
keytool 도구로 키를 하나 생성해준다.
에디터 상단에서 터미널을 오픈한다(alt + f12)
그리고 flutter doctor -v 입력하면 Java biniary 어딨는지 알려준다. 이 주소 가져와서 터미널에 다음과 같이 입력
저기뜨는bin까지경로\keytool -genkey -v -keystore c:\키파일저장할폴더경로\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
이때 폴더명에 space 바 있으면 " " 처리 해주기
key 파일 저장한 폴더도 하나 만들어서 경로 넣기(주의 : 폴더 내용물 삭제됨)
이러면 터미널에서 비밀번호 입력하고 정보 입력하고~ 이런 과정을 거침
그 다음 android/key.properties 라고 파일 하나 만들자
그리고 아래 내용 적어넣기, 그리고 저장
storePassword=아까입력한비번1
keyPassword=아까입력한비번2
keyAlias=upload
storeFile=키파일경로/upload-keystore.jks
android/app/build.gradle 수정하기
android { ...
바로 위에다가
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android { 어쩌구~~~
이거 복붙해주고
buildTypes { ...
이거 바로 전에
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
이것도 복붙해주기
그리고 수정해줄 것 하나 더(.release 하나만 바꿔준것)
buildTypes {
release {
signingConfig signingConfigs.release
}
}
이제 다 했고 Build >> Flutter >> Build App Bundle
이 파일을 구글 플레이스토어 등록가능(.aab)
근데 개발자 등록비 내야함
ios 앱 발행하는 법은 찾아봤는데
맥북이 있어야 하나보다.
맥북 없이도 앱스토어에 올릴 수 있는 방법이 혹시 있나 찾아봐야지