私は最近Android 3.3に更新しました。依存関係の多くがAndroidXに変更されました。これにより、アプリがクラッシュします。依存関係の変更は、 [〜#〜] xml [〜#〜]同様に、CoordinatorLayoutでも同様の問題に直面しました。AndroidXは比較的新しいため、このトピックに関する質問はあまり多くないため、stackoverflowを検索しました。だから私はこの点について質問をする必要があると感じました。
すべてのXMLについて同様に、floatingactionbuttonのxmlを取得できる場所は、androidX依存関係のXMLを取得できるWebサイトです。
[〜#〜] xml [〜#〜]
<Android.support.design.widget.FloatingActionButton
クラッシュログキャット
Android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class Android.support.design.widget.FloatingActionButton
Caused by: Android.view.InflateException: Binary XML file line #15: Error inflating class Android.support.design.widget.FloatingActionButton
Caused by: Java.lang.ClassNotFoundException: Didn't find class "Android.support.design.widget.FloatingActionButton" on path: DexPathList[[Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/base.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_dependencies_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_resources_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_0_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_1_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_2_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_3_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_4_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_5_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_6_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_7_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_8_apk.apk", Zip file "/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.kc.unsplashdemo-kTZQS-p2845Xly7PcTuAmg==/lib/arm, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:93)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:379)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:312)
at Android.view.LayoutInflater.createView(LayoutInflater.Java:606)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:790)
at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:730)
at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:863)
at Android.view.LayoutInflater.rInflateChildren(LayoutInflater.Java:824)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:515)
at Android.view.LayoutInflater.inflate(LayoutInflater.Java:423)
at com.kc.unsplashdemo.OneFragment.onCreateView(OneFragment.Java:42)
at androidx.fragment.app.Fragment.performCreateView(Fragment.Java:2439)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1460)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.Java:1784)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1852)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.Java:802)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.Java:2625)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.Java:2411)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.Java:2366)
at androidx.fragment.app.FragmentManagerImpl.execSingleAction(FragmentManager.Java:2243)
at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.Java:654)
at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.Java:146)
依存関係
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':androidunsplash')
implementation 'com.squareup.picasso:picasso:2.71828'
implementation("com.squareup.okhttp3:okhttp:3.12.0")
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.google.Android.material:material:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.1'
}
AndroidXの依存関係を追加するだけでは不十分です。コンポーネントをandroidXに移行するには、コンポーネントを手動で変更する必要があります。すべての新しいパッケージの検索には時間がかかる場合がありますが、xml内の古い名前を削除してから、新しい名前を入力することをお勧めします。 AndroidXの依存関係が実際にプロジェクトに追加されている場合、Androidと入力すると、Studioから新しいパッケージ名が提案されます。
さらに、追加情報を探すことができます ここ
古いAndroiddependenciesとnewのもののマッピングを見つけることができます使用者androidxここ
あなたが探している依存関係に対してこれが見つかります:
com.google.Android.material.floatingactionbutton.FloatingActionButton
レイアウト上で何かを置き換えるときは、ctrl + r
を使用してプロジェクト全体で更新し、時間を節約することをお勧めします。実際、androidxに移行するときにかなりの手作業が必要になるためです。
Android Studioを3.3にアップグレードしたときに問題が発生しているようです。これを修正するには、次のことを実行できます:
a)コードをAndroidxに移行した場合は、アプリ内のgradle.properties
で次の2行が存在しないかどうかを確認してください。
Android.useAndroidX=true
Android.enableJetifier=true
次に、Android xmlファイルを含むAndroidxに移行するスタジオのRefactor -> Migrate to Androidx
に移動します。このオプションは、以下のターミナルでの変更を示し、それらの変更を受け入れてAndroidxに移行します。
b)これを実行しても機能せず、それでもエラーが発生する場合は、これを交換してください
Android.support.design.widget.FloatingActionButton
と
com.google.Android.material.floatingactionbutton.FloatingActionButton
これは、以前のサポートライブラリクラスをandroidxパッケージクラスにマップするgoogleによって提供されるマッピングファイルから取得されます。 Androidxへの移行