ライブラリのバージョンをアップグレードすると、ライブラリに依存するプロジェクトでビルドが失敗します

malik_cesur

Androidライブラリを維持しています。最近、gradle、compileSdkVersion、およびサポートライブラリのバージョンをアップグレードしました。(com.android.support:designのみを使用)。また、gcm-play-servicesをアップグレードしました。ライブラリはArtifactoryに公開されており、その依存関係もpomファイルに含まれています。このアップグレードは、最新のビルドツールとサポートライブラリを備えたプロジェクトで完全に機能します。ただし、ライブラリを使用する古いプロジェクトで問題が発生しています。これがライブラリのバージョンです。

gradle android plugin -> 3.2.1
compileSdkVersion -> 28
targetSdkVersion -> 28
support library version -> 28.0.0

これがプロジェクトのバージョンです

compileSdkVersion -> 26
targetSdkVersion 26
support library version -> 26.0.1

およびクライアントサポートライブラリの依存関係

implementation 'com.android.support:cardview-v7:' + androidSupportV
implementation 'com.android.support:recyclerview-v7:' + androidSupportV
implementation 'com.android.support:appcompat-v7:' + androidSupportV
implementation 'com.android.support:design:' + androidSupportV
implementation 'com.android.support:support-v4:' + androidSupportV
implementation 'com.android.support:support-annotations:28.0.0'

新しいライブラリを使用してプロジェクトをビルドしようとすると、このログでビルドが失敗します。

AGPBI: {"kind":"error","text":"error: resource android:attr/dialogCornerRadius not found.","sources":[{"file":"/Users/umutyusuf/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/d4439e502685c256006fa4bec8edb713/res/values-v28/values-v28.xml","position":{"startLine":8,"startColumn":4,"startOffset":447,"endLine":11,"endColumn":12,"endOffset":684}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: resource android:attr/dialogCornerRadius not found.","sources":[{"file":"/Users/umutyusuf/Documents/repo/core-bootstrap/core-android-client-app/PointrSample-Ozion-v5.0.8/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-v28/values-v28.xml","position":{"startLine":10}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: resource android:attr/fontVariationSettings not found.","sources":[{"file":"/Users/umutyusuf/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/d4439e502685c256006fa4bec8edb713/res/values/values.xml","position":{"startLine":1303,"startColumn":4,"startOffset":70911,"endColumn":68,"endOffset":70975}}],"original":"","tool":"AAPT"}
AGPBI: {"kind":"error","text":"error: resource android:attr/ttcIndex not found.","sources":[{"file":"/Users/umutyusuf/.gradle/caches/transforms-1/files-1.1/appcompat-v7-28.0.0.aar/d4439e502685c256006fa4bec8edb713/res/values/values.xml","position":{"startLine":1303,"startColumn":4,"startOffset":70911,"endColumn":68,"endOffset":70975}}],"original":"","tool":"AAPT"}

プロジェクトコードでの操作は避けているので、ライブラリで解決しようとしました。

プロジェクトのバージョンと一致するように、すべてのバージョンをダウングレードします。そしてそれを再び公開しました

compileSdkVersion -> 26
targetSdkVersion 26
support library version -> 26.0.1

しかしその後、マニフェストマージエラーに直面します

Error:
    Attribute meta-data#android.support.VERSION@value value=(26.0.1) from [com.android.support:cardview-v7:26.0.1] AndroidManifest.xml:25:13-35
    is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override

これは、依存関係ツリーにリストされているsupport-v4:26.1.0推移的依存関係を持つgcm-play-servicesに由来します。

そしてそれを解決するために、これをマニフェストに追加しました

<meta-data
            tools:node="replace"
            tools:replace="android:value"
            android:name="android.support.VERSION"
            android:value="26.0.1" />

これですべてうまくいきました。しかし、このメタタグをAndroidManifestファイルに配置することの欠点は何でしょうか?

このアプローチは、すべてのcompileSdkVersion 26、27、28および対応するすべてのサポートライブラリバージョンでテストしました。すべてが機能しているようです。

私たちはこれに対するより良いアプローチを探しています。

私たちが試した代替ソリューション

提供されたスコープでサポートライブラリの依存関係を公開しました。ただし、この場合、ライブラリを使用するプロジェクトは、問題なく使用できるようにサポートデザインライブラリを追加する必要があります。しかし、サポートライブラリを追加したとしても、プロジェクトのサポートライブラリのバージョンが異なる場合、どのライブラリでコンパイルされるかは問題になりますか?

エリカン・ドエンヤス

このマニフェストメタデータは、クライアントがマニフェストで同じ方法でandroid.supportの別のバージョンを強制するサポートライブラリを使用している場合に問題を引き起こす可能性があります。したがって、SDKでこの行を使用することは避けてください。クライアントがあなたが言ったようにサポートライブラリを提供しない場合、スコープ 'provided'での公開も機能せず、クラッシュを引き起こします。

私が見つけた解決策は、support:design:27.1.0を使用することでした。これは、他のバージョンのサポートライブラリと競合しない魔法のライブラリです。何日も試した後、この問題が解決され、サードパーティが別のバージョンのサポートデザインを使用していてもクラッシュが発生しないことを確認できてとてもうれしく思いました。それがあなたの問題も解決することを願っています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ビルドサーバーでのポータブルクラスライブラリプロジェクトのビルドが失敗する

分類Dev

.netコアコンソールアプリケーションで.netクラスライブラリを使用しているときにプロジェクトのビルドに失敗しました

分類Dev

特定のライブラリの異なるバージョンに依存するプロジェクトのクロスビルド

分類Dev

私のアプリにはモジュール (ライブラリ) があります。ライブラリ ビルドで「productFlavors」を設定すると、アプリケーションはモジュールに依存できません

分類Dev

Gradleの依存関係として使用するためにEclipseプロジェクト/ライブラリをアップロードします

分類Dev

Gradleの依存関係として使用するためにEclipseプロジェクト/ライブラリをアップロードします

分類Dev

Couchbaseのライトプルレプリケーションは、プロジェクトのテストを終了するために、サンプルCouchbaseのモバイルエンドのエラーで失敗します

分類Dev

バージョン2.0にアップグレードした後、ドットネットテストタスクが「MSB1008:1つのプロジェクトのみを指定できます」というエラーで失敗する

分類Dev

SwiftPMライブラリを使用したXcodeプロジェクトのアーカイブに失敗する

分類Dev

SwiftPMライブラリを使用したXcodeプロジェクトのアーカイブに失敗する

分類Dev

ember cliアプリケーションのビルドに失敗しました:Broccoliプラグイン:[オブジェクトオブジェクト]が次のエラーで失敗しました:

分類Dev

アンドロイドプロジェクトの... 'アプリ'解決されたGooglePlayサービスライブラリの依存関係は、正確なバージョンで別のものに依存しています

分類Dev

MVCでビューエンジンをクリアすると、サイトマップのブレッドクラムスタイルが壊れます

分類Dev

Androidライブラリプロジェクトにバターナイフを追加すると、ライブラリクラスのコンパイル時に「パッケージが存在しません」というエラーが発生します

分類Dev

バックグラウンドジョブが「現在のユーザーがアプリケーションにログインしていません」で失敗する

分類Dev

ランタイムエラーを修正する方法1004オブジェクトグローバルのメソッド範囲が失敗しました

分類Dev

プロジェクトのライブラリをいつアップグレードするかをどのように決定しますか?

分類Dev

依存関係は、プロジェクトですでに使用されている古いバージョンのライブラリに依存します

分類Dev

テンプレートが静的バインディングであるにもかかわらず、古いコードのオブジェクトファイルがジェネリックプログラミングパラダイムを使用する新しいコードを使用できるのはなぜですか?

分類Dev

Jenkinsパイプライン:アップストリームジョブが存在しない場合にジョブが失敗するのを防ぎます

分類Dev

いくつかのライブラリプロジェクトを含めた後、コマンドラインを介してAndroidプロジェクトのapkをビルドすると失敗します

分類Dev

エラー:プロジェクト「アプリ」で、解決済みのGoogle Play開発者サービスライブラリの依存関係は、1つの信号を統合しているときに、正確なバージョンで別の依存関係に依存しています

分類Dev

この静的ライブラリにリンクするプロジェクトを使用して、XCode 5の静的ライブラリのコードカバレッジを計算するにはどうすればよいですか?

分類Dev

プロジェクトでポッドライブラリをインストールする際の問題

分類Dev

デスクトップ環境のアプリケーションが他のDEのモジュール、ライブラリなどをロードしているかどうかをどのように知ることができますか?

分類Dev

異なるPHPバージョンのライブラリをアップグレードする

分類Dev

プロジェクトの開始を「F5」したときに、同じソリューションでクラスライブラリプロジェクトを自動的にビルドする方法

分類Dev

古いバージョンのnuget依存関係を参照するC#ライブラリにより、アセンブリの反映が失敗します

分類Dev

プロジェクトのダイナミックライブラリのビルドに失敗しました!-アンドロイドココス

Related 関連記事

  1. 1

    ビルドサーバーでのポータブルクラスライブラリプロジェクトのビルドが失敗する

  2. 2

    .netコアコンソールアプリケーションで.netクラスライブラリを使用しているときにプロジェクトのビルドに失敗しました

  3. 3

    特定のライブラリの異なるバージョンに依存するプロジェクトのクロスビルド

  4. 4

    私のアプリにはモジュール (ライブラリ) があります。ライブラリ ビルドで「productFlavors」を設定すると、アプリケーションはモジュールに依存できません

  5. 5

    Gradleの依存関係として使用するためにEclipseプロジェクト/ライブラリをアップロードします

  6. 6

    Gradleの依存関係として使用するためにEclipseプロジェクト/ライブラリをアップロードします

  7. 7

    Couchbaseのライトプルレプリケーションは、プロジェクトのテストを終了するために、サンプルCouchbaseのモバイルエンドのエラーで失敗します

  8. 8

    バージョン2.0にアップグレードした後、ドットネットテストタスクが「MSB1008:1つのプロジェクトのみを指定できます」というエラーで失敗する

  9. 9

    SwiftPMライブラリを使用したXcodeプロジェクトのアーカイブに失敗する

  10. 10

    SwiftPMライブラリを使用したXcodeプロジェクトのアーカイブに失敗する

  11. 11

    ember cliアプリケーションのビルドに失敗しました:Broccoliプラグイン:[オブジェクトオブジェクト]が次のエラーで失敗しました:

  12. 12

    アンドロイドプロジェクトの... 'アプリ'解決されたGooglePlayサービスライブラリの依存関係は、正確なバージョンで別のものに依存しています

  13. 13

    MVCでビューエンジンをクリアすると、サイトマップのブレッドクラムスタイルが壊れます

  14. 14

    Androidライブラリプロジェクトにバターナイフを追加すると、ライブラリクラスのコンパイル時に「パッケージが存在しません」というエラーが発生します

  15. 15

    バックグラウンドジョブが「現在のユーザーがアプリケーションにログインしていません」で失敗する

  16. 16

    ランタイムエラーを修正する方法1004オブジェクトグローバルのメソッド範囲が失敗しました

  17. 17

    プロジェクトのライブラリをいつアップグレードするかをどのように決定しますか?

  18. 18

    依存関係は、プロジェクトですでに使用されている古いバージョンのライブラリに依存します

  19. 19

    テンプレートが静的バインディングであるにもかかわらず、古いコードのオブジェクトファイルがジェネリックプログラミングパラダイムを使用する新しいコードを使用できるのはなぜですか?

  20. 20

    Jenkinsパイプライン:アップストリームジョブが存在しない場合にジョブが失敗するのを防ぎます

  21. 21

    いくつかのライブラリプロジェクトを含めた後、コマンドラインを介してAndroidプロジェクトのapkをビルドすると失敗します

  22. 22

    エラー:プロジェクト「アプリ」で、解決済みのGoogle Play開発者サービスライブラリの依存関係は、1つの信号を統合しているときに、正確なバージョンで別の依存関係に依存しています

  23. 23

    この静的ライブラリにリンクするプロジェクトを使用して、XCode 5の静的ライブラリのコードカバレッジを計算するにはどうすればよいですか?

  24. 24

    プロジェクトでポッドライブラリをインストールする際の問題

  25. 25

    デスクトップ環境のアプリケーションが他のDEのモジュール、ライブラリなどをロードしているかどうかをどのように知ることができますか?

  26. 26

    異なるPHPバージョンのライブラリをアップグレードする

  27. 27

    プロジェクトの開始を「F5」したときに、同じソリューションでクラスライブラリプロジェクトを自動的にビルドする方法

  28. 28

    古いバージョンのnuget依存関係を参照するC#ライブラリにより、アセンブリの反映が失敗します

  29. 29

    プロジェクトのダイナミックライブラリのビルドに失敗しました!-アンドロイドココス

ホットタグ

アーカイブ