3

Android 2.3 (API レベル 9) デバイスのサポートを終了するのは、ほとんどのユーザーが携帯電話で新しい Android バージョンを使用しているためです。SDK の最小バージョンを API レベル 14 に更新しました。

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
    }
}

ただし、Android 2.3 デバイスに手動で (ストアではなく) アプリをインストールすることはできます。これは予期された動作ですか、それとも何か間違ったことをしていますか? 他の場所で答えを見つけることができませんでした。

もう 1 つの奇妙な問題は、Lint が正しい API レベルを検出しないことです。

listView.setFastScrollAlwaysVisible(true);

これにより、次の警告が表示されます: Call requires api level 11 (current min is 9)。ただし、現在の最小値は 14 です。これは、私が何か間違ったことをしたことを示しています。プロジェクトのクリーニングと再構築を試み、Android Studio を再起動しました。それはすべてうまくいきませんでした。

誰でも私を助けることができますか?

編集

Sufiansのコメントに基づいて、gradleファイルをいじり始め、次の解決策にたどり着きました。しかし、まだいくつかの疑問が残っています。私のプロジェクト構造は次のようになります。

  • android.gradle (SDK バージョンを含むトップレベルのビルド ファイル)
  • メイン モジュール (他のモジュールのベース コードを含む)
    • build.gradle (「../android.gradle」から適用)
  • サブモジュール A (モジュール固有の変更)
    • build.gradle (メイン モジュールに依存しています)
  • サブモジュール B (モジュール固有の変更)
    • build.gradle (メイン モジュールに依存しています)

android.gradleSDK バージョンを含むトップレベルのビルド ファイルがあります。私のモジュールには、ビルドファイルが含まれていますapply from: '../android.gradle'。minSdkVersion をメイン モジュールに直接配置すると、警告が消えます。それはそうあるべきですか?または、すべてのサブモジュールに minSdkVersion を設定する必要がありますか? または、SDK のバージョンがファイル内にとどまるようにする別の方法はありandroid.gradleますか?

4

4 に答える 4

2

わかりました...プロジェクト構造に問題がないことにようやく気づきました。私がする必要があったのは、小さな「Sync Project with Gradle Files」ボタンを押すことだけでした。その後、すべてのエラーが消えます。

また、サポートされていないアプリを手動でインストールすることも可能であると結論付けました. ただし、Google Play ストアでは、ユーザーがアプリをインストールまたは更新できないようにする必要があります。

于 2016-02-25T14:09:12.510 に答える
1

私は個人的にAndroid用に何かを開発したことはありませんが、アプリをインストールするときに、OSバージョンでサポートされていない.apkをインストールするときにデバイスが文句を言うことはありません.
ストアがサポートされていないと言った場合でも、.apk としていつでもインストールできるので、実際にブロックすることはできないと思います。

于 2016-02-25T11:31:43.597 に答える
0

minSdkVersion をメイン モジュールに直接配置すると、警告が消えます。それはそうあるべきですか?

メイン モジュールの最小およびターゲット SDK (つまりbuild.gradle、モジュールの内部) は、アプリケーションのものになります。

プロジェクトbuild.gradleには、この情報が含まれていてはなりません。

または、すべてのサブモジュールに minSdkVersion を設定する必要がありますか? または、SDK のバージョンが android.gradle ファイル内にとどまるようにする別の方法はありますか?

各モジュールは、独自の最小 SDK を定義します。サードパーティのモジュール/ライブラリを使用している場合は、自分が何をしているのかわからない限り、変更しない方がよいでしょう。

于 2016-02-25T14:11:11.793 に答える