有一段时间我在Eclipse中开发Android应用程序(重要的是:Eclipse中的设置:Project Build Target:API 19)。昨天我已将项目导入Android Studio。在依赖项的一些问题(我的应用程序使用一些外部库)后,我能够运行应用程序。我的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
设置是app模块(主模块)中的类,所以它怎么可能?
当我使用Android 6.0在AVD中运行app时,它运行正常!
当我将compileSdkVersion更改为21时,它会在具有Android 5.0(模拟或物理)的手机上运行但我无法更改为更低的compileSdkVersion,因为其中一个依赖项 - https://github.com/dbachelder/CreditCardEntry - 正在使用compile&#39 ; com.android.support:支持-V4:22.1.1'对于旧版本,它会在此库中显示xml文件错误。
我做错了什么?
编辑: 我已经更改了gradle文件中的一些行并删除了CreditCardEntry lib,现在我收到了错误:
java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
当我初始化Facebook SDK时:
FacebookSdk.sdkInitialize(getApplicationContext());
主要活动中的。
EDIT2: 我已经从存储库中添加了Facebook SDK库,但上面的错误已经解决,但我的旧错误又回来了:
java.lang.NoClassDefFoundError: com.myapp.settings.Setting
答案 0 :(得分:1)
下载library.jar文件并将其复制到应用程序项目中的/ libs /文件夹中。
打开build.gradle文件并编辑依赖项以包含新的.jar文件:
现在进入你的gradle路径并通过命令提示符清理它。
答案 1 :(得分:0)
我已经解决了这个问题。问题是MultiDexApplication的初始化不正确。我用这个主题来解决它:http://domain/index.php/en/courses