我需要在 Google Play 商店中拥有与私有(private) Beta 测试不同的 minSDKVersion(用于设备过滤目的)。我尝试了以下方法:
AndroidManifest.xml 包含以下内容:
<manifest …>
[…]
<uses-sdk android:minSdkVersion="@integer/minSdkVersion" android:targetSdkVersion="15"/>
[…]
</manifest>
res/values/config.xml由maven生成,包含以下内容:
<resources>
<integer name="minSdkVersion">8</integer>
</resources>
除了 aapt dump badging 提示之外,这工作正常:
ERROR getting 'android:minSdkVersion' attribute: attribute is not a string value
不幸的是 aapt dump 不会转储其余部分。所以除了这个错误之外我没有任何输出:-(
当我将 minSdkVersion 引用更改为如下字符串引用时:
AndroidManifest.xml 包含以下内容:
<manifest …>
[…]
<uses-sdk android:minSdkVersion="@string/minSdkVersion" android:targetSdkVersion="15"/>
[…]
</manifest>
res/values/config.xml由maven生成,包含以下内容: 8
有了这个,我无法安装该应用程序,因为不知何故,我的 API 级别 16 (Jelly Bean) 设备不允许 APK 具有
sdkVersion:'8'
(根据aapt dump badging)进行安装。错误是:INSTALL_FAILED_OLDER_SDK
创建 APK 时字符串引用似乎被误解了。
如何才能从资源文件引用 android:minSdkVersion 并使用 aapt 对其进行调试?
aapt 版本是 Android Tools Rev. 20 中的 0.2。
最佳答案
在 his response to the dupe of this question 中引用 Xav在 adt-dev Google 群组上询问:
you cannot reference a resource in the minsdkVersion of your manifest.
虽然 list 中的很多内容可以引用资源,但显然 minSdkVersion
不能。
Xav 建议使用脚本来更改 list 。另一种方法是将应用程序的大部分打包为 Android 库项目,并创建两个使用该库的应用程序,每个应用程序具有两个 minSdkVersion
值。
关于android - "aapt dump badging"希望 minSdkVersion 是一个字符串,但 "adb install"需要它作为一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784610/