【发布时间】:2023-03-03 17:49:01
【问题描述】:
我是 Android 新手(但对编程并不陌生),并且正在开发我的第一个严肃的 Android 应用程序。在我为 Marshmallow(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;
似乎是某种版本冲突。应用程序本身已部署,似乎工作正常(但现在非常基本)。我在网上做了一些研究,有人提到我需要在 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 compiler-errors build.gradle