android - 在较低的API级别上测试Android应用的正确方法(Android Studio)

标签 android compiler-errors build.gradle

我是Android的新手(但不是编程新手),并且正在开发我的第一个认真的Android应用程序。一切顺利,直到我为棉花糖开发(API级别23)。我决定在具有API级别16的另一台设备上测试我的应用程序,现在编译器会抛出许多警告和错误,如下所示:

06-26 12:14:13.060 19473-19473/com.blueit.unico E/Trace: error opening trace file: No such file or directory (2)
06-26 12:14:13.100 19473-19473/com.blueit.unico W/dalvikvm: VFY: unable to resolve virtual method 482: Landroid/content/Context;.getSystemService (Ljava/lang/Class;)Ljava/lang/Object;
06-26 12:14:13.100 19473-19473/com.blueit.unico E/dalvikvm: Could not find class 'android.os.UserHandle', referenced from method com.blueit.unico.UnicoApplication.access$super
06-26 12:14:13.100 19473-19473/com.blueit.unico W/dalvikvm: VFY: unable to resolve check-cast 242 (Landroid/os/UserHandle;) in Lcom/blueit/unico/UnicoApplication;
06-26 12:14:13.100 19473-19473/com.blueit.unico W/dalvikvm: VFY: unable to resolve virtual method 536: Landroid/content/ContextWrapper;.getCodeCacheDir ()Ljava/io/File;

似乎有些版本冲突。应用程序本身已部署,并且看起来运行良好(但是现在非常基础)。我已经在Internet上进行了一些研究,有人提到我需要在build.gradle文件中更改targetSDKVersion。但是我真的需要手动编辑此文件吗? Android Studio是否不应该识别该设备具有较旧的API并针对该版本进行编译?我之前做了一些小测试应用程序,它们可以在不更改任何内容的情况下运行或运行其他设备。如果互联网上的人们是正确的,并且我真的需要手动编辑build.gradle文件,它看起来像这样:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.blueit.unico"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
}

然后出现新的问题。我到底要更改什么?对我来说很明显,应该更改targetSdkVersion和compileSdkVersion,但是这些行呢?
buildToolsVersion "23.0.3"

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'

是否也应该更改它们?如果是,请选择什么版本?
先感谢您。

解决:在注意到所有错误和警告都来自dalvikvmdoing some研究几个小时后,我得出的结论是,这是某种dalvik虚拟机验证,它们不是“真实的”错误和警告-仅仅是我所得到的信息。应用程序使用了更新的功能(它确实做到了)。感觉很奇怪,尽管忽略了数十个错误和警告。

最佳答案

如果您无权使用旧设备,则仍可以在Android Stuido SDK中下载旧图像并模拟旧设备。

关于android - 在较低的API级别上测试Android应用的正确方法(Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037251/

相关文章:

visual-studio-2008 - 让 Visual Studio 显示所有编译错误!

android - 使用 Google 服务 v15 部署应用时出错

gradle - 在gradle中同时使用Application和Distribution插件

android - 在生成 .aar 文件的 Gradle 项目中添加依赖项

android - 在 Android 中加密/解密共享首选项的安全方法

java - Firebase 数据不断循环

android - XML 中定义的 TextView 中的不同颜色

java - 使用文件名填充 ListView

compiler-errors - 此表达式的类型为 a*b*c 但应为 int 类型

Java编译错误: "reached end of file while parsing }"