Android支持库,编译SDK版本和最低SDK版本

时间:2015-11-30 12:29:50

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

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

背景:

我正在处理的应用最低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中存在的方法时,有时会出现编译错误。但它是否也推广到xml(例如主题或资源)?

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

对不起,如果问题太模糊,请告诉我你是否需要一些准确性!如果你知道有趣的资源可以回答问题的一部分,请不要犹豫在这里分享;)

1 个答案:

答案 0 :(得分:3)

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在库的名称中。 适用于appcompat的v4和api7是api4。

  

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

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

  

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

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

  

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

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

库主要版本号是minimun compile 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