지난 포스팅에서 M1 맥북기준 KeyStore를 만들었다.

이제 KeyStore 설정을 할 차례다.

우선 플러터 프로젝트의 android 폴더 하위에

key.properties 파일을 생성한다. 오타에 주의하자.

key.properties 파일 생성

이제 key.properties 에 이 내용을 채워넣는다.

storePassword 와 keyPassword를 입력하는데, 지난 포스팅에서 입력했던 비밀번호를

동일하게 작성하면 된다.

keyAlias 의 경우 지난 포스팅을 확인해보자 .

이 명령어를 보면 upload 란 이름으로 만들었기에 keyAlias 를 upload 라고 작성한다.

storeFile의 경우 지난 포스팅에서 만들었던 upload-keystore.jks 의 파일 경로를 작성한다.

다음으로 android/app/build.gradle 파일을 수정한다.

android 윗부분에 keystore 프라퍼티를 추가한다.

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
    if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    }

다음으로 signingConfigs 를 추가한다.

 signingConfigs {
        release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['storePassword']
        }
    }

마지막으로 buildTypes 의 release 부분을 수정한다.

signingConfigs.debug -> signingConfigs.release 로 변경한다.

이제 모든 설정은 끝났고, 앱번들을 만들어 플레이스토어에 등록하면 된다.

구글 플레이스토어에 앱을 등록하려고 appbundle 파일을 만들었지만 등록을 하면 에러가 난다.

개발자 모드로 만들어서 그렇다는데, Release 모드로 만들어서 등록을 하기 위해서

KeyStore 라는 게 필요하다고 한다. 여러 구글링을 해보니 이 블로그가 가장 적절해서 남긴다.

 

 

[Flutter] M1맥북에서 KeyStore파일 생성하기

터미널에서 flutter doctor -v 명령어 입력하셈그러면 막줄 Java binary at : 이하의 경로를 아래 명령어에 입력하면됨거기뜨는경로\\keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -k

velog.io

 

1. 일단 안드로이드는 JDK 가 필요하기 때문에

개발환경에 JDK 가 있는지 확인한다.

JDK 버전 확인

필자는 있기 때문에 저렇게 나오고, 없는 경우

이곳으로 가서 Mac 용 JDK를 다운받는데, 필자는 8버전으로 했다.(개인적으로 가장 안정적인듯)

그다음 터미널에서 Application 을 찾아 jdk 경로로 찾아가야 하는데, user 밑에 jdk가 설치되는 경우도 있고

최상위 경로에 설치되는 경우도 있는데 필자의 경우 최상위 경로에 있어 그 기준으로 하겠다.

 

cd /
ls -al

최상위 경로에 Applications 폴더

Android Studio.app

보면 글자 사이사이 여백이 있기 때문에 명령어에 싱글쿼터('')를 추가해준다.

설명을 위해 한단계 한단계 썼지만 나머지는 쉬우니 한번에 접근하자.

bin 폴더까지 접근하자

이제 Key Tool 을 만들자.

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload -storetype JKS

 

이렇게 하면 Key를 만들수 있게 되는데, 중간중간 비밀번호/조직명/이름/국가코드 등 입력하게 되는데

차후 다음 단계에서 진행할 때 비밀번호가 필요하니 꼭 외워두자.

자 이제 사용자 계정 root1 기준 하위 디렉토리를 확인해보자.

이렇게 keystore 파일이 생성되었다.

다음 포스팅에서는 KeyStore 파일을 설정해보겠다.

기존에는 구글 안드로이드의 경우에는 앱 출시의 경우

.apk 파일 확장자로 작성했지만, 2021년 구글의 정책 업데이트로

신규 앱의 경우 .aab 확장자로 출시하도록 변경됐다.

기존 앱은 .apk 확장자로 가능하지만 나 같은 경우 신규 앱이기에

bundle 파일 제작 명령어를 남긴다.

flutter build appbundle

 

간단하다. 용량도 엄청 작아졌다.

플러터에서 웹뷰를 쓰다보니 apk를 만들 때

버전을 맞추라고 에러 메시지가 나왔다.

수정한 결과를 작성한다.

경로 : 플러터프로젝트/android/app/src/build.gradle

defaultConfig {
     minSdkVersion 21
     targetSdkVersion 30
     versionCode flutterVersionCode.toInteger()
     versionName flutterVersionName
}



build.gradle 파일의 defaultConfig object를 저런식으로 수정해야 한다.

 

앱 등록을 하기 위해서 안드로이드 스튜디오에서 apk 파일을 따로

만드는 방법이 있지만 난 커맨드명령으로 작성하는게 편해서 명령어를 적어둔다.

필자의 PC는 'M1' 맥북 프로이기 때문에

arm 기반의 칩셋이 필요하므로 명령에 arm64를 추가한다.

my_app % flutter build apk --release --target-platform=android-arm64

저런식으로 명령어를 쳤더니 apk 파일은 만들어졌지만 뭔가 에러가 엄청나게 많이 발생했다.

뭔가 찜찜하다. 그래서 찾아보니 'Null Safety' 라는 옵션을 추가해야 한다.

my_app % flutter build apk --release --no-sound-null-safety --target-platform=android-arm64

깔끔하게 만들어졌다. ㅎ

추후 포스팅은 실제 플레이스토어에 등록해볼 것이다.

안드로이드 앱번들을 등록 후 출시를 하고 다운로드 받았는데 몇 가지 에러가 발생했다.

여러 포스팅에 적긴 번거로우니 한번에 정리해 놓는다.

  1. ERR CLEARTEXT NOT PERMITTED

구글링을 해보니 도메인이 HTTPS가 아닌 HTTP의 경우에 발생하는 에러라 옵션을 추가하면 된다.

AndroidManifest.xml 파일

Android Manifest.xml 파일로 들어가서,

어플리케이션쪽에

android:usesCleartextTraffic='true'

 

코드를 추가하면 된다.

2. ERR_CACHE_MISS

해당 디바이스가 웹뷰에 접근하기 위해 네트워크 권한을 허용해주어야 한다.

AndroidManifest.xml 파일

Android Manifext.xml 파일로 들어가서,

uses-permission 코드 추가

어플리케이션 밑에

<uses-permission android:name="android.permission.INTERNET" />

 

코드를 추가하면 된다.

+ Recent posts