我是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'
是否也应该更改它们?如果是,请选择什么版本?
先感谢您。
解决:在注意到所有错误和警告都来自
dalvikvm
和doing some研究几个小时后,我得出的结论是,这是某种dalvik虚拟机验证,它们不是“真实的”错误和警告-仅仅是我所得到的信息。应用程序使用了更新的功能(它确实做到了)。感觉很奇怪,尽管忽略了数十个错误和警告。
最佳答案
如果您无权使用旧设备,则仍可以在Android Stuido SDK中下载旧图像并模拟旧设备。
关于android - 在较低的API级别上测试Android应用的正确方法(Android Studio),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037251/