發表文章

目前顯示的是有「Android 開發教學」標籤的文章

Android Studio Flamingo 2022.2.1 Caused by java.lang.RuntimeException: Missing type parameter

圖片
如果你 Android Studio 升級到 Flamingo 2022.2.1 版本,請注意以下內容: 升級後的 Android Studio 使用 Gradle 8.0.0。這個版本的 Gradle 引入了 R8 完整模式(R8 full mode),該模式預設是開啟的。R8 是一個用於縮減、模糊處理和最佳化應用程式的工具。這表示你的應用程式在編譯時會受到更強大的最佳化處理。 你應該特別注意您的應用程式是否會受到這些變化的影響。一個普遍受到影響的第三方 lib 套件是 GSON。GSON 是一個常用的 JSON 序列化/反序列化庫,它可能會出現以下相關錯誤,例如: Caused by java.lang.RuntimeException: Missing type parameter 或是因為 SerializedName 導致在獲取資料欄位時呈現 null,目前 KT 加入 Google 官方提供新的 Proguard 規則,已確定 Gson 在混淆時能正常工作,避免出現相關問題。完整設定請參考下方資訊連結內容。 最後,鼓勵大家在遇到問題時彼此分享解決方案,透過共享經驗,省去踩坑的除錯時間,歡迎大家留言,討論您遇到的問題以及您是如何解決的,一起改善開發流程。 GSON ##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # For using GSON @Expose annotation -keepattributes *Annotation* # Gson specific classes -dontwarn sun.misc.** #-keep class com.google.gson.stream.** { *; } # Application classes that wi...

getMetrics is deprecated 已廢棄替代解決方式

圖片
  前言 getMetrics 在 Android API level 30 (Android 11) 已廢棄,官方建議可以改用 WindowMetrics 替代。

在 Android 12 手機上安裝,會發生 INSTALL_FAILED_VERIFICATION_FAILURE

圖片
前言 目前編譯版本 compileSdk 31 ,直接安裝運行在 Android 12 手機或模擬器上會發生錯誤: Installation did not succeed. The application could not be installed: INSTALL_FAILED_VERIFICATION_FAILURE

Android Gradle Plugin 7.0 之後需要 Java 11

圖片
  前言 Android Gradle Plugin 7.0 (AGP 7.0)之後需要 Java 11。對,要從 Java 8 飛到 Java 11。

AsyncTask was deprecated 已廢棄(Java 篇)替代解決取代方式

圖片
前言 AsyncTask  在 Android 11 (API level 30) 已經被廢棄 (deprecated) 了,官方建議如果有類似非同步邏輯程式執行需求,Java 開發者可以改採用, java.util.concurrent  ; Kotlin 開發者可以改採用  Kotlin concurrency utilities  來取代 AsyncTask 方法。

startActivityForResult is deprecated 已廢棄替代解決方式

圖片
HKT 講師,相關課程 HKT 講師,相關課程: 🎬 從零開始學 SwiftUI 程式設計 免費講義 https://bit.ly/3xCbUUp 🎬 從零開始學 Swift 程式設計 免費講義 https://bit.ly/3ekjsEP 🎬Android 入門開發實戰:口罩地圖(Kotlin) 免費講義 https://bit.ly/2KKZcju 🎬從零開始學 Dart 程式設計 免費講義 https://bit.ly/2OJW6hl 🎬 Flutter 程式設計入門實戰 免費講義 https://bit.ly/37L47Ij 🎬從零開始學 Java 程式設計 免費講義 https://bit.ly/2WlCn6y 🎬 從零開始學 kotlin 程式設計 免費講義 https://bit.ly/2Kx7GrM startActivityForResult is deprecated 這題意外滿多人私訊詢問 ,KT 就來說明一下,在過往我們要從A頁跳到B頁,並從B頁返回時帶回相關資料。之前我們都是使用 startActivityForResult 跳頁和 onActivityResult 解析返回時有無攜帶資料,但這套方法目前已被官方宣布廢棄。所以你可以看到目前使用的話會被用白線劃掉。 滑鼠游標移過去可以看到提示說明: startActivityForResult is deprecated 這個意思就是官方將此方法宣布廢棄。目前只是提示,仍可以繼續使用,但在未來新版本釋出就有可能就變成是紅字完全被移除無法使用。所以看到類似提示,建議可以提早解決改成新的替代方案。 舊的使用方式(已廢棄) 附上,舊的使用方式,留著未來考古用,或是目前維護的專案程式是前輩寫的,可以知道有這麼一件事,過去的使用方式。 const val REQUEST_CODE_1 = 1 const val MY_DATA = "MY_DATA" class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { ...