我正在研究一个可以正确编译但在build.gradle文件上设置新的Maven存储库时启动时崩溃的项目。
该项目正在使用lib holoeverywhere,并且由于以下错误而崩溃:java.lang.NoClassDefFoundError:android.support.v4.app._HoloFragmentInflater $ 1
直到上个月,一切都工作正常,但旧的公司资料库突然离线,我们创建了一个新的资料库。现在,如果我在build.gradle文件上设置了较旧的存储库,则该应用程序将编译并成功运行,但是如果我删除了较旧的存储库,则该应用程序仍会编译,但是当我尝试打开它时会崩溃。
这样做的主要问题是,新人们尝试使用新的或较旧的存储库首次编译代码时,便会导致崩溃。
因此,我认为这可能是由gradle进行的某些高速缓存引起的,但是看着.gradle文件夹,我什么都找不到。
有人可以帮我吗?
这是build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
allprojects {
repositories {
mavenCentral()
maven {
url "http://<new_repository_url>/artifactory/simple/libs-release-local/"
}
// if I remove comment from these lines the project runs correctly
//maven {
//url "https://<old_repository_url>/content/groups/AndroidPublicRepository/"
//}
maven {
url "http://holoeverywhere.cf/repo"
}
}
}
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion '19.1'
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
versionCode 131
versionName '1.5'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
packagingOptions {
exclude 'META-INF/license.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/NOTICE.txt'
}
android {
lintOptions {
abortOnError false
}
}
productFlavors {
}
}
configurations {
all*.exclude(group: 'org.springframework', module: 'spring-core')
all*.exclude(group: 'org.springframework', module: 'spring-web')
all*.exclude(group: 'org.hamcrest', module: 'hamcrest-core')
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
compile 'com.android.support:support-v13:19.1.0'
compile 'org.holoeverywhere:library:2.1.0'
compile 'com.viewpagerindicator:viewpagerindicator:2.4.1'
compile 'com.googlecode.libphonenumber:libphonenumber:5.9'
compile 'de.keyboardsurfer.android.widget:crouton:1.8.4'
compile 'com.google.code.gson:gson:2.3'
compile 'com.octo.android.robospice:robospice:1.4.14'
compile 'com.octo.android.robospice:robospice-cache:1.4.14'
compile 'com.octo.android.robospice:robospice-spring-android:1.4.14'
compile 'org.springframework.social:spring-social-core:1.0.2.PATCHED'
compile('org.springframework.android:spring-android-auth:1.0.1.RELEASE') {
exclude group: 'org.springframework.social', module: 'spring-social-core'
}
compile project(':addon-preferences-2.1.0')
}
最佳答案
我建议您从应用程序中删除HoloEverywhere。这是一个很棒的图书馆,但现在不是。并不是很困难:只需更改导入,一些小的调整和minSdkVersion = 15
即可。其他选项: Material 设计。
无论如何,如果您无法删除它或现在无法执行它:
HoloEverywhere的补丁程序support-v4具有依赖性。我认为问题是您的Maven存储库中没有此修补程序版本。您可以在分支 support-library
中找到此代码。
关于android - Android应用程序仅在使用较旧的Maven存储库进行编译时才运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706338/