web-dev-qa-db-ja.com

AndroidからAndroidXに移行しているときに、プロジェクトにGoogle Play開発者サービスを実装する際にエラーが発生しました。解決策は何でしょうか?

これが私のアプリレベルですbuild.gradle

apply plugin: 'com.Android.application'
apply plugin: 'realm-Android'
//apply plugin: 'io.fabric'

Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "threecallistos.jumperr"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
    implementation 'com.google.Android.material:material:1.0.0-alpha3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
    implementation 'com.google.Android.gms:play-services-maps:15.0.1'
    implementation 'androidx.multidex:multidex:2.0.0'
}

そしてgradle.propertiesはここにあります

org.gradle.jvmargs=-Xmx1536m
Android.useAndroidX=true
Android.enableJetifier=true

削除すると

implementation 'com.google.Android.gms:play-services-maps:15.0.1'

app.buildファイルからは正常に動作します。しかし、私はグーグルマップとサービスで作業しなければならないので、私はあちこちで検索しましたが、適切な解決策を見つけることができませんでした。私はgithubで1つの提案を見つけました

これは、com.google.firebaseがcom.Android.support:support-v4に推移的に依存しているためだと思います。これに対処するには、gradle.propertiesファイルでAndroid.enableJetifier = trueを設定できる必要があります。これにより、「既存のサードパーティライブラリがAndroidX用に作成されているかのように自動的に変換されます」

そして私はすでにこれをしましたが、うまくいきません!

プロジェクトをビルド/実行するとエラーが発生しました

すでに存在するプログラムタイプ:Android.support.v4.app.INotificationSideChannelメッセージ{種類=エラー、テキスト=すでに存在するプログラムタイプ:Android.support.v4.app.INotificationSideChannel、sources = [不明なソースファイル]、ツール名=オプション。 of(D8)}原因:com.Android.builder.dexing.DexArchiveMergerException:dexアーカイブのマージ中にエラーが発生しました:

解決策を教えてください。

5
Ramesh Pokharel

完全に異なるエラーに関する複数の質問がありましたが、実際にはすべてAndroid Studiov3.1のAndroidXライブラリへの移行に由来します。あらゆる種類の奇妙なエラーが発生していました。サポートライブラリに戻らないと解決できなかったため、さまざまな質問に対して同じ回答が表示される場合があります。質問は説明とコンテキストが大きく異なるエラーに関するものであるため、重複する質問ではないため、すべて回答する必要があります。皮肉なことに、この説明はソリューションよりも長く、管理者が理解できるように含まれています。

解決策は次のとおりです。Android Studio v3.2 +はこの問題を解決します。また、リファクタリングメニューの下に[AndroidXに移行]項目を追加して、移行を容易にします。回避策やロールバックは必要ありません。 。安定したv28サポートライブラリがリリースされた後に古いサポートライブラリが終了するため、AndroidXライブラリに移行することが重要です。

Android Studioをベータチャネルから更新して3.2以降を使用するか、近い将来安定バージョンがリリースされるまで待ちます。

編集:9/25/18-v3.2安定バージョンが安定チャネルで利用可能になりました。

7
Always Lucky