Android Studio上的NoClassDefFoundError R $ string

时间:2014-07-22 15:35:51

标签: java android android-studio

我在Android Studio上有一个具有以下结构的项目:

  

项目
    | - >应用
    | - >芯

核心它是一个像库一样创建的项目,可以在其他应用程序上重用并具有此gradle配置。

apply plugin: 'com.android.library'

android {
    compileSdkVersion 20
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "com.porject.core"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions{
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/notice.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:20.0.0'
    compile 'net.hockeyapp.android:HockeySDK:3.0.+'
    compile 'com.octo.android.robospice:robospice:1.4.6'
    compile 'org.droidparts:droidparts:2.0.5'
    compile 'com.octo.android.robospice:robospice-spring-android:1.4.12'
    compile 'com.google.code.gson:gson:1.7.2'
    compile 'net.sourceforge.htmlcleaner:htmlcleaner:2.2'
    compile 'io.segment.android:analytics:1.2.0@aar'
    compile "com.mixpanel.android:mixpanel-android:4.2.1@aar"
}

app gradle具有以下配置:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion '19.1.0'

    defaultConfig {
        applicationId "com.project.app"
        minSdkVersion 14
        targetSdkVersion 18
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions{
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/notice.txt'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project (':core')
}

这会编译并带来所有依赖项,但是当我运行应用程序时会抛出此错误

  

java.lang.NoClassDefFoundError:com.project.R $ string               在com.project.utils.Preferences.getClientId(Preferences.java:178)               在com.project.utils.ConfigUtils.findClientResourceId(ConfigUtils.java:68)               在com.project.utils.ConfigUtils.getSegmentIOKey(ConfigUtils.java:118)               在com.project.utils.EventTracker.onScreenCreate(EventTracker.java:127)               在com.project.activity.BaseActivity.onCreate(BaseActivity.java:104)               在com.project.app.activity.SplashScreenActivity.onCreate(SplashScreenActivity.java:23)               在android.app.Activity.performCreate(Activity.java:5133)               在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)               在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)               在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)               在android.app.ActivityThread.access $ 600(ActivityThread.java:141)               在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1256)               在android.os.Handler.dispatchMessage(Handler.java:99)               在android.os.Looper.loop(Looper.java:137)               在android.app.ActivityThread.main(ActivityThread.java:5103)               at java.lang.reflect.Method.invokeNative(Native Method)               在java.lang.reflect.Method.invoke(Method.java:525)               在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:737)               在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)               在dalvik.system.NativeStart.main(本地方法)

我做了一些研究,我认为该项目没有找到在核心上创建的R,也许我在gradle或其他什么地方缺少一些配置。

感谢您的时间,我愿意接受任何建议。 问候 凯撒

1 个答案:

答案 0 :(得分:0)

您需要在项目的根目录中有一个settings.gradle文件。该文件中的项目顺序很重要。确保您首先提到了库项目,然后是应用程序。在您的示例中,settings.gradle应如下所示:

include ':core', ':app'