【问题标题】:Android support libraries, compile SDK version and minimum SDK versionAndroid支持库、编译SDK版本和最低SDK版本
【发布时间】:2015-11-30 12:29:49
【问题描述】:

我有一些关于使用支持库的一般性问题,但我找不到很好的资源来回答这些问题。

上下文:

我正在开发的应用程序的最低 SDK 目标设置为 9。我正在使用支持库 v4 和 v7,我使用 gradle 导入这些支持库

compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:appcompat-v7:22.2.1'

我还声明了要编译的 sdk 版本和最低 SDK 版本

minSdkVersion 9
compileSdkVersion 22

现在这将编译和构建一个没有错误的apk。但是当我把compileSDKVersion改成19的时候会报很多错误比如

错误:(2) 检索项目的父项时出错:未找到该资源 匹配给定名称“android:TextAppearance.Material.Inverse”。

告诉我我正在编译的 SDK 不包含兼容性库使用的某些资源,我应该改用以前的兼容性库。

问题:

  • 我可以同时使用 v4 和 v7 编译的最低 SDK 版本是多少(或者 v4 和 v7 都支持的最低 SDK 版本是多少)?有没有办法查看 Android 支持存储库中的所有可用版本?

  • 将最低 SDK 版本设置为 9 并将 compileSDKVersion 设置为 22 并使用针对 API 22 的支持库提供的元素是否有风险?我的意思是:由于缺少类/资源,我可能会出现运行时异常吗?

  • 有没有办法配置 Gradle 以显示一些潜在的不兼容性?我知道有时在使用比最低 API 更高的 API 中存在的方法时会出现编译错误。但它是否也适用于 xml(例如主题或资源)?

  • 我知道当(支持)库引用已编译 SDK 中不存在的资源时,我会遇到编译错误。有没有办法为最低 SDK 获得类似的警告/错误?

对不起,如果问题太模糊,如果您需要一些精确度,请告诉我!如果您知道可以回答部分问题的有趣资源,请不要犹豫在此处分享;)

【问题讨论】:

    标签: android gradle android-gradle-plugin android-support-library android-appcompat


    【解决方案1】:
    Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Inverse'.
    

    这是因为支持库 v22 需要 API 22。
    您无法使用 API 19 进行编译。

    我可以同时使用 v4 和 v7 编译的最低 SDK 版本是多少(或者 v4 和 v7 都支持的最低 SDK 版本是多少)

    通常 minSdk 在库的名称中。 v4 为 api4,appcompat 为 api7。

    有没有办法查看 Android 支持存储库中的所有可用版本?

    您可以在文件夹androidsdk\extras\android\m2repository\com\android\support 中查看它,例如打开 aar 文件。

    将最低 SDK 版本设置为 9 并将 compileSDKVersion 设置为 22 并使用针对 API 22 的支持库提供的元素是否有风险?我的意思是:我会因为缺少类/资源而获得运行时异常吗?

    如果您使用的是支持库 v22,则否。

    我知道当(支持)库引用已编译 SDK 中不存在的资源时,我会遇到编译错误。有没有办法为最低 SDK 获得类似的警告/错误?

    根据我的经验,没有。
    有一个一般规则。

    库主版本号是最小编译sdk版本。

    意思是:

    support libraries v21.x.x -> requires API 21 
    support libraries v22.x.x -> requires API 22 
    support libraries v23.x.x -> requires API 23 
    

    【讨论】:

    • 谢谢。我仍然对 v4 和 v7 感到困惑。在我的 Android 支持库的 support-v4 目录中,支持的最低 sdk 是 13。在 SDK 管理器中,似乎我已经下载了所有支持库。当您使用“libraries v22”时,我有点困惑。您是在谈论设计支持库 v22 还是任何针对 API 22 的支持库?
    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多