TestExplorer 소개 - Android application GUI testing toolhyunae lee
TestExplorer is 100% automated testing solution for Android application based on GUI which is available in entire development process from development and verification.
- A dynamic GUI testing tool for detecting the abnormality of the application by running the event (Touch, Click, Swipe, Back Space, Rotate, etc.)
- 100% automated GUI testing tool in entire development process (App building with source, Installing App, Running App on target device, GUI Exploring, Generating GUI tree, Generating test script, Running test script and Reporting)
TestExplorer 소개 - Android application GUI testing toolhyunae lee
TestExplorer is 100% automated testing solution for Android application based on GUI which is available in entire development process from development and verification.
- A dynamic GUI testing tool for detecting the abnormality of the application by running the event (Touch, Click, Swipe, Back Space, Rotate, etc.)
- 100% automated GUI testing tool in entire development process (App building with source, Installing App, Running App on target device, GUI Exploring, Generating GUI tree, Generating test script, Running test script and Reporting)
본 장표는 인프콘 2022 / 코틀린 멀티플랫폼, 미지와의 조우 세션에 대한 강연 자료입니다.
코틀린은 멀티플랫폼을 지원하는 언어로 Server-side와 Android뿐만이 아니라 JavaScript 엔진이 있는 브라우저나 Node.js도 지원하며, Native 등 다양한 플랫폼에서 쓸 수 있습니다. 이를 이용해 코틀린 코드를 공유하는 단일 코드베이스로 모바일부터 웹과 데스크톱, 서버에 이르기까지 다중 플랫폼 애플리케이션을 작성할 수 있습니다.
본 핸즈온 세션을 통해 코틀린 멀티플랫폼과 함께 리액트, 스프링부트로 웹 애플리케이션의 프론트엔드부터 백엔드까지 직접 개발하며 친해져 보는 시간을 가져보세요. 참가자는 코틀린 멀티플랫폼 프로젝트를 이해하고, 더 나아가 프론트엔드와 백엔드 간의 공유 로직 작성, Kotlin/JS 기반 리액트 및 스프링 웹 프로그래밍을 경험할 수 있습니다.
https://github.com/arawn/building-fullstack-webapp-with-kotlin-multiplatform
https://infcon.day/speaker/박용권-김지헌-코틀린-멀티플랫폼/
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?NAVER Engineering
안드로이드에서 코루틴은 어떻게 적용할 수 있을까?
: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
권태환
요기요 / 안드로이드 개발
6년차 안드로이드 개발자 권태환입니다. 저는 꿈 많은 개발자가되자라는 블로그를 운영하고있고 GDG Seoul의 운영진을 하고 있습니다. 현재는 RGP Korea에서 요기요앱을 개발하고있으며, 안드로이드 개발 패턴과 코틀린에 흥미를 가지고 실무에도 적용하고 있습니다.
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020Bansook Nam
Droidknighs2020에서 유튜브로 발표한 슬라이드입니다.
https://www.youtube.com/watch?v=gTYou3Ru1QM
[Speaker소개]
안드로이드 개발 7년차, Flutter 개발 2년차 개발자입니다. 현재 스타트업 Lawfully에서 182개국 약 7만명의 유저가 사용중인 글로벌앱을 개발/관리 하고 있습니다. 프론트엔드 개발에 관심이 많아 그 외에 React 프로젝트도 참여하였고, 각 플랫폼과 언어의 장단점을 잘 녹여서 개발에 적용중입니다.
이번 발표는 Flutter에 관심이 있는 개발자, 혹은 Flutter앱을 처음 런칭하시는 분들이 참고하시면 좋은 내용으로 준비했습니다.
[이런 분이 들으시면 좋습니다]
Flutter 관심 있으신분. Flutter로 앱을 출시하고 싶으신분. Native Platform 앱과 Flutter 앱을 비교해보고 싶으신분.
TestExplorer 소개 - Android application GUI testing toolhyunae lee
TestExplorer is 100% automated testing solution for Android application based on GUI which is available in entire development process from development and verification.
- A dynamic GUI testing tool for detecting the abnormality of the application by running the event (Touch, Click, Swipe, Back Space, Rotate, etc.)
- 100% automated GUI testing tool in entire development process (App building with source, Installing App, Running App on target device, GUI Exploring, Generating GUI tree, Generating test script, Running test script and Reporting)
TestExplorer 소개 - Android application GUI testing toolhyunae lee
TestExplorer is 100% automated testing solution for Android application based on GUI which is available in entire development process from development and verification.
- A dynamic GUI testing tool for detecting the abnormality of the application by running the event (Touch, Click, Swipe, Back Space, Rotate, etc.)
- 100% automated GUI testing tool in entire development process (App building with source, Installing App, Running App on target device, GUI Exploring, Generating GUI tree, Generating test script, Running test script and Reporting)
본 장표는 인프콘 2022 / 코틀린 멀티플랫폼, 미지와의 조우 세션에 대한 강연 자료입니다.
코틀린은 멀티플랫폼을 지원하는 언어로 Server-side와 Android뿐만이 아니라 JavaScript 엔진이 있는 브라우저나 Node.js도 지원하며, Native 등 다양한 플랫폼에서 쓸 수 있습니다. 이를 이용해 코틀린 코드를 공유하는 단일 코드베이스로 모바일부터 웹과 데스크톱, 서버에 이르기까지 다중 플랫폼 애플리케이션을 작성할 수 있습니다.
본 핸즈온 세션을 통해 코틀린 멀티플랫폼과 함께 리액트, 스프링부트로 웹 애플리케이션의 프론트엔드부터 백엔드까지 직접 개발하며 친해져 보는 시간을 가져보세요. 참가자는 코틀린 멀티플랫폼 프로젝트를 이해하고, 더 나아가 프론트엔드와 백엔드 간의 공유 로직 작성, Kotlin/JS 기반 리액트 및 스프링 웹 프로그래밍을 경험할 수 있습니다.
https://github.com/arawn/building-fullstack-webapp-with-kotlin-multiplatform
https://infcon.day/speaker/박용권-김지헌-코틀린-멀티플랫폼/
[25]안드로이드에서 코루틴은 어떻게 적용할 수 있을까?: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?NAVER Engineering
안드로이드에서 코루틴은 어떻게 적용할 수 있을까?
: 코루틴 적용 및 ReactiveX(RxJava/RxKotlin)와 비교한다면?
권태환
요기요 / 안드로이드 개발
6년차 안드로이드 개발자 권태환입니다. 저는 꿈 많은 개발자가되자라는 블로그를 운영하고있고 GDG Seoul의 운영진을 하고 있습니다. 현재는 RGP Korea에서 요기요앱을 개발하고있으며, 안드로이드 개발 패턴과 코틀린에 흥미를 가지고 실무에도 적용하고 있습니다.
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020Bansook Nam
Droidknighs2020에서 유튜브로 발표한 슬라이드입니다.
https://www.youtube.com/watch?v=gTYou3Ru1QM
[Speaker소개]
안드로이드 개발 7년차, Flutter 개발 2년차 개발자입니다. 현재 스타트업 Lawfully에서 182개국 약 7만명의 유저가 사용중인 글로벌앱을 개발/관리 하고 있습니다. 프론트엔드 개발에 관심이 많아 그 외에 React 프로젝트도 참여하였고, 각 플랫폼과 언어의 장단점을 잘 녹여서 개발에 적용중입니다.
이번 발표는 Flutter에 관심이 있는 개발자, 혹은 Flutter앱을 처음 런칭하시는 분들이 참고하시면 좋은 내용으로 준비했습니다.
[이런 분이 들으시면 좋습니다]
Flutter 관심 있으신분. Flutter로 앱을 출시하고 싶으신분. Native Platform 앱과 Flutter 앱을 비교해보고 싶으신분.
9. Android, iOS, Web
개인 앱 프로젝트로 처음 시작하는 Flutter
선언형 UI 구조에 익숙하면 바로 시작할 수 있음.
Dart의 문법 구조는 다른언어와 매우 유사함 ( Javascript, Java)
Android - Jetpack Compose UI
iOS - Swift UI
Web - React.js
20. - One Source Multi Platform
- 선언형 UI
- Dart는 Javascript, Java와 매우 유사함.
- Native의 기능을 극한까지 사용하는 경우 외의 대부분의 앱을 만들 수 있음.
- Flutter 공식문서, Codelabs, Flutter 공식 Youtube 로 시작할 수 있음.
정리
22. Flutter만 배운 개발자가 취업하는 방법
나의 개발 커리어로 처음 시작하는 Flutter
모바일 APP 개발자로 취업
- 부전공이 하나쯤은 꼭 있어야함. (Android / iOS)
- Web 경험도 플러스 요소가 될 수 있음.
Web 개발자로 취업
- … React.js를 배우는게 빠릅니다.
26. // Configuration settings file format documentation can be found at:
// https://help.apple.com/xcode/#/dev745c5c974
BUNDLE_IDENTIFIER=com.example
FLUTTER_TARGET=lib/src/config/env/env_develop.dart
DISPLAY_NAME=flutter_example
GOOGLE_SERVICE_INFO_PLIST=Develop/GoogleService-Dev-Info.plist
FIREBASE_APP_ID_FILE=firebase_app_id_file_dev.json
/ios/Flutter/Develop.xcconfig
28. Native Development
Platform Channel
- Flutter에서 실행할 수 없는 코드를
네이티브에서 실행
- Method Channel
- Event Channel
Writing custom platform-specific code | Flutter
29. import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class _MyHomePageState extends State<MyHomePage> {
static const platform = MethodChannel('samples.flutter.dev/battery');
// Get battery level.
String _batteryLevel = 'Unknown battery level.';
Future<void> _getBatteryLevel() async {
String batteryLevel;
try {
final int result = await platform.invokeMethod('getBatteryLevel');
batteryLevel = 'Battery level at $result % .';
} on PlatformException catch (e) {
batteryLevel = "Failed to get battery level: '${e.message}'.";
}
...
30. import androidx.annotation.NonNull
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterActivity() {
private val CHANNEL = "samples.flutter.dev/battery"
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {
// This method is invoked on the main thread.
call, result ->
if (call.method == "getBatteryLevel") {
val batteryLevel = getBatteryLevel()
if (batteryLevel != -1) {
result.success(batteryLevel)
} else {
result.error("UNAVAILABLE", "Battery level not available.", null)
}
} else {
result.notImplemented()
}
}
}
}
/Android/app/src/main/kotlin/MainActivity.kt
31. @UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let batteryChannel = FlutterMethodChannel(name: "samples.flutter.dev/battery",
binaryMessenger: controller.binaryMessenger)
batteryChannel.setMethodCallHandler({
[weak self] (call: FlutterMethodCall, result: FlutterResult) -> Void in
// This method is invoked on the UI thread.
guard call.method == "getBatteryLevel" else {
result(FlutterMethodNotImplemented)
return
}
self?.receiveBatteryLevel(result: result)
})
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
/ios/Runner/AppDelegate.swift
38. Android 2년차 개발자가 Flutter 프로젝트에 투입
팀의 신규 프로젝트로 처음 시작하는
Flutter
대기업 자회사의 Android 개발자로 채용됨
회사의 그룹웨어 및 신규 프로젝트를 개발하는 TF팀
팀 구성
- Android 9년차 팀장
- iOS 2년차 사원
- Android 5년차 사수
39. 이해관계에 맞는 프로젝트 규모 산정
팀의 신규 프로젝트로 처음 시작하는
Flutter
프로젝트 규모에 따라 사용할 수 있는 상태관리 라이브러리가 달라짐. 일반적으로
- bloc : 대규모
- provider : 중, 소규모
- getX : 소규모
무엇보다도 팀원간의 이해와 소통 (컨벤션) 이 중요합니다.
40. bloc, provider, GetX 비교 분석
[Flutter Festival GDG Songdo] GetX, provider, bloc 패턴 비교 분석 - 유병욱
41. 협업 방식은 팀바팀, 사바사가 국룰입니다. 하지만,
팀의 신규 프로젝트로 처음 시작하는
Flutter
더 나은 협업을 위해서 고려해볼 몇가지
- DI
- Flutter Theme
- Clean Architecture
- CI / CD