39

Android L の新しい CardView を使用しようとしています。SDK マネージャーですべてを更新しましたが、次のエラーが発生し続けます。

失敗 [INSTALL_FAILED_OLDER_SDK]

これは私のbuild.gradleファイルです:

apply plugin: 'android'

android {
    compileSdkVersion 'android-L'
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "www.thomascbeerten.com.nieuwetests"
        minSdkVersion 8
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    // Support Libraries
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.android.support:gridlayout-v7:19.1.0'
    compile 'com.android.support:mediarouter-v7:19.1.0'
    // compile 'com.android.support:support-v13:19.1.0'
    compile 'com.android.support:recyclerview-v7:+'
}
4

5 に答える 5

55

最近、Android の以前のバージョンとの L SDK の非互換性に関する投稿がここにありました。私はかなりの時間 AOSP リポジトリを掘り下げており、プレビュー プラットフォームを異なる方法で扱うように設計されているため、ツールがこのように動作すると判断しました。プレビュー SDK (android-L) に対してコンパイルする場合、ビルド ツールは minSdkVersion と targetSdkVersion を同じ API レベルにロックします。これにより、アプリケーションが L に固有の処理を行っていなくても、古いリリースの Android を実行しているデバイスに、生成されたアプリケーションをインストールできなくなります。さらに悪いことに、新しいサポート ライブラリ (CardView、RecyclerView、Palette など) は. ) も L API レベルにロックされていますが、それらのリポジトリ名によると、API レベル 7 で問題なく動作するはずです (実際に動作します!)。

これに関する Reddit の投稿(こちら) と回避策を参照してください。

于 2014-06-27T17:47:35.507 に答える
5

Eddieが述べたように、上記の問題を解決したら. また、別のエラーが発生する可能性があります;;

Error:Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Material.Light'.

これは、styles.xml に存在します。簡単な修正は、次のように置き換えることです。

<?xml version="1.0" encoding="utf-8"?>
 <resources>
<!--<style name="AppTheme" parent="android:Theme.Material.Light">-->
<style name="AppTheme" parent="android:Theme.Holo.Light">
</style>

于 2014-07-16T22:29:55.257 に答える
0

私はちょうどこの問題に遭遇しました。これは、SDK の最小バージョンとビルド ターゲットが、電話で実行されているよりも高い API レベル/OS バージョンに設定されている場合に発生する可能性があります。Android Studio を使用している場合は、[ファイル] > [プロジェクト構造] > に移動し、関連する設定を編集してから、もう一度実行します。

于 2015-07-15T20:13:00.943 に答える
0

L でコンパイルすると、コンパイル中に minsdkversion を L に設定して実際に変更が行われます。 RecyclerView または CardView を使用する場合は、 RecyclerViewLib を確認することをお勧めします。RecyclerView と CardView はこのライブラリに移動しているため、最小バージョン L の問題はありません。著者はブログ投稿で、安全に使用できるようにするために L 関連のコードをすべて削除した方法についても説明しています。

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

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

compile 'com.android.support:recyclerview-v7:+'RecyclerViewLib を介して取得するため、build.gradle にを追加する必要はありません。

于 2014-09-13T21:09:54.007 に答える