将项目从Eclipse导入Android Studio后出现奇怪错误

时间:2015-09-25 07:58:41

标签: android android-studio android-gradle build.gradle noclassdeffounderror

有一段时间我在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

2 个答案:

答案 0 :(得分:1)

下载library.jar文件并将其复制到应用程序项目中的/ libs /文件夹中。

打开build.gradle文件并编辑依赖项以包含新的.jar文件:

现在进入你的gradle路径并通过命令提示符清理它。

答案 1 :(得分:0)

我已经解决了这个问题。问题是MultiDexApplication的初始化不正确。我用这个主题来解决它:http://domain/index.php/en/courses