【问题标题】:NoClassDefFoundError R$string on Android StudioAndroid Studio 上的 NoClassDefFoundError R$string
【发布时间】:2014-07-22 15:35:51
【问题描述】:

我在 Android Studio 上有一个具有这种结构的项目:

项目
|-> 应用程序
|-> 核心

Core 它是一个像库一样创建的项目,可在其他应用程序上重用并具有此 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) 在 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(Native Method)

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

感谢您的宝贵时间,我愿意接受任何建议。 问候 塞萨尔

【问题讨论】:

  • 嗨 cersar,你找到解决这个问题的方法了吗?

标签: java android android-studio


【解决方案1】:

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

include ':core', ':app'

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 2017-07-28
    • 2019-01-06
    • 2014-07-01
    • 1970-01-01
    • 2016-05-17
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多