3

既存の Android バージョンで RecyclerView & CardView を使用しようとしています。彼らはそれがサポートライブラリにあると言いました。なので、「Android-L」に「compileSdkVersion」を入れれば使えるはずです。右 ?

Android L Preview デバイスまたはエミュレーターなしでこれらのウィジェットを使用しようとしています。この件に関する他の質問を確認しました。でも、みんなAndroid-L版でAndroid-Lを試しているようです。

これが私の依存関係です。

「com.android.support:support-v4:13.0.+」
をコンパイルします 「com.android.support:recyclerview-v7:+」をコンパイルします

ここに私のターゲット設定があります

minSdkVersion 15
targetSdkVersion 20

ご意見ありがとうございます。

4

3 に答える 3

15

私はちょうど解決策を見つけました。targetSdkVersionminSdkVersion「Android-L」
ではない のに、RecyclerView と CardView でアプリをビルドできないのは、Google 内部で OS のプレビュー バージョンを元のリリースとは異なる方法で扱うように設計されているためです。

Android-L のコンポーネントを含むアプリをコンパイルすると、ビルド ツールによってminSdkVersiontargetSdkVersionが同じレベルにロックされます。新しいサポート ライブラリ (RecyclerView、CardView、Palette など) も L API レベルにロックされています。

この動作は、この Android-L プレビュー リリースでのみ発生しています。

これを修正するには、AndroidManifest.xml に次のように記述します。
Gradle スクリプトを変更する必要はありませんでした。

<uses-sdk
  tools:node="replace" />

Android Gradle Plugin のバージョン 0.11 以降、デフォルトで新しい Manifest Merger が有効になりました。それは私たちがいくつかの気の利いたことをすることを可能にします。この特定の構成は、マニフェスト プロセッサに、優先度の低いマニフェスト (この場合はライブラリ マニフェストなど) の uses-sdk ノードからの属性をこの属性で置き換えるように指示します。

Gradle は build.gradle から minSdkVersion と targetSdkVersion もこの uses-sdk ノードに挿入するため、追加する必要があるのはこれだけです。

この問題に関する詳細については、こちらを確認してください。マニフェスト合併に関する情報はこちら
をご覧 ください。

于 2014-07-03T11:21:53.647 に答える
1

最善の解決策はRecyclerViewLibです。サポート ライブラリはリポジトリに取り込まれ、maven central で公開されています。L に依存するすべてのコードが削除されているため、L がリリースされた後でも安全です。著者は、ブログ投稿で説明しています。

プロジェクトで使用するには、build.gradle の依存関係に次の行を追加するだけです。

compile 'com.twotoasters.RecyclerViewLib:library:1.0.+@aar'

幸運を!

于 2014-09-13T20:56:39.357 に答える
0

いいえ、7 以上の targetSdkVersion を設定する必要があります。7 以上の API レベルをサポートするプロジェクトで Android サポート ライブラリ v7 を使用できます。そしてもう1つ。Android L の API レベルは 20 ではなく「android-L」です。内部的には API レベル 21 です (20 は 4.4W、ウェアラブルの場合は KitKat)。

于 2014-07-03T08:36:52.760 に答える