支持旧版本的android设备

支持旧版本的android设备,android,Android,我已经开发了一个应用程序,它在运行棉花糖的设备上运行良好,现在当我尝试在较早版本的android(V21)上运行它时,它会出现以下错误 java.lang.NoSuchMethodError: No Virtual methold getColor(ILandroid/content/res/Resources$Theme;) in class Landroid/content/res/Resources; or its super classes` 在gradle中,我包括: compil

我已经开发了一个应用程序,它在运行棉花糖的设备上运行良好,现在当我尝试在较早版本的android(V21)上运行它时,它会出现以下错误

java.lang.NoSuchMethodError: No Virtual methold getColor(ILandroid/content/res/Resources$Theme;) 
in class Landroid/content/res/Resources; or its super classes`
在gradle中,我包括:

compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "com.veggies.test"
    minSdkVersion 21
    targetSdkVersion 25
    versionName '1.1'
`

我还将诸如colors.xml等资源文件从
values
复制到
values-v21

这是您的问题

minSdkVersion 21
targetSdkVersion 25
您的意思是,此应用程序仅在大于或等于21的设备上运行,最好是针对api级别为25的设备。更改最小值=15,目标相同

然后同步、清理并再次运行。 *GetColor是在该api之后引入的,这是主要问题。

这是您的问题

minSdkVersion 21
targetSdkVersion 25
您的意思是,此应用程序仅在大于或等于21的设备上运行,最好是针对api级别为25的设备。更改最小值=15,目标相同

然后同步、清理并再次运行。
*getColor是在该api之后引入的,这是主要问题。

好的。问题是此函数getColor()包含在api 23之后,因此它显示了错误。您必须添加对较低版本的检查

int color;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                color = ContextCompat.getColor(this, R.color.app_theme_color);
            } else {
                color = getResources().getColor(R.color.app_theme_color);
            }

好的。问题是这个函数getColor()已经包含在api 23之后,所以它显示了错误。您必须添加对较低版本的检查

int color;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                color = ContextCompat.getColor(this, R.color.app_theme_color);
            } else {
                color = getResources().getColor(R.color.app_theme_color);
            }

minSdkVersion属性声明应用程序兼容的最低版本,targetSdkVersion属性声明应用程序优化的最高版本。这是完全错误和误导的,请仔细阅读,考虑清单中的属性。让您指定应用程序支持的屏幕大小,并为屏幕大于您的应用程序支持的屏幕启用兼容模式。在应用程序中始终使用此元素来指定应用程序支持的屏幕大小,这一点很重要。好的,可能是我的理解完全偏离了图表。。也就是说,当我指定MinSDK版本时,android编译器会对任何不兼容的方法/类发出声音,但事实并非如此,我需要手动验证并找到替代方案:MIDSDKVIEW属性声明你的应用程序兼容的最小版本,TaaldSDKVIEW属性声明你对应用程序进行了优化的最高版本。这是完全错误的和误导的,阅读一个单词,考虑清单中的属性。rts和enable screen compatibility mode(为大于应用程序支持的屏幕启用屏幕兼容性模式)。在应用程序中始终使用此元素来指定应用程序支持的屏幕大小非常重要。好的,可能是我的理解完全偏离了图表。这是指当我指定android编译器的MinSDK版本时对于任何不兼容的方法/类都会关闭,但情况并非如此,我需要手动验证并找到替代方案:(你能在应用程序崩溃的地方发布代码吗?你能在应用程序崩溃的地方发布代码吗?