# 강의 제목 : 누적다운로드 120만+ 1인 개발자와 함께하는 앱 개발 입문 Online
# 강의 목표 : 기초부터 운영까지 앱 개발의 전체 프로세스를 이해한다.
내 이름으로 된 앱을 최대 10개까지 만들어 출시할 수 있다.
앱 개발자로 성장할 수 있는 초석을 다진다.
반응 얻는 앱의 특징과 노하우를 알아간다.
향후 강의 없이도 나만의 앱을 개발할수 있는 실력을 가진다.
# 강의 요약 : 프로그램 설치부터 기본 문법, 광고 다는 법, 클론코딩을 진행하며 필수 지식을 학습한다.
총 10개의 다른 주제로 실제 사용화 가능한 수준의 앱을 만들어본다.
나의 앱을 세상에 선보이기 위한 개발자 등록 및 배포를 진행한다.
강사님의 리뷰/클레임 대응사례 등 앱 성공 포인트를 참고해 1인 개발자로서의 입지를 다진다.
# 강의 목차 : Flutter 제작된 앱 배포
- 앱 아이콘 준비 - 30일차
- Firebase 등록 - 30일차
- App Bundle 만들기 - 30일차
- 개발자 등록
- 앱 기본 정보 설정
- 스토어 등록 정보 작성 및 출시
- 앱 홍보 및 배포, 주의 사항
# 강의 화면 :
# 강의 내용 : 앱 아이콘 준비, Firebase 등록, App Bundle 만들기
1. 배포전 준비하기
- 앱 아이콘/이름 준비
- Firebase 등록 (https://firebase.flutter.dev)
- App Bundle 만들기
- 개발자 등록 (google play developer)
- 앱정보 등록
- 스토어 등록 정보 작성
- 앱 무료 홍보 방법
2. Open Android module in Android Studio
3. Image Assets 넣기
app 에서 new > Image Assets
4. 앱 이름 변경하기, 아이콘 설정
<application
android:name="io.flutter.app.FlutterApplication"
android:label="눈바디 기록앱"
android:icon="@mipmap/ic_launcher">
5. Firebase 등록
https://firebase.flutter.dev/
https://firebase.flutter.dev/docs/installation/android
6. Firebase 등록
7. pubspec.yaml 파일에 firebase 라이브러리 추가
firebase_core: ^0.7.0
firebase_crashlytics: ^0.4.0+1
firebase_analytics: ^7.0.1
8. main.dart - firebase 초기화 추가하기
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runZonedGuarded(() async {
runApp(MyApp());
}, (error, stackTrace){
FirebaseCrashlytics.instance.recordError(error, stackTrace);
});
9. 앱 번들 만들기
https://docs.flutter.dev/deployment/android
10. keystore properties
storePassword=Fastcampus012!
keyPassword=Fastcampus012!
keyAlias=eyebody
storeFile=/Users/wetrain/Desktop/eyebody/eyebody.jks
appId=com.yunhoo.eyebody
versionCode=1
versionName=1.0
11. app > build.gradle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('keystore.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 29
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId keystoreProperties["appId"]
minSdkVersion 21
targetSdkVersion 29
versionCode keystoreProperties["versionCode"].toInteger()
versionName keystoreProperties["versionName"]
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics'
}
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
# 교육 소감
# 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'코딩 알로하 :: two > 하이브리드앱' 카테고리의 다른 글
21' 패스트 캠퍼스 챌린지 최종 후기 (0) | 2021.12.08 |
---|---|
패스트캠퍼스 챌린지 31일차 (0) | 2021.12.01 |
패스트캠퍼스 챌린지 29일차 (0) | 2021.11.29 |
패스트캠퍼스 챌린지 28일차 (0) | 2021.11.28 |
패스트캠퍼스 챌린지 27일차 (0) | 2021.11.27 |
댓글