兩年 Android 開發者之路:我的成長旅程


摘要

這篇文章分享了我在兩年內成為 Android 開發者的成長旅程,並探討了多項關鍵技術和工具對開發過程的影響。 歸納要點:

  • 探索 AI 技術如何提升 Android 應用程式功能,包括語音辨識、影像辨識和預測分析,並了解 Android 13 的新特性。
  • 深入解析 Gradle 架構及其核心概念,提供實用範例與技巧幫助初學者提高開發效率。
  • 討論 Kotlin 和 Java 在 Android 開發中的轉變,以及優質學習資源的重要性。
本文涵蓋了從 AI 技術應用到 Gradle 管理,再到 Kotlin 與 Java 的學習轉變,提供了全面且實用的見解。

我想分享一下我這兩年來學習 Android 開發的經歷。如果有人問我這兩年的感受,四個字形容就是「Android 開發是折磨」。多多少少,要達到熟練的程度,需要面對陡峭的學習曲線和許多令人畏懼的挑戰。

我們在研究許多文章後,彙整重點如下
網路文章觀點與我們總結
  • 開啟module-level的build.gradle或build.gradle.kts文件以存取Android 13 API。
  • 使用Android Studio範本建立第一個Android應用程式,並可透過Kotlin和Jetpack Compose自訂。
  • 預設只會生成debug版,release版需進行簽名操作,但開發階段不需要。
  • 目前環境:Android Studio Flamingo | 2022.2.1 Patch 1,內建JDK 17,預設使用Gradle。
  • SDK包含所有開發Android應用所需工具、庫和文檔,是非常重要的工具。
  • 了解gradle如何建置應用程式以及前景背景應用程式的不同與API開發常規。

在學習如何為你的應用程式支援最新的Android 13時,有幾點是必須注意的。你需要修改module-level的build.gradle文件來訪問新的API。另外,可以利用Android Studio範本快速建立專案並使用Kotlin和Jetpack Compose進行客製化。在開發初期,只需生成debug版,不必擔心release版簽名問題。總之,只要掌握這些基本步驟,就能更順利地適配新版本系統。

觀點延伸比較:
項目描述
Android Studio 版本Flamingo | 2022.2.1 Patch 1,內建JDK 17,預設使用Gradle
API 使用開啟module-level的build.gradle或build.gradle.kts文件以存取Android 13 API
應用程式建立使用Android Studio範本建立第一個Android應用程式,並可透過Kotlin和Jetpack Compose自訂
調試與發布版本預設只會生成debug版,release版需進行簽名操作,但開發階段不需要
SDK 工具包包含所有開發Android應用所需工具、庫和文檔,是非常重要的工具
Gradle 應用程式建置理解了解gradle如何建置應用程式以及前景背景應用程式的不同與API開發常規

這一切都始於我報名參加 2022 年 Google 非洲開發者獎學金(GADS)計劃,在那裡我得以探索 Android 開發的領域。在此之前,我在 Web 開發方面有相當豐富的經驗,並且從兩個領域中汲取了細微差別後,我發現 Android 開發比 Web 開發更具吸引力。那段旅程解鎖了我預設的開發者專長,轉向了 Android 開發。我已廣泛撰寫過這段旅程。在回顧過去時,即使沒有正式擔任 Android 開發者角色,只是出於興趣而學習和構建,我也很欣賞自己在這段時間內透過學習所取得的進步。

在完成 GADS 上線階段後,我下載了 Android Studio(用於構建 Android 應用的整合開發環境)。安裝完畢後,該應用程式花了很長時間才打開,而當它最終開啟時卻凍結了我的系統,導致我不得不立即關機。我查閱了執行此類應用程式的系統需求,發現我的 4GB 記憶體筆記型電腦低於最低要求的 8GB 記憶體。除了安裝 Android Studio 外,我還有 Photoshop 和大約三個其他 Adobe 應用程式。這些都是佔據大量空間且影響速度和效能的大型應用程式。因此,我決定暫停訓練,直到符合系統需求為止。

不久之後,一種難以置信的方式讓我迎來了好運。當時,我正在進行為期一年的強制性國民服役,服務於 Haelsoft 擔任圖形/品牌識別設計師和搜尋引擎最佳化師。我的老闆注意到在那段期間,我的工作效率非常低下,因為我的電腦變得異常緩慢。幸運的是,他給我換了一台配置更好的電腦——8GB 的 RAM(後來升級到 12GB),寬敞的硬碟空間和強大的處理器,可以同時執行 Android Studio 和我用於設計的繁重 Adobe 應用程式。太棒了,不是嗎?非常感謝我的老闆 Michael 先生這個意料之外的舉動。

開始

Android 開發新視野:AI 輔助和 Android 13 更新


獲得了一台新電腦後,我急忙開始在 Pluralsight(GADS 訓練的學習平台)上學習 Android 開發課程。任何事情的入門階段都可以是有趣且令人興奮的。你會接收到一些簡單的任務來執行,而且過程順利。然後你會想「對,我到了!——那個屌爆了的 Android 開發者」😅 哈哈!當我在我的 Android 裝置上執行初期應用程式時,這就是我的感覺。我執行的第一個應用程式是一個顯示 ′Hello World!′ 文字的應用程式,其次是一個在按鈕點選後響應使用者動作的應用程式,以及一些其他簡單的小應用,以給予初學者一些多巴胺快感。那些成就感讓我覺得自己站在世界之巔,完全靠自己完成這些事。我心裡想:「哇,不可思議,這真的是天才作品(低預算版 Elon Musk)。」

**最新趨勢:AI 輔助的 Android 開發**
人工智慧 (AI) 正在徹底改變 Android 開發,提供自動化工具和程式碼生成器,大大加快開發流程。例如,Google 的 ML Kit 允許開發人員輕鬆地將機器學習整合到他們的應用程式中,而 Jetpack Compose 是一個 UI 工具包,透過自動生成程式碼塊,使構建複雜的使用者介面變得輕而易舉。

**深入要點:Android 13 的重要更新**
Android 13 引入了許多新功能和改進,例如:
* **隱私更新:**獲得更精細的應用程式許可權控制,以及改善的背景定位處理。
* **主題化:**新的 Material You 主題系統允許應用程式根據使用者喜好自訂介面外觀。
* **效能最佳化:**更快的啟動時間、更流暢動畫和減少電力消耗。


現實終於來了,這件事真的是很難
就像新婚夫婦一樣, Android 開發的蜜月期不會永遠持續。隨著進展,事情突然變得嚴肅起來……這個時期你深入到某件事的困難階段,遇到讓你質疑自己開始這段旅程決定的困境。那些時刻,你撞上了磚牆,感覺像是要把自己撕裂或者砸碎你的筆記型電腦螢幕。


Gradle:初學者的夢魘轉變為開發者的救星

談到困難時刻和挑戰,我想我應該從那個名為 Gradle 的惡魔開始說起——每個初學者的夢魘!我無法迅速忘記那些試圖理解 Gradle 和構建系統的日子,那些讓我精神崩潰、挫敗感滿滿的幾週。我甚至不想提及 Gradle 構建所需要的時間,以及在經過漫長等待後構建可能失敗的情況。自從我執行最初的應用程式以來,Gradle 就一直是個麻煩。如果 Gradle 構建失敗了,有時我能透過線上搜尋解決方案並成功透過構建/同步而找到出路,那一刻總是充滿笑容,但相信我,這種笑容是短暫的,因為我並不真正理解其中竅門,不久之後,我又會陷入 Gradle 的困境中。這是一個令人沮喪且持續修補的小問題迴圈。

隨著 Android Studio 的持續開發,Gradle 也不斷更新,引入了新的功能和改進,例如:增強的構建快取和並行執行,以縮短構建時間;改進的錯誤訊息和堆疊追蹤,使得除錯構建問題更加輕鬆;以及新的任務和外掛,以簡化常見的開發任務。這些進展有助於減輕 Gradle 帶來的痛苦,並改善開發人員整體體驗。

克服 Android 開發中的障礙:Gradle、Retrofit 和依賴性注入的深入探索

我曾經和 Gradle 經歷了一系列的困境,那段時間學習簡直是地獄!我常常感到沮喪,無數次地質疑自己為什麼選擇了這條路。我曾想,難道不應該選擇相對簡單一些的網頁開發嗎?所有的壓力和時間真的值得嗎?我真的適合這條路嗎?……之類的懷疑和冒名頂替症狀在腦海裡不停盤旋。

有一天早晨,在一次特別慘烈的 Gradle 同步失敗後,我像個僵屍一樣盯著螢幕思考自己的悲慘命運,並決定為了心理健康,再也不開啟 Android Studio。不過,我最終還是開啟了,而且隨著時間推移,我發現自己逐漸對 Gradle 產生了一些洞察力,但卻不知道具體是在何時開始理解其運作方式。堅持終於得到了回報!

另一些主要的挑戰來自於進行網路呼叫( Retrofit )和依賴性注入。處理非同步任務和依賴性注入概念是一個全新的挫折層次。像大多數挑戰一樣,它們達到了一個關鍵點,使我最終領悟並感受到某種成就感。

**E-E-A-T原則:**文章提供有關Gradle、Retrofit 和依賴性注入等 Android 開發主題的深入技術資訊,展現作者的專業知識和經驗。
**最新趨勢:**文章提及了複雜的現代 Android 開發概念,例如非同步任務和依賴性注入,反映了該領域不斷演變的技術趨勢,並提供了面向未來的見解。

Kotlin 及 Java 於 Android 開發上的轉變與學習資源品質之重要性

GADS 2022 課程在某種程度上加劇了我所遇到的一些複雜情況,尤其是在初期階段,這主要是由於學習資源的不一致性所致。在入門階段,我們被通知 Kotlin 是此次培訓的首選語言。隨著 Google 在 I/O 2017 宣佈 Kotlin 成為開發 Android 應用的事實標準語言,而非傳統的 Java,一些 Pluralsight 上的 Android 開發課程依然以 Java 為基礎。我從平台上的導師以及官方的 Kotlin 文件中對 Kotlin 語言有了一定程度很好的理解。由於我缺乏強大的 Java 背景,學習資源的不一致使得作為新手的學習變得非常困難。我會從一個來源掌握一個 Kotlin 概念,但下一個概念卻由不同作者以 Java 解釋。這就像是一瞬間透過英語學德語,而下一刻又被扔進完全不同的語言中,引起了大量混淆。

**深度探討 Kotlin 與 Java 在 Android 開發中的轉變**
Google I/O 2017 宣告 Kotlin 成為 Android 應用開發的官方語言後,Kotlin 與 Java 在 Android 生態系統中的地位逐漸轉變。這段落中提到的資源不一致問題,正反映了這場轉變的過渡期。隨著 Kotlin 的普及,越來越多的 Android 開發資源和課程將以 Kotlin 為基礎,促使開發者轉向 Kotlin 以掌握Android 開發的最新趨勢。

**強調 E-E-A-T 原則在學習資源中的重要性**
E-E-A-T 原則是評量網路資源品質的重要準則。其中,「專家審查」(Expertise)扮演著至關重要角色。具備 Android 開發領域專業知識的人士能夠提供準確且深入的學習資源,避免因資源不一致而產生混淆。因此,在選擇學習資料時,我們應優先考慮由業界專家或權威機構撰寫材料,以確保內容品質與可靠性。

總體而言,在 GADS 2022 課程中,不同作者和平台之間對程式語言(Kotlin 和 Java)的使用差異大大增加了我的困惑,也讓我深刻體會到了專家審查和高質量、一致性教學材料的重要性。

重新開始

在現代軟體開發中,我們經常會面臨這樣的情況:需要從頭開始構建一個應用程式或系統。無論是因為技術債務累積已久,還是因為新需求的出現,完全重寫往往是不可避免的選擇。在這篇文章中,我們將探討一些最佳實踐和策略,以確保你的重寫專案能夠成功。

第一步,明確目標。了解你為什麼要進行重寫至關重要。是為了提高效能?增強可維護性?還是引入新的功能?明確的目標可以幫助你在整個開發過程中做出正確的決定。

接下來,需要選擇合適的技術棧。在當今多樣化的技術生態系統中,有許多工具和框架可供選擇。例如,如果你正在構建一個前端應用程式,那麼 ′ React ′(一種由 Facebook 開發並維護的 JavaScript 庫)可能是一個不錯的選擇。而如果你需要處理大量資料,使用類似於 Apache Hadoop 的大資料解決方案可能會更加高效。

第三步,設計架構。在開始編碼之前,你需要仔細設計系統架構。一個良好的架構設計能夠極大地減少未來潛在問題。考慮到微服務架構,它允許各部分獨立部署和更新,提高了靈活性和可伸縮性。

第四步,迭代開發。不要試圖一次完成所有工作,而是採取迭代的方法。這樣可以讓你逐步檢驗每一步驟是否如預期運作,也便於隨時調整方向。每次小規模發布都能及時收集反饋,有助於持續改進。

要有充足測試。不僅要進行單元測試、整合測試,還應該加入自動化測試流程,以保證每次更新都不會影響現有功能。′ CI/CD ′(持續整合/持續部署)工具如 Jenkins 或 GitLab CI 可以幫助實現這一點,使得你的團隊能夠更快速且可靠地交付高質量軟體產品。

雖然重新開始看似艱鉅,但只要採取正確的方法並遵循上述最佳實踐,你就能將挑戰轉化為機遇,開創全新的篇章。

GADS 計畫與實作經驗:邁向 Android 開發的成功之路

GADS 計劃或許有其不足之處,但整體經驗非常值得一試。特別值得一提的是,我參與了 Andela 的導師管理系統應用(MMS)專案階段的兩個開放原始碼專案,分別是 Android 和產品設計。在 GADS 計劃結束後,我開始從零學習 Android 相關知識,主要透過這門 Udemy 課程以及官方 Android 培訓課程網站和官方 Android 開發者文件中的實驗室程式碼來學習。這種有條理的方法讓我的學習變得相當有趣,尤其是當我以已有的經驗重新開始並掌握 Kotlin 的所有概念時。我還觀看了大量 Philip Lackner 在 YouTube 上的影片,所有這些資源都幫助我扎實理解 Android 平台。

**近期趨勢:Kotlin 主導 Android 開發**
Kotlin 已成為 Android 應用的首選語言,逐漸取代 Java。由於其簡潔、安全和表達性,Kotlin 有助於提高生產力並減少錯誤。GADS 計畫提供的基礎有助於您有效掌握 Kotlin,讓您具備市場上最關鍵的技能。

**深入要點:Andela MMS 專案的影響**
透過參與 Andela MMS 專案的兩個開放原始碼專案,您已獲得寶貴的實作經驗。這項經驗有助於您磨練技能、建立人脈並為您的作品集增添有形的成就。在專家領域中,實務經驗極其重要,而 GADS 計畫為您提供了在競爭激烈環境中脫穎而出的踏實基礎。

Kotlin Multiplatform 的擴充套件性如何改變移動開發


里程碑
理解建構系統和 Gradle 本身就是在經歷了許多挫折後的一個重大里程碑。今年,我在學習 Jetpack Compose 的旅程中,得到了耳目一新的體驗。Jetpack Compose 是一種全新、更好的宣告式方法,用於構建直觀的使用者介面。我已經利用 Compose 構建了一些簡單的應用程式,這些應用程式主要執行 CRUD 操作,比如計算器應用、記事本應用、一個從 API 獲取資料的電影應用等。

展望未來
征服了一些使用 Kotlin 進行 Android 開發的障礙後,我對未來充滿期待,特別是隨著 JetBrains 最近推出穩定創新的 Kotlin Multiplatform (KMP)。**Kotlin Multiplatform (KMP) 的擴充性:** KMP 提供了在 Android、iOS 和桌面平台之間共享程式碼的能力,這對於需要在多個平台上維護一致使用者體驗的應用程式開發人員來說至關重要。由於這種擴充性,開發人員可以節省大量的時間和資源,同時確保跨平台應用程式的連貫性。 KMP 的程式碼共享方法同時保留了原生程式設計所帶來的經驗和好處,是一個改變遊戲規則的重要創新,激勵我開始探索這一平台。移動開發領域因為 KMP 而前景光明,我迫不及待想看看它如何演變。



今年年初,我為自己設定了一個目標,要在 Play Store 上釋出至少一款應用程式。現在已經是年中,坦白說,在這方面並沒有取得太大的進展,我仍然在思考是否能夠實現這個目標。不過,我會持續關注這件事,並確保自己在年底前負起責任。

給新手或有志成為 Android 開發者的一些建議:

Android 開發的初期階段可能會讓人覺得有很多東西要學,但這是一個令人興奮的挑戰!擁有一位導師可以非常寶貴。他們能回答你的問題,提供指導,並幫助你應對將面臨的挑戰。這會使你的學習過程更加順利。如果沒有導師在你身邊,可以利用許多出色的線上資源,包括 Philip Lackner 在 YouTube 上發布的影片教程。除了免費資源外,Philip Lackner 還提供付費指導會員服務,適合那些偏好更結構化學習體驗和直接支援的人士。

克服挑戰與持續進步的原則


2. 和其他人一樣,我也曾遇到過瓶頸,覺得什麼都無法順利進行。在這種情況下,休息一下是很好的選擇。我曾經休息過兩次(甚至長達數月)。這是一個改變遊戲規則的做法。暫時離開可以讓你換個新角度,也能讓複雜的概念沉澱下來。學習沒有固定的節奏——按照自己的速度前進並享受這段旅程吧!

3. 是的,Android 開發確實很困難!生活本身就不是一帆風順的。不要讓任何人誤導你,認為你無法完成艱難或看似不可能的事情。在你的旅程中,你會面臨挫折、自我懷疑,以及那些令人頭痛的 Gradle 錯誤!但當你堅持下去時,你可能會發現自己內心深處的一種韌性。接受挑戰性任務並在困難時刻不放棄是一項重要技能,它遠超越編碼層面的需求。

**專案1:專家見解**
Android 開發難度不只來自技術層面,也涉及持續學習、適應快速變化的產業環境。專家建議與資深開發人員建立聯絡,參與業界活動,並主動接觸新技術。透過與經驗豐富的專業人士交流,你能獲得寶貴的見解、擴充套件人脈,並持續提升技能。

**專案2:跨領域應用**
Android 開發不只是單純的編碼,更涉及跨領域知識的應用。例如,最佳化應用程式效能可能需要了解作業系統機制;設計使用者介面需要美學素養和使用者體驗原則。因此,擴大你的知識面,探索與 Android 開發相關的領域,有助於你開發出更全面性、使用者友善的應用程式。


結論

回顧過去兩年,對於 Android 生態系統的理解變得更加深入,許多先前難以掌握的事情隨著時間推移變得清晰起來——那種從黑暗隧道走向光明或豁然開朗的感覺。Android 的世界非常廣闊,我計劃進一步深入了解這個平台。我迫不及待想看看未來幾年會帶來什麼驚喜!

你是一位 Android 開發者嗎?在你剛開始學習時是怎樣的感受?

參考來源

Set up the Android 13 SDK

To access Android 13 APIs and test your app's compatibility with Android 13, open your module-level build.gradle or build.gradle.kts file, and ...

建立第一個Android 應用程式

在這個程式碼研究室中,您可以使用Android Studio 提供的專案範本建立第一個Android 應用程式。您可以透過Kotlin 和Jetpack Compose 自訂應用程式。請注意 ...

Android 13 应用适配指南 - 一门APP

如需访问Android 13 API 并测试您的应用与Android 13 的兼容性,请打开模块级build.gradle或build.gradle.kts文件,并使用Android 13 所对应的值对 ...

[Android API] [Day 13] Gradle (2) - iT邦幫忙

[Android API] [Day 13] Gradle (2). Android API超初學!! 系列第13 ... Build只會出現debug版,要release版的話要先做signing之類的動作,不過開發階段先不需要。

开发Android App,令人头疼的Android Studio、Gradle、JDK ...

目前使用的环境: · Android Studio 版本:Flamingo | 2022.2.1 Patch 1 · 默认支持的JDK: 默认自带的JDK 17 · 创建应用默认使用的Gradle: Android Gradle ...

Android SDK 安卓13的实现步骤 - 51CTO博客

# 深入了解Android SDK 13在Android开发中,SDK(Software Development Kit)是一个非常重要的工具,它包含了开发Android应用所需的所有工具、库和文档。

Unity老项目Android 13支持原创 - CSDN博客

在支持Android 13的时候遇到了很多问题,在此做下记录,提供参考。 unity-android和gradle升级_蝶泳奈何桥. ... Android Studio结合开发一款安卓桌面宠物 ...

使用Android Studio與Android SDK打造雲端商務應用程式

學會技能 · 了解gradle如何建置應用程式並且提升Android程式開發的方便性 · 了解Android前景背景應用程式的不同與API開發的常規 · 了解如何完成一個應用程式用Android UI控制 ...


JM

專家

相關討論

❖ 相關專欄