为什么我支持的 Android 设备这么低?我尝试以尽可能低的 apk (13) 为目标,但只有 12,000 台设备可以使用我的应用程序。
任何帮助将不胜感激!
这是我的 build.gradle。
android {
signingConfigs {
}
compileSdkVersion 23
buildToolsVersion '25.0.0'
defaultConfig {
applicationId "thomas.surfaceviewtest"
minSdkVersion 13
targetSdkVersion 13
versionCode 5
versionName "1.0.5"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
}
}
dexOptions {
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.google.android.gms:play-services-ads:9.4.0'
compile 'com.google.firebase:firebase-ads:9.4.0'
}
apply plugin: 'com.google.gms.google-services'
该数字将您的清单配置和 Google 已知的设备列表分开(请参阅设备列表)。
不是真实设备的数量,而是支持的型号的数量,所以市场上的12000个型号我相信是一个不错的数字。
我的应用程序兼容12611设备。这基本上和你的一样。 12000 个设备并不算少,特别是考虑到由于我的 minSdk 版本较高而“仅”有 1465 个不支持的设备。
针对 12k 设备的目标不是很少,而是很多。如果您的目标只是 8k,那么您应该考虑一下。
您仍应将编译和 minSdk 版本更改为 25 或 26(7.1 或 8.0),以确保您的应用程序可以运行最新的 API。
我想澄清这样一个事实:定位 API 13 并不排除 API 14-26 安装应用程序。它表明它是为哪个版本设计的。您针对 23 进行编译,因此包含了新的 API,但您只使用 API 13。
这应该有帮助:
android:targetSdkVersion
指定应用程序目标的 API 级别的整数。如果未设置,默认值等于给
minSdkVersion
的值。
此属性通知系统您已经针对目标版本进行了测试,并且系统不应启用任何兼容性行为以保持应用程序与目标版本的前向兼容性。该应用程序仍然可以在旧版本上运行(低至minSdkVersion
)。
随着 Android 随着每个新版本的发展,某些行为甚至外观可能会发生变化。但是,如果平台的 API 级别高于您应用程序的
targetSdkVersion
声明的版本,系统可能会启用兼容性行为,以确保您的应用程序继续按您期望的方式工作。您可以通过指定 targetSdkVersion
以匹配其运行平台的 API 级别来禁用此类兼容性行为。例如,将此值设置为“11”或更高允许系统在 Android 3.0 或更高版本上运行时向您的应用应用新的默认主题 (Holo),并且在较大屏幕上运行时禁用屏幕兼容模式(因为支持 API) 11 级隐式支持更大的屏幕)。
来源:https://developer.android.com/guide/topics/manifest/uses-sdk-element.html
您应该提高目标 sdk 级别。
targetSdkVersion 25
从 2024 年开始我会一起去
为了更广泛的设备覆盖范围:
minSdkVersion: 21 (Android 5.0 Lollipop)
targetSdkVersion: 33 (Android 13)
这种组合使您可以访问大部分 Android 设备,同时仍然利用许多现代功能和安全改进。
对于较新设备的更集中的方法:
minSdkVersion: 26 (Android 8.0 Oreo)
targetSdkVersion: 34 (Android 14)