web-dev-qa-db-ja.com

Android Android St​​udio 2.3でRepo 46.0.0をサポート

今日、Android St​​udio通知がポップアップ表示されたため、サポートリポジトリを46.0.0に更新しました。

私は以下のエラーに行きます:

エラー:タスク ':app:processDevDebugManifest'の実行に失敗しました。

マニフェストの統合に失敗しました:属性com-data#Android.support.VERSION@value value =(25.3.0)from [com.Android.support:support-v13:25.3.0] AndroidManifest.xml:27:9-31も[com.Android.support:preference-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38 value =(26.0.0-alpha1)に存在します。提案:オーバーライドするAndroidManifest.xml:25:5-27:34の要素に「tools:replace = "Android:value"」を追加します。

25.3.0からリビジョン26.0.0 Alpha 1を使用するようにすべての依存関係を更新しましたが、compileSdkを25から26に上げる必要があることがわかりました。AS2.3を使用している場合は、それを取得する必要がありますカナリアの不安定なアルファ/ベータ版。

このリンクは変更を示しています: https://developer.Android.com/topic/libraries/support-library/revisions.html#26-0-0-alpha1

そして、新しいAndroid Oへの移行に関しては、それがリンクです: https://developer.Android.com/preview/migration.html

AS安定バージョンの使用は、新しいリポジトリでは機能しないようです。

新しい46ではなくAndroid St​​udioリポジトリバージョン45に戻るにはどうすればよいですか?

**更新:マージされたマニフェストには、生成されたライブラリマニフェストの1つが含まれています

<meta-data
        Android:name="Android.support.VERSION"
        Android:value="26.0.0-alpha1" />

ただし、生成されたファイルの編集は役に立たないので、今のところ、新しいASが安定したビルドになるまで、rev 45に固執する理由です。

52
RJFares

どうしたの

一部のライブラリはAndroidサポートライブラリのバージョン "X以降"に依存しているため、Gradle依存関係の解決は、dependenciesブロックで指定された正確なバージョンを実際に無視して、最新のものを取得します。

これはあなたが望むものではありません。同じバージョンのすべてのサポートライブラリとメジャーバージョンは、コンパイルSDKバージョンと一致する必要があります。

解決策は何ですか

幸いなことに、特定のサポートライブラリバージョンを強制できます。

これをアプリモジュールの最後build.gradleに配置します。

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.Android.support') {
            // Skip multidex because it follows a different versioning pattern.
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

もちろん、バージョンを使用しているものに置き換えます。

dependeciesブロック内のサポートライブラリのバージョン値は無関係になりました。

疑問がある場合

これは 十分に文書化されたメソッド であり、機能しています。

あなたが助けるために何ができますか

範囲に依存 サポートライブラリバージョンのライブラリを見つける

gradlew dependencies --configuration compile -p <module name> | grep ,

そして、前述のライブラリの作成者に、推移的に依存する必要があることを知らせますライブラリでできる最も古いサポートライブラリ

これは、問題を完全に回避することを目的としています。

158
Eugen Pechanec

ステップ1

互換性のないcom.Android.supportバージョンのGradleチェックを回避するには、アプリモジュールbuild.gradleに次のコードを追加します。

dependencies {
    //noinspection GradleCompatible
}

これは、根本的な問題を解決しない一時的な修正です!最小限の変更でアプリの開発を継続できました。

ステップ2

これをメインのマニフェストファイルAndroidManifest.xmlに追加します。

<meta-data
    tools:replace="Android:value"
    Android:name="Android.support.VERSION"
    Android:value="25.3.1" />

サポートリポジトリの次の更新の1つが利用可能になると、このエントリは削除されます。

ステップ

アプリモジュールのbuild.gradleファイルの最後に次のコードを追加します。

configurations.all {
    resolutionStrategy.eachDependency { details ->
        def requested = details.requested
        if (requested.group == 'com.Android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.1'
            }
        }
    }
}

NB:実行時エラーを避けるために、Gradleライブラリが更新され互換性があることを確認することをお勧めします。

3
Hamza Rashid

彼らはそれを修正する解決策です:

  1. プロジェクトエクスプローラービューに移動する
  2. 一番下に達するのは外部ライブラリです
  3. 26.0.0-alpha6を使用しているライブラリを見る
  4. 次に、ステップ3のライブラリに基づいてapp.gradleにこれを記述します

例私の場合:

configurations.all {
    resolutionStrategy.force 'com.Android.support:appcompat-v7:25.3.0'
    resolutionStrategy.force 'com.Android.support:support-v13:25.3.0'
}

これにより、プロジェクトは前述のライブラリを使用するようになります。

2
Rajesh Tiwari

最善の解決策は、Androidサポートライブラリをバージョン45に戻す​​ことです。

これを行うには、このリンクを開きます(必要に応じてバージョンを変更します)

https://dl-ssl.google.com/Android/repository/Android_m2repository_r45.Zip

ダウンロードしたら、解凍してm2repositoryをAndroid-sdk-root-folder\extras\Androidにコピーします。問題を回避するために、解凍する前に既存のm2repositoryを必ず削除してください。

1
Zoran P

これは、根本的な問題を解決しない一時的な修正です!最小限の修正でソフトウェアの開発を続けるのに役立ちました。これをメインマニフェストに追加するだけです。

<meta-data
    tools:replace="Android:value"
    Android:name="Android.support.VERSION"
    Android:value="25.3.0" />

このエントリは、サポートリポジトリの次のアップデートのいずれかで再び削除されることが期待されます。

解決策:10個のbuild.gradleファイルのうち4個に以下を追加することで、マークされたソリューションが機能しました。

configurations.all {
    resolutionStrategy.eachDependency { details ->
        def requested = details.requested
        if (requested.group == 'com.Android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}
0
Ludger

私にとって問題は、バージョンがここで同じではなかったということでした

implementation 'com.Android.support:appcompat-v7:**26.0.0-beta1**'
implementation 'com.Android.support:support-v4:**26.0.0-beta1**'
implementation 'com.Android.support:design:**26.0.0-beta1**'

カードビューは

compile 'com.Android.support:cardview-v7:26.1.0'

だから私はバージョンライブラリを...に変更しました.

implementation 'com.Android.support:appcompat-v7:26.1.0'
implementation 'com.Android.support:support-v4:26.1.0'
implementation 'com.Android.support:design:26.1.0'

この助けを願って、幸運

0
Ali Masarra