Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The New Era of Android Development - IDCamp x Kadin 2023
Search
Ahmad Arif Faizin
May 28, 2023
Programming
0
45
The New Era of Android Development - IDCamp x Kadin 2023
Presented for Offline Training Android Dev @Medan
Ahmad Arif Faizin
May 28, 2023
Tweet
Share
More Decks by Ahmad Arif Faizin
See All by Ahmad Arif Faizin
BDD 2024 - Automate Dependency Management in a Scalable Way with Gradle Version Catalog
arifaizin
0
97
The Opportunity of a Digital World - Dicoding Career Fair 2023
arifaizin
0
46
Bringing Machine Learning in Android with MediaPipe - DroidJam 2023
arifaizin
2
590
Building Mobile Apps for People | IDCamp x KADIN 2023
arifaizin
0
52
Adaptive Layout for Any Screen with Jetpack Compose [Dicoding Developer Conference]
arifaizin
0
420
Convert Figma Design to Compose Code with Relay - DevFest Bandung 2022
arifaizin
0
840
Deep Dive in Compose Layout, Lazy Layout, and Material Design 3 - Compose Camp x Juara Android
arifaizin
1
420
Membangun Modern App dengan Jetpack & Android Architecture Component - SIGMATECH
arifaizin
0
60
Storing in Android. The new Way.
arifaizin
0
120
Other Decks in Programming
See All in Programming
データカタログ運用物語 〜令和6年夏の理想と現実〜
kuro_kurorrr
0
110
AWS初心者ってどうやってAWSを学ぶ?〜アプリエンジニアがやってよかったアーキテクチャ学習方法〜
yamanashi_ren01
0
190
OpenAI/Gemini APIを使って EPUBを翻訳するCLIツールをつくってみた
tomiyan
0
790
生成AIをkintoneに連携してみた
hideg
0
230
開発部に不満を持っていたCSがエンジニアにジョブチェンしてわかった「勝手に諦めない」ことの大切さ
sakuraikotone
28
16k
TiDB Serverless ~理想のServerless DBを考える~
soso_15315
1
160
最古の関数型言語「Lisp」ことはじめ / lisp_in_kamiyama
uhooi
1
190
Introduction of Happy Eyeballs Version 2 (RFC8305) to the Socket library
coe401_
1
220
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
2
160
AWS CDKにおける「再利用性」を考える / aws-cdk-reusability
gotok365
6
1.3k
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
rvirus0817
6
1.4k
Activities at Cairo Library
cairolibrary720
0
1.2k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
189
16k
Visualization
eitanlees
139
14k
What's in a price? How to price your products and services
michaelherold
239
11k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.8k
[RailsConf 2023] Rails as a piece of cake
palkan
35
4.4k
Building Adaptive Systems
keathley
34
2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
23
1.9k
The Pragmatic Product Professional
lauravandoore
29
6.1k
Raft: Consensus for Rubyists
vanstee
134
6.5k
5 minutes of I Can Smell Your CMS
philhawksworth
200
19k
A better future with KSS
kneath
231
17k
Transcript
The New Era of Android Development Ahmad Arif Faizin Curriculum
Developer
None
None
Android Studio
Android Studio Bot 🤖
Device Mirroring 🪞 • File > Settings > Tools >
Device Mirroring • Enable mirroring of physical Android devices. • Bye bye Visor~
App Quality Insights 🪲
New UI 😎
Kotlin
None
Explicit Fields ✨
Kotlin DSL 🪶 • All in one language • More
readable • Better compile-time checking
Hints & Documentation 💖
Version Catalog 📖 // build.gradle.kts plugins { alias(libs.plugins.com.android.application) alias(libs.plugins.org.jetbrains.kotlin.android) id("com.google.devtools.ksp")
} ... dependencies { implementation(libs.core.ktx) implementation(libs.appcompat) } // libs.version.toml [versions] com-android-application = "8.1.0-alpha11" org-jetbrains-kotlin-android = "1.8.0" core-ktx = "1.9.0" appcompat = "1.4.1" [libraries] core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core-ktx" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } [plugins] com-android-application = { id = "com.android.application", version.ref = "com-android-application" } org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "org-jetbrains-kotlin-android" }
Kapt to KSP 🫣
Android Jetpack
Architecture Libraries and Guidance 🗝
Recommendation 👌 https://developer.android.com/topic /architecture/recommendations
Modularization 🪱
Dependency Injection 💉
None
Jetpack Compose
None
Look at the new Project Template 👀
Jetpack Compose is Android’s recommended modern toolkit for building native
UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, declarative Kotlin APIs, powerful tools, and backward compatible.
Construct UI by describing what, not how.
XML Vs Compose 💥 <!-- activity_main.xml --> <FrameLayout> <RecyclerView android:id=”@+id/listNews”
... /> <TextView android:id=”@+id/textError”.../> </FrameLayout> // Activity.kt val listNews = findViewById(R.id.listNews) val textError = findViewById(R.id.textError) if (data.size > 0){ listNews.visibility = View.VISIBLE textError.visibility = View.GONE } else { listNews.visibility = View.GONE textError.visibility = View.VISIBLE } // Activity.kt @Composable fun NewsScreen(newsList: List<News>) { if (newsList.size > 0){ Column { for (title in newsList){ Text(text = title) } } } else { Text(text = "No Data!") } }
Material You
None
Look (again) at the new Project Template 👀👀
M2 vs M3 💥
None
None
None
Conclusion 🎁 d.android.com/modern-android-development
“All you need is the plan, the road map, and
the courage to press on to your destination.” Earl Nightingale
Thank you