android - Android应用程序仅在使用较旧的Maven存储库进行编译时才运行

标签 android gradle noclassdeffounderror android-holo-everywhere

我正在研究一个可以正确编译但在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/

相关文章:

java - 如何确保doLast甚至任务被跳过

android - Gradle "manifest requires a placeholder substitution"错误但 manifestPlaceholders 提供了一个值

gradle - 如何通过命令行构建Android Gradle文件期间设置Java主目录路径?

java - Applet 类加载器找不到 jar 中的类之一

android - 使用android库时所有R类的java.lang.NoClassDefFoundError

移动到新服务器后出现 Java.lang.NoClassDefFoundError

android - 在平板电脑上强制使用横向模式

java - Android XML 文件不保存

Android数据绑定(bind)条件菜单?

java - 如何干燥内部 Activity