Android Studioのスマート機能が機能しなくなった問題の調査を1回覚えます.

3183 ワード

Android Studioのインテリジェントな感知機能の失効問題の調査を記録した.
背景
先日、Android分野でのスキルアップのため、Scavengerという実験的なプロジェクトを立ち上げました.
このプロジェクトの特徴は次のとおりです.
  • 最新のAS(現在のバージョン番号は3.3 Canary 12)を使用して開発
  • プロジェクト全体でKotlin言語
  • のみ使用
  • は、さまざまな最新の機能ライブラリ(例えば、Android Xなど)
  • に依存しています.
    依存ライブラリのバージョンをアップグレードした後、ASは純粋なテキストエディタになり、ジャンプ宣言、スマートコードプロンプトなどのIDE標準設定機能が失効し、拡散修復路が開始された.
    プロセス
    推測1:ASプロジェクトの配置が混乱していますか?
    日常業務ではASでAndroid SDKを認識できない方法・クラスが発生し,対応するコードにジャンプできなくなり,コードに大量の赤い波線が充満することがある.通常このような状況に遭遇すると、私たちは
  • Invalidate and Restart
  • ProjectのIdea構成を削除し、プロジェクト
  • を再初期化する
    そこで,今回の問題に遭遇した後,最初に上記の2つの方法を用いて試み,何度も試みたが問題は依然として発見されている.
    推測2:Android Gradleプラグインの互換性の問題
    この問題が発生する前に、各種プラグイン、依存ライブラリ、Kotlinのバージョン番号をアップグレードすることがあるため、プロジェクト構成の問題を排除した後、Android Gradleプラグインの互換性の問題が発生したかどうかを考え始め、3.3からそれを行う.0-alpha 12は3.3に戻る.0-alpha11.
    問題は相変わらずだ.
    推測3:kotlinバージョン互換性の問題
    kotlinバージョンを1.2から71は1.2に戻る.61
    問題は相変わらず
    推測4:SourceSetの変更による
    問題が発生する前の複数回のコード変更では、src//javaからsrc//kotlinにコードを移行し、build.gradleでは、ASがkotlinディレクトリのコードを認識できるようにSourceSetを構成します.したがって,この問題が発見されると,当然javaディレクトリに再移行する.
    しかし、問題は依然として
    推測5:様々なキーワードをgoogleで検索してみる
    いろいろ考えられることを試した後、いろいろなキーワードをgoogleに試して、似たような問題がネットユーザーに提出されたかどうかを見てみましょう.このような知能感知問題は通常ASのIndexingと関係があるため,キーワードはすべてそれと関係がある.しかし、残念なことに、中国語でも英語のキーワードでも、検索結果は現状と合わない.
    Finally
    最後に、以上のような推測を試みた後、偶然にもASの右下にあるIDE Fatal Errorsを点けて、疑似コードに関するエラーを発見した.
    In file: file:///Users/wankey/Documents/GitHub/Scavenger/android/app/src/main/java/io/github/wankey/scavenger/App.kt
    
    com.google.common.util.concurrent.UncheckedExecutionException: java.io.IOException: File format error reading /Users/wankey/.gradle/caches/transforms-1/files-1.1/constraintlayout-2.0.0-alpha2.aar/7abcd58f437e1b16ae4458788cc6387d/R.txt line 1743: 'int[] styleable GradientColor { 0x0101020b, 0x010101a2, 0x010101a3, 0x0101019e, 0x01010512, 0x01010513, 0x010101a4, 0x0101019d, 0x01010510, 0x01010511, 0x01010201, 0x010101a1 }'
    Caused by: java.io.IOException: File format error reading /Users/wankey/.gradle/caches/transforms-1/files-1.1/constraintlayout-2.0.0-alpha2.aar/7abcd58f437e1b16ae4458788cc6387d/R.txt line 1743: 'int[] styleable GradientColor { 0x0101020b, 0x010101a2, 0x010101a3, 0x0101019e, 0x01010512, 0x01010513, 0x010101a4, 0x0101019d, 0x01010510, 0x01010511, 0x01010201, 0x010101a1 }'
    Caused by: java.io.IOException: Values string { 0x01010532, 0x0101053f, 0x01010533, 0x7f04009c, 0x7f0400a4, 0x7f0400a5, 0x7f0400a6, 0x7f040189 } should have 10 item(s).
    

    どうしようもない場合は、その中のException情報をキーワードにgoogle検索
    com.google.common.util.concurrent.UncheckedExecutionException: java.io.IOException: File format error reading 
    

    驚くべきことに5日前、万能のstackoverflowでこの問題を提起した人がいたことに気づき、彼の説明に基づいて問題を引き起こしたContraintLayoutを1.1に戻した.3バージョン、ついにASの知能感知機能が復活した.
    結論
    ASであれ、依存するLibraryであれ、オンラインプロジェクトでAlpha、Betaバージョンを使用しないでください.そうしないと、リスクはコントロールできません.このような実験的な項目は試してみることができますが、慎重にしなければなりません.そうしないと、自分の貴重な時間を浪費する可能性があります.
    参考資料:
  • Big problem Android Studio 3.3 Canary 11 (gradle 3.3.0 alpha 11) with Kotlin 1.3.0-rc-57 and constraintlayout 2.0
  • issue in Google Issue Trracker