Android Studio Flamingo 🐦 で Retrofit が「r8 java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType」

はい、でました。


r8 java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

開発環境が変化した時におこる minify / proguard まわりのエラーは面倒ですね😭

 

🐦 R8 full mode がデフォルトに

そのままで「R8 full mode」だそうです。

R8 full mode by default

The last behavior change: R8 is now in full mode by default, enabling app size reductions and performance improvement. You shouldn’t need to update anything for this change, but if you encounter build or runtime failures you should double-check that your keep rules are configured correctly. For guidance on how to configure the keep rules, see Shrink, obfuscate, and optimize your app.

👉 Shrink, obfuscate, and optimize your app  |  Android Studio  |  Android Developers hatena-bookmark
👉 5 ways to prepare your app build for Android Studio Flamingo release | by Boris Farber | Android Developers | Apr, 2023 | Medium hatena-bookmark

R8 がより強く広く効いて不具合を起こす、ってことか。

 

🐦 解決方法

以下を proguard-rules.pro に追加します。Retrofit 公式に載ってました。


# Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items). 
-keep,allowobfuscation,allowshrinking interface retrofit2.Call 
-keep,allowobfuscation,allowshrinking class retrofit2.Response 
  
# With R8 full mode generic signatures are stripped for classes that are not 
# kept. Suspend functions are wrapped in continuations where the type argument 
# is used. 
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation

👉 After enable R8 full mode getting ParameterizedType error · Issue #3751 · square/retrofit hatena-bookmark

まずは、ひとつ解決できました。

いろいろありそうです、Flamingo。


Android Studio Flamingo | 2022.2.1 安定版公開される

更新の通知が来たので入れてみました。

👉 Android Developers Blog: Android Studio Flamingo is stable hatena-bookmark
👉 Android Studio Flamingo | 2022.2.1  |  Android Developers hatena-bookmark

しかし、UIデザインはそのままでした。楽しみにしてたのに。


👉 【Android Studio】Giraffe や Flamingo の New UI がシンプルで素晴らしい件 hatena-bookmark
👉 New UI | IntelliJ IDEA Documentation hatena-bookmark

設定画面から「New UI」は消えている。

しかし、適用する方法はある。


👉 Android Studio Flamingo 隠された新デザイン「New UI」を有効化する2つの方法 🐦 hatena-bookmark



パスワードどこに保存するか問題

現在使っているデバイス


- Macs
- iPhones
- Androids

「s」がついてるのは複数台という意味。

目標


- クラウド連携
- 自動入力
- ブラウザはChrome
- 無料

ひとつにまとめられないのでモヤモヤしてます。

みんなの考えるベストな方法は?

加えて「2段階認証ワンタイムパスワードジェネレーター」問題も発生しています。

ちなみに、ChatGPT の回答は以下です。

パスワードを保存する方法について、以下のような選択肢があります。

1. オンラインパスワードマネージャーを使用する
オンラインパスワードマネージャーを使用すると、すべてのパスワードをクラウド上で安全に保存できます。代表的なオンラインパスワードマネージャーには、LastPass、1Password、Dashlaneなどがあります。これらのツールは、自動入力機能や2段階認証ワンタイムパスワードジェネレーターのサポートなど、多くの機能を備えています。ただし、一部の機能には有料プランが必要な場合があります。

2. ブラウザのパスワードマネージャーを使用する
Chromeなどの主要なブラウザには、パスワードを保存する機能が備わっています。これらのパスワードマネージャーは無料で、自動入力機能も備えていますが、セキュリティ上のリスクがあるため、2段階認証ワンタイムパスワードジェネレーターのサポートはありません。

3. パスワードを手動で管理する
パスワードを手動で管理する場合、テキストファイルや紙に書き込んで保管することができます。ただし、これらの方法はセキュリティ上のリスクがあり、2段階認証ワンタイムパスワードジェネレーターのサポートもありません。

以上の選択肢から、オンラインパスワードマネージャーを使用することをお勧めします。また、2段階認証ワンタイムパスワードジェネレーターを使用する場合は、Google AuthenticatorやAuthyなどのアプリをインストールして使用することをお勧めします。これらのアプリは無料であり、多くのオンラインサービスでサポートされています。

代表的なオンラインパスワードマネージャーであるLastPassや1Password、Dashlaneでは、無料のプランがありますが、有料のプランの方がより多くの機能を提供しています。ただし、無料のプランでも基本的なパスワード管理機能は使えるため、初めての利用には十分です。

以上の表を見ると、各パスワードマネージャーにはそれぞれ独自の特徴があることがわかります。重要なのは、自分に合ったパスワードマネージャーを選ぶことです。パスワードマネージャーを使用することで、複雑なパスワードを簡単かつ安全に管理することができます。また、二要素認証などのセキュリティ機能を活用することで、アカウントのセキュリティを強化することもできます。

これでいいのかな。