亚州天堂爱爱,做爱视频国产全过程在线观看,成人试看30分钟免费视频,女人无遮挡裸交性做爰视频网站

? ? ?

2020 年需要關注的 5 大 Android 開發技術(android開發相關技術)

雖然編程環境每天都有新變化,但 Android 無疑是其中更新迭代最頻繁的,每年甚至每個月都有新東西。本文介紹了 2020 年開發者最需要關注的 5 大 Android 開發技術。

在眾多 Android 開發團隊參加的 Droidcon London 2019 大會上,一系列新技術令人眼花繚亂。從 Joe Birch 介紹的無障礙智能吉他到即將到來的 Jetpack Compose 庫,創新內容實在太多了,主流社區需要找到幾項核心技術才不至于迷失方向。

020

這篇文章就帶著大家一起看看需要重點關注的一些核心技術,同時本文會解釋為什么應該優先實現這些技術,以及實現的一些初始途徑。需要特別強調一下,實現這些技術雖然不會讓你的終端用戶發出驚嘆,但它們能幫助開發者打造震撼人心的特性,并為開發人員帶來更賞心悅目的代碼庫!

1. Kotlin

Kotlin 通常被視為下一個 Java,它是由谷歌和 JetBrains(Android Studio 開發者)贊助的。Java 從一開始就一直是 Android 應用的首選開發語言,但近年來 Kotlin 迅速普及,如今在 10,000 種 Google Play 應用中有近 60%使用了 Kotlin 。雖說在少數需要訪問底層原生代碼的情況下,仍會繼續使用 C ;但在其他情況下,Kotlin 都可以代替 Java。

Kotlin 的主要優勢是與 Java 的完全互操作性,這意味著開發人員可以盡可能遷移舊代碼,而不用完全重寫整個應用程序。這兩種語言兼容得很好,Android Studio 甚至可以自動從 Java 轉換為 Kotlin。

這種兼容性,加上更簡潔的語法和數百項細小改進,使 Kotlin 在 StackOverflow 的 2019 年開發人員調查中成為第四大“最受歡迎”和第五大“想要”的編程語言,在所有移動編程語言中排名最高。

遷移現有應用有一個好方法,就是在修改現有 Java 文件時將其轉換為 Kotlin。雖然這意味著你要把經常編輯的文件轉換過去,會增加代碼審查的復雜度(比如會面臨潛在的沖突),但由于轉換后的區域能得到審查,因此可以確保任何問題都能被發現。

目前 Candyspace 中使用的 Kotlin 代碼占 86%(并且一直在增長),其余的 14%是實用工具 / 轉換代碼,這些代碼已經有些年頭沒改動過了。

2. Jetpack

谷歌的 AndroidX/Jetpack 庫是一組實用工具,旨在簡化常見的應用需求。例如用于設備上數據庫的 Room ,或用來在底層數據更改時更新顯示內容的 LiveData 。

有了 Jetpack 庫,新項目就省掉了重新發明輪子的麻煩,也不必等待其他開發人員來開源他們的實現方式,現在每位開發者都能獲取到那些基礎要素了。這些庫更新非常頻繁,新功能不斷推出,錯誤修復也會及時發布。由于這些庫是為了協同工作而構建的,因此多使用 AndroidX 庫有助于最大程度地減少應用中出現意外。

020

從開發工作起步開始就使用 Jetpack 庫可以節省數百小時的時間,但我們也可以將已有的應用遷移到 Jetpack 庫上面。雖然看起來很麻煩,但由于這些庫非常流行,針對遷移工作的指南也很容易找到。至少,底層 Android 元素(視圖、片段等)可以自動轉換。

在 Candyspace,我們使用了 Data Binding 和 ViewModel,并可能很快加入 Room 和 Navigation。

3. 模塊化設計

一直以來,應用都被構建為一個巨大的“應用”模塊,其中包含整個應用所需的一切。盡管這樣做確實能讓資源共享起來更容易,但也意味著這個應用的某些部分無法為其他應用 / 開源項目所重用;更重要的是,對應用做出更改時必須重新編譯整個代碼庫。

相反,如果應用由許多較小的模塊組成,則只需重新編譯做出更改的代碼即可,從而大大縮短了構建時間。此外,模塊化設計還為高級 Android 特性(例如即時應用——用戶無需安裝任何內容即可使用你的應用的部分功能,和動態特性——按需安裝應用的各個部分)的應用打開了大門。

將一款現有應用拆分為多個模塊可能會是一個很復雜的工作,因為會因此而發現之前隱藏的問題(“DateUtility 是什么東西?為什么每個類都需要它???”);但是一旦改造完成,代碼庫就會進入一種更加健康的狀態。另外,如果一款新的應用需要類似的功能,則可以快速重用已有模塊,從而大大節省時間!

020

模塊化應用架構的一個示例(來源:本文作者創建?。?/p>

雖然設計一個模塊化架構可能是很復雜的任務,但我之前已經寫過一些指導性原則,這些原則受到了 Nikits Kozlov 關于模塊化和構建時間的文章的啟發。Plaid 也寫了一篇介紹他們向模塊化設計遷移經驗的文章。

在 Candyspace,我們的應用設計都是完全模塊化的,以盡量減少構建時間對開發工作的中斷影響。

4. App Bundle

使用傳統的 APK 將應用分發到用戶的設備時,必須安裝針對所有設備準備的所有資源。這意味著每張位圖圖像可能會有 5 個副本(用于不同的屏幕精度),還要安裝針對不同設備架構的多個庫版本,甚至還得安裝多組邊距和填充值。

使用 App Bundle 分發一款應用時,用戶下載的 APK 只包含他們實際所需要的資源。這樣一來,平均的應用大小就會減少 20%,而未經優化的應用改換格式后應用大小將會得到更顯著的縮減。

020

縮減應用大小的示例(資料來源: https://events.google.com/io2018/)

App Bundles 是 18 個月前剛剛誕生的,但已經有超過 25%的應用安裝時使用了這種格式!這是谷歌推薦使用的格式,并且大多數應用幾乎無需改動就能使用這種格式,只需在 Play 商店上處理一下 App Bundle 的簽名即可。

在 Candyspace,我們正在遷移到 App Bundles 上,同時盡量避免破壞我們現有的工作流程(Slack、QAing 構建、非 Google Play 安裝)。Alistair Sykes 的文章是一份很棒的遷移參考資料,文章考慮到了 CI 服務器、Slack 和 Google Play 內部應用共享等事項。

5. 測試

是的,測試。當然,測試并不是什么閃亮的新特性,也不是用戶能看到的內容,但想要確保一款已有一定用戶基礎的應用的可靠性,就必須要徹底測試你的應用程序才行。由于崩潰率會直接影響你的 Play 商店評分(并且肯定會拖累評分?。虼藨撛O法將其保持在較低水平上。

020

測試金字塔(來源:developer.android.com)

Android 的三種最常見的測試類型分別是(降序排列):

  • 單元測試,例如:我的平方根函數會返回平方根嗎?

這些測試將構成你測試流程的大部分內容,它們用來確保特定的代碼段(例如一個函數)能按預期正常運行。當你對一個部件建立起信心后,就可以將其用于…

  • 集成測試。例如:我的數學模塊可以與位置模塊協同工作嗎?

這些測試可確保你的各個代碼區域(模塊或層)可以正常協同工作。知道應用的組件可以正確相互通信后,你就可以添加…

  • 自動化的 UI 測試,例如:用戶可以在應用上標記一個位置嗎?

在設備或仿真器上只會運行這些測試,它們能確保應用按預期提供完整的用戶體驗。這些測試通常比其他類型的測試要慢得多(并且運行起來更加不便)。

谷歌建議將測試的分布定為 70%的單元測試、20%的集成測試和 10%的大型測試,占比較小的部分需要更長的執行時間、維護時間和實施時間。

最好的測試資源是官方文檔,因為它提供了所有測試類型的介紹,以及如何將其實現到項目中的教程。

在 Candyspace,我們將重點放在單元測試上,其占比要比谷歌建議的比例更大,以確保所有新類的行為都是可預測的。我們目前還在改進自動 UI 測試,以減少對手動測試的依賴。

在編程的任何領域,關于解決問題的最佳方法都會有一百種不同的意見;但 Android 有絕對優勢:Android 擁有一個龐大的開發者社區,這意味著一個十分優秀的新技術會迅速在開發者中普及。當你在互聯網上向陌生人尋求幫助時,如果你找的是“Jetpack LiveData”而不是“之前的開發人員從 Web 開發者朋友那里復制并轉換的庫”,成功獲得答案的可能性就會大得多!

維持一個健康的代碼庫的關鍵,就是能夠適應這些不斷變化的標準并重構現有項目。為了了解最新的 Android 開發實踐和最佳做法,我推薦大家關注 Android 開發者博客、 /r/AndroidDev subreddit 和 Fragmented 播客。

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2024年5月1日 下午1:54
下一篇 2024年5月1日 下午2:05

相關推薦

  • 小學教育研究生科研項目

    小學教育研究生科研項目 隨著現代教育的不斷發展,小學教育研究生項目越來越受到重視。作為研究生項目的一種,小學教育研究生項目旨在培養具有深厚教育理論素養和豐富教學實踐能力的高素質小學…

    科研百科 2025年5月9日
    1
  • 退役軍人檔案管理系統

    退役軍人檔案管理系統 退役軍人檔案管理系統是一個專門用于管理退役軍人檔案的軟件系統。退役軍人檔案管理系統可以幫助退役軍人管理他們的個人信息、軍事生涯、榮譽和成就等方面的信息。 退役…

    科研百科 2025年1月12日
    1
  • 工程項目進度管理的措施

    工程項目進度管理的措施 工程項目進度管理是項目管理中非常重要的一環,能夠有效地控制項目進度,提高項目質量和效益。以下是一些常見的工程項目進度管理的措施。 1. 制定詳細的項目計劃:…

    科研百科 2025年1月8日
    1
  • 科研項目信息傳播

    科研項目信息傳播 隨著科技的不斷進步,科研項目也在不斷地進行中??蒲许椖康男畔鞑ナ瞧渲械囊粋€重要環節,它關系到科研項目的進展和成果。 在科研項目中,信息傳播是非常重要的,因為它關…

    科研百科 2025年2月15日
    1
  • 2024年湖北省教學研究項目

    2024年湖北省教學研究項目 近年來,教學研究在湖北省教育領域越來越受到重視。2024年,湖北省教學研究項目再次展開,旨在推動教學方法和課程的改進,提高教學質量。 本次教學研究項目…

    科研百科 2024年11月18日
    1
  • 源于臨床需求的科研項目

    源于臨床需求的科研項目 隨著醫療技術的不斷發展,臨床需求也在不斷變化。許多科研項目都源于臨床需求,旨在解決患者的問題并提高醫療水平。本文將介紹一個源于臨床需求的科研項目,旨在改善患…

    科研百科 2025年4月9日
    0
  • 珠寶門店為什么要用ERP系統?(珠寶行業的erp系統)

    珠寶軟件行業同珠寶行業一樣,具有特殊性。 當一個珠寶門店想進行信息化建設,用上珠寶ERP時,就會面臨很現實的問題: 目前珠寶軟件行業比較混雜,并且無法找到一個能全面兼顧的軟件公司,…

    2022年9月14日
    283
  • 科研項目中止的后果

    科研項目中止的后果 科研項目是科學家們追求真理和進步的重要方式之一,但是科研項目的中止會對科學家們造成嚴重的后果。在這篇文章中,我們將探討科研項目中止的后果。 首先,科研項目的中止…

    科研百科 2025年4月12日
    1
  • 江西省教育廳官方網站從“心”改版上線(江西省教育廳院網)

      揮別2023、擁抱2024,我們向所有關心江西教育的朋友道一聲:感恩新的遇見!2024年1月1日,江西省教育廳官方網站以新的面貌上線與您見面。   從2005年至今,江西省教育…

    科研百科 2024年6月20日
    41
  • 人文學科科研項目

    人文學科科研項目 人文學科是研究人類文化、歷史、語言、哲學、藝術等的學科。這些學科的研究不僅關系到人類自身的發展和進步,也對人類社會和文化的發展產生了深遠的影響。在當前社會,人文學…

    科研百科 2025年4月30日
    1