【发布时间】:2015-09-25 07:58:41
【问题描述】:
我一直在 Eclipse 中开发 Android 应用程序(重要:Eclipse 中的设置:项目构建目标:API 19)。昨天我已将项目导入 Android Studio。在出现一些依赖问题(我的应用程序使用了一些外部库)之后,我能够运行 app.我的 build.gradle 文件有一部分:
compileSdkVersion 22
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.myapp"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
multiDexEnabled true
}
不幸的是,当我在装有 Android 4.4.4 的手机上运行它时,它会引发奇怪的错误:
java.lang.NoClassDefFoundError: com.myapp.settings.Setting
设置是我在应用模块(主模块)中的类,这怎么可能?
当我使用 Android 6.0 在 AVD 中运行应用程序时,它运行良好!
当我将 compileSdkVersion 更改为 21 时,它可以在搭载 Android 5.0(模拟或物理)的手机上运行,但我无法更改为更低的 compileSdkVersion,因为其中一个依赖项 - https://github.com/dbachelder/CreditCardEntry - 正在使用 compile 'com.android.support: support-v4:22.1.1' 和旧版本显示此库中的 xml 文件错误。
我做错了什么?
编辑: 我更改了 gradle 文件中的一些行并删除了 CreditCardEntry 库,现在出现错误:
java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
当我初始化 Facebook SDK 时:
FacebookSdk.sdkInitialize(getApplicationContext());
在主活动中。
编辑2: 我已经从存储库中添加了 Facebook SDK 库,上面的错误已解决,但我的旧错误又回来了:
java.lang.NoClassDefFoundError: com.myapp.settings.Setting
【问题讨论】:
-
无论如何,你都应该将目标版本设置得尽可能高。
-
我已经改变了,但问题仍然存在。
标签: android android-studio android-gradle-plugin build.gradle noclassdeffounderror