我正在开发Play商店上正在发布的onan应用。在使用5.1.1版本的Android设备时,Play商店会显示“您的设备与此版本不兼容”,我试图确定为什么以及如何解决此问题的具体原因。APK与最新的Android版本不兼容
现有应用程序的Android.Manifest文件中有以下内容:
<uses-sdk minSdkVersion="13" targetSdkVersion="21"/>
我想,也许这是“targetSDKVersion”引起的问题。我没有最初发布的APK,但我想我可以通过生成一个具有相同uses-sdk清单项目的新应用程序来测试我的假设。
我创建了一个新的应用了最新的Android Studio和相同uses-sdk
价值和出版它,它很奇怪是我5.1.1设备上可用的。
我决定进一步调查,我pulled both APKs down到我的桌面,然后用于apktool提取每个内容是否有任何脱颖而出。
我确实发现是,非工作APK有这个所提取的清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.redphx.deviceid" platformBuildVersionCode="21" platformBuildVersionName="5.0.1-1624448">
和工作APK具有以下
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.opennetcf.ctacke.androidsample" platformBuildVersionCode="23" platformBuildVersionName="6.0-2166767">
现在我的假设是, platformBuildVersionCode
必须是罪魁祸首。
所以我的问题是:
- 是我的假设是正确的,这就是为什么一个APK不是为5.1.1工作?
- 我假设APK编译器设置了
platformBuildVersionCode
属性。我在工作应用程序中专门设置了targetSdkVersion
为21,并且我在提取的yml中看到该值,但platformBuildVersionCode
仍然表示23.该信息来自哪里,如果不是uses-sdk
信息? - 有没有修复,缺少重建一个新的APK和重新发布?
我认为重新发布是可能的路线,但我希望能够在未来再次出现这个问题,所以我真的很想了解#1和#2的答案。
更新
的工作APK合并后的表现是一样的东西是在应用程序本身,所以23没有提到的。
<uses-sdk
minSdkVersion="13"
targetSdkVersion="21"/>
在工作系统,build.gradle
包含以下内容:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.opennetcf.ctacke.androidsample"
minSdkVersion 13
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro
}
}
}
dependencies {
compile filetree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.1'
}
所以我认为这就是这些信息从何而来,但它是如何获取到APK依然是不是所有的清晰。
我没有任何对非工作APK,因为它是由应用程序的发行团队建成之前,我来到了这个项目,我不知道如果他们继续这些中间输出。我正在调查这一点。
编辑2
从两个的APK提取YML(其示出了uses-sdk
信息)如下。看起来非工作最低版本比工作(13)显着低(5)。
工作:
version: 2.0.1
apkFileName: oncf.apk
isFrameworkApk: false
usesFramework:
ids:
- 1
sdkInfo:
minSdkVersion: '13'
targetSdkVersion: '21'
packageInfo:
forced-package-id: '127'
versionInfo:
versionCode: '1'
versionName: '1.0'
compressionType: false
sharedLibrary: false
非工作:
version: 2.0.1
apkFileName: ytb.apk
isFrameworkApk: false
usesFramework:
ids:
- 1
sdkInfo:
minSdkVersion: '5'
targetSdkVersion: '21'
packageInfo:
forced-package-id: '127'
versionInfo:
versionCode: '4'
versionName: 1.1.2
compressionType: false
sharedLibrary: false
“现有应用程序的Android.Manifest文件中包含以下内容” - “build.gradle”文件中的内容是什么?在你的'app/build/intermediates/manifests /'目录中的合并清单中是什么? – CommonsWare
@CommonsWare:更新了包含该信息的问题 – ctacke
解压缩清单中的非工作APK的“android:minSdkVersion”是什么?我假设你在问题中显示的行来自输入清单(即项目本身中的行)。 – CommonsWare