android - "aapt dump badging"希望 minSdkVersion 是一个字符串,但 "adb install"需要它作为一个整数

标签 android aapt android-sdk-tools

我需要在 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/

相关文章:

Android轻松切换应用程序的配色方案

aapt缺少MACOS 使用 `android'工具安装 "Android SDK Platform-tools"

Android SDK 管理器无法更新 SDK 构建工具修订版 18.1.1

用于 Intellij IDEA 的 Android SDK

android - 实现数字滤波器 - 通过卷积或差分方程?

android - 如何从另一个子模块访问子模块的布局?

android - 如何在不注销的情况下请求新的 Facebook 权限

Android Studio 3.0,AAPT2 编译失败 - 资源文件中的无效维度

Android - 如何使用Android Asset Packaging Tool?

android-support-library - 从命令行下载 Android 支持库