在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商店我的应用程序会出现在列表中吗?
我的第二个问题是如何阻止我的应用在Google Play商店中出现棉花糖设备?
答案 0 :(得分:3)
所以想象一下,我有一个Marshmallow手机,如果我去Play商店,我的应用程序会出现在列表中吗?
是
如何阻止我的应用在Google Play商店中出现棉花糖设备?
我们欢迎您在清单的android:maxSdkVersion
元素中尝试<uses-sdk>
,因为the current documentation建议Play商店将其用作过滤器,但这会对用户造成损失谁将他们的应用程序升级到Android 6.0。
答案 1 :(得分:2)
回答不是原始问题,而是原因。
我不确定你是否必须这样做。
api 23要求运行时权限。所以,如果我有一个运行23的设备,并且因为android是向后兼容的,例如,如果即时通讯使用apache httpClient,它会在marshmallow中被删除
您仍然可以使用HTTP客户端。 From the docs:
要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时依赖项:
android { useLibrary 'org.apache.http.legacy' }
我尝试安装在Android 6.0上使用HTTP Client的旧应用程序。它们仍然有效,没有build.gradle中的依赖,甚至没有重新编译。
或者我是否准备好处理运行时权限?在这种情况下,我的应用程序不会中断吗?
应用程序不会中断。如果您不在Marshmallow(targetSdkVersion 23
或更高版本)下编译您的应用,那么它将在&#34; legacy&#34; mode:安装前将请求权限。有一个例外:用户仍然可以在设置中关闭权限;我不认为很多用户会这样做。
在模拟器或真实设备中试用您的应用。我几乎肯定它会在Marshmallow下工作。
答案 2 :(得分:0)
我认为如果我们将api定位到23
,应用程序运行时权限模型中描述它将起作用注意:本课程介绍如何在针对API级别23或更高级别且在运行Android 6.0(API级别23)或更高级别的设备上运行的应用上实施权限请求。如果设备或应用程序的targetSdkVersion为22或更低,系统会在用户安装或更新应用时提示用户授予所有危险权限。
link:https://developer.android.com/intl/es/training/permissions/requesting.html
如果我有一些误解,请通知我