4

私の Android Studio プロジェクトが、最小限の SDK では使用できないメソッドと型を提案していることに気付きました。Android Studio バージョン 1.1.0 を使用しています。

build.gradle ファイルで SDK の最小バージョンが正しく設定されていることがわかります。

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.pythagoras.sunshine"
        minSdkVersion 18
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
  ...
}

しかし、Android Studio の「オートコンプリート」機能は、API 18 では使用できないメソッドをまだ提案していることに気付きました。プロジェクトをビルドすると、これらの新しいメソッドの使用に関するエラーは発生しません。 on はターゲット API を使用していますが、アプリケーションに問題はありません。

Android Studio の設定で、API からオートコンプリート オプションを最小値よりも大きく削除することはできますか? または、最近のメソッドが使用された場合にビルドエラーを発生させる方法は少なくともありますか? 「プロジェクトをGradleファイルと同期」ボタンを試しましたが、再構築時にエラーは発生しませんでした。

ありがとうございました!

4

2 に答える 2

4

これは、構成を使用して Android Studio 1.3.2 で見られる動作です: compileSdkVersion=21 minSdkVersion=18 targetSdkVersion=21

SDK 21 でコンパイルしているため、API レベル 21 までのすべてのメソッドが表示されます。

targetSdkVersion を 18 に設定した場合は、compileSdkVersion を 18 に下げて、API 19、20、21 からメソッドを削除することもできます。新しい SDK。また、targetSdkVersion を減らすと、テストしていないことを Android デバイスに通知し、互換性の動作を有効にします。これは、必要な場合とそうでない場合があります。

API 19/20/21 の高度な機能をサポートするデバイスで使用し、それらの新しいデバイスで互換動作を有効にしないことにした場合は、targetSdkVersion を 21 に設定しておく必要があります。

API レベル 19 以降のメソッドを使用すると、Android Studio から警告が表示されるようになりました。これは、SDK レベル 18 のデバイスではメソッドが存在しないため、NoSuchMethodError でメソッドがクラッシュするためです。デバイスの SDK バージョンを確認し、それに基づいて特定のメソッドのみを使用できるようになりました ( SDK バージョンを使用して比較してください)。

補足: Android Studio を使用しているときに気付いた興味深い点は、API レベル 23 メソッドを使用すると lint 警告が表示されないことです。例: compileSdkVersion=23、targetSdkVersion=23、minSdkVersion=19 を使用すると、API レベル 21 メソッドfinishAndRemoveTaskまたは API レベル 22 メソッドgetReferrerを使用すると、Android Studio でエラーが表示されます。ただし、API レベル 23 メソッドgetSearchEventのエラーは表示されません。Android lint が API レベル 23 用に更新されていない可能性があります。

于 2015-08-30T22:19:07.710 に答える
1

android studio は compilesdkversion に対してコードをコンパイルします

android {
    compileSdkVersion 18
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.pythagoras.sunshine"
        minSdkVersion 18
        targetSdkVersion 18
        versionCode 1
        versionName "1.0"
    }
  ...
}
于 2015-06-04T21:25:34.163 に答える