2

在 android gradle 构建文件中,我有以下闭包:

android {
compileSdkVersion 21
buildToolsVersion "23.0.1"

defaultConfig {
    applicationId "com.mycoolapp"
    minSdkVersion 16
    targetSdkVersion 21
    versionCode 41
    versionName "3.0"
}
}

我不希望我的应用在 Marshmallow 上运行。我的 targetSdkVersion 是 21,Marmallow 是 23。假设我有一部 Marshmallow 手机,如果我去 Play 商店,我的应用会出现在列表中吗?

我的第二个问题是如何阻止我的应用出现在棉花糖设备的谷歌 Play 商店中?

4

3 回答 3

3

所以想象一下我有一部棉花糖手机,如果我去 Play 商店,我的应用会出现在列表中吗?

是的。

我将如何阻止我的应用出现在棉花糖设备的谷歌 Play 商店中?

android:maxSdkVersion欢迎您在清单的<uses-sdk>元素中尝试,因为当前的文档表明 Play 商店将其用作过滤器,尽管这对于将其应用程序升级到 Android 6.0 的用户来说是有代价的。

于 2015-10-15T14:15:06.023 回答
2

不是回答原始问题,而是回答问题的原因。

我不确定你必须这样做。

api 23 要求运行时权限。所以如果我有一个运行 23 的设备并且由于 android 是向后兼容的,例如如果我使用在棉花糖中不推荐使用的 apache httpClient 会发生什么

您仍然可以使用 HTTP 客户端。从文档

要继续使用 Apache HTTP API,您必须首先在 build.gradle 文件中声明以下编译时依赖项:

android {
    useLibrary 'org.apache.http.legacy'
}

我尝试在 Android 6.0 上安装使用 HTTP 客户端的旧应用程序。它们仍然可以工作,没有 build.gradle 中的依赖,甚至没有重新编译。


或者如果我不准备处理运行时权限?在这种情况下我的应用程序不会中断吗?

应用程序不会崩溃。如果您不在 Marshmallow(targetSdkVersion 23或更高版本)下编译您的应用程序,那么它将在“旧版”模式下工作:安装前将请求权限。除了一个例外:用户仍然可以在设置中关闭权限;我不认为很多用户这样做。


在模拟器或真实设备中试用您的应用程序。我几乎可以肯定它会在 Marshmallow 下工作。

于 2015-10-15T14:33:23.967 回答
0

如果我们将 api 定位到 23,我可能认为它在应用程序运行时权限模型中描述会起作用

注意:本课将介绍如何在以 API 级别 23 或更高级别为目标且在运行 Android 6.0(API 级别 23)或更高版本的设备上运行的应用程序上实现权限请求。如果设备或应用的 targetSdkVersion 为 22 或更低,系统会在用户安装或更新应用时提示授予所有危险权限。

链接:https ://developer.android.com/intl/es/training/permissions/requesting.html

可能是如果我有一些误解那么请通知我

于 2015-10-15T14:41:13.810 回答