【发布时间】: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