Gradle 依赖项导致错误“无效的幻数”

2024-04-12

我在 GitHub 上有一个项目,我在家里的办公室都在做这个项目。大约两个月来,两台机器都运行良好。然后两周前,它停止在我的家用电脑上运行,但是在我的工作电脑上仍然可以正常工作.

这是我得到的错误:

:app:shrinkDebugMultiDexComponents 失败

失败:构建失败并出现异常。

  • 什么地方出了错: 任务“:app:shrinkDebugMultiDexComponents”执行失败。 java.io.IOException:无法读取 [D:\dev\gitRepo\app\android\app\build\intermediates\multi-dex\debug\allclasses.jar] (无法处理类 [__MACOSX/com/stripe /android/._BuildConfig.class](类中无效的幻数 [51607]))
  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

The stripe给我错误的包是第三方库你可以在这里找到 https://github.com/stripe/stripe-android。我将其列为 build.gradle 文件中的依赖项,正如他们所说的那样。

compile 'com.stripe:stripe-android:+'

我已经注释掉了所有相关代码stripe该应用程序运行完全正常,所以我确实知道它与我处理该包的方式有关。

不幸的是,我不记得我做了什么才使它停止工作。我确实认为在这件事发生的前一周我升级了 Android Studio,并花了相当多的时间搞乱ProGuard配置。

我尝试过的:

  • 致力于master没有分支的地方ProGuard已经做出了改变。
  • 卸载并重新安装 Android Studio
  • 重新克隆 g​​it 存储库
  • 安装 API 17(Eclipse 的条带需要这个。不是 Studio,但我尝试过)。
  • 联系了 stripe 客户支持,但他们没有任何线索。
  • 这个堆栈溢出帖子 https://stackoverflow.com/questions/18798090/java-io-ioexception-cant-process-class-when-running-proguard-in-maven-build-of。然而,没有Mac电脑接触过这个项目,也没有我亲自压缩过任何与该项目相关的东西stripe.
  • 从这里 http://slightlyrandombrokenthoughts.blogspot.com/2010/03/reverse-engineering-java-class-magic.html,将幻数从十六进制转换为 ASCII。结果是Q`我不认识。

我认为这可能与我为 ProGuard 所做的事情有关,但我不明白是怎么回事。我所在的分支与任何 Proguard 工作完全不同,有一个干净的 AndroidStudio 安装,一个干净的存储库克隆,当我在办公室时,该项目仍然可以正常工作。

EDIT

我正在运行这个debug构建类型。这是我的 3 个 gradle 文件。第一个是整个项目,第二个是应用程序模块,第三个是本地 android 库模块。

Project build.gradle: 构建脚本{ 存储库{ jcenter() 行家{网址'http://download.crashlytics.com/maven http://download.crashlytics.com/maven'} } 依赖项{ 类路径'com.android.tools.build:gradle:1.2.3' 类路径 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' } }

allprojects {
    repositories {
        jcenter()
        maven{ url 'http://download.crashlytics.com/maven' }
    }
}

安卓应用模块build.gradle

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}


android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.app.android"
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
        minSdkVersion 16
        targetSdkVersion 22
        multiDexEnabled = true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            buildConfigField 'Boolean', 'enableCrashlytics', 'true'
        }
        debug {
            buildConfigField 'Boolean', 'enableCrashlytics', 'false'
        }
        adhoc {
            debuggable true
            signingConfig signingConfigs.debug
            buildConfigField 'Boolean', 'enableCrashlytics', 'true'
        }
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }
}
dependencies {
    compile project(':localLibrary')
    compile 'com.facebook.android:facebook-android-sdk:3.21.1'
    compile 'commons-io:commons-io:2.4'
    compile 'com.github.bumptech.glide:glide:3.6.1'
    compile 'com.android.support:support-v4:22.0.1'
    compile 'com.google.android.gms:play-services-identity:8.1.0'
    compile 'com.google.android.gms:play-services-plus:8.1.0'
    compile 'com.google.android.gms:play-services-maps:8.1.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'io.card:android-sdk:5.0.1'
    compile 'com.stripe:stripe-android:+'
    compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
        transitive = true;
    }
}

本地Android库模块build.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 22
        multiDexEnabled = true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:22.1.0'
    compile 'com.google.code.gson:gson:2.2.2'
    compile 'com.android.support:multidex:1.0.0'
    compile group: 'org.apache.httpcomponents' , name: 'httpmime' , version: '4.3.5'
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5'

}

此问题可能与您运行的 Java 版本有关。我遇到了类似的问题,并发现使用 Java 8 进行构建。当我更改为 Java 7 时,这个构建问题得到了解决。

在 Android Studio 中转到

File -> Project Structure -> SDK Location

The JDK Location应该是 Java 1.7.x (Java 7)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 依赖项导致错误“无效的幻数” 的相关文章

  • 为 DownloadManager 的 BroadcastReceiver 设置附加功能 [重复]

    这个问题在这里已经有答案了 有一种方法可以添加额外内容DownloadManager已登记行动意图DownloadManager ACTION DOWNLOAD COMPLETE 例如 接收一个在意图中设置为额外的布尔值 这就是我创建请求的
  • 如何使用 SyncAdapter 处理远程服务器的 RESTful 更新

    我观看了 Google I O REST 演讲并阅读了幻灯片 http www google com events io 2010 sessions developing RESTful android apps html http www
  • android widget 和 localservice 绑定

    我编写播放器 它的主要活动是运行本地服务 我找不到如何将本地服务绑定到小部件 当我尝试像在活动中一样绑定它时 它失败了 请帮助我 添加 1 何时可以联系后台服务 http www developer com ws data article
  • Android P Beta - AlarmManager 通知不起作用

    我正在 Android P beta 版本 4 上测试我的应用程序 我的应用程序目标SdkVersion是27 据观察 警报管理器通知未按预期工作 我使用下面的代码来设置通知 if android os Build VERSION SDK
  • Git:检查文件是否存在于某个版本

    在我的应用程序中 我使用 git 对一些外部文件进行版本管理 我正在使用类似的命令git show HEAD 1 some file获取文件的某个版本 基于 git 标签 提交哈希或与 HEAD 的关系 当文件不存在时 会输出 致命 消息
  • 启动时的 Android pin 活动

    我有一个应用程序 它将自身注册为默认启动器 并在启动时自动固定自身 安装应用程序时这一切都正常 它会自行固定 并且只有后退按钮可见 问题是 当设备首次启动时 它无法正确固定 我多次看到一系列 屏幕固定 和 屏幕取消固定 的 toast 主页
  • 未安装 newrelic 的应用程序上出现 NoClassDefFoundError

    我已经使用他们的 Eclipse 指南为我的 Android 应用程序安装了 newrelic 它在该应用程序上运行正常 现在 如果我创建一个简单的 hello world 项目 我将收到 NoClassDefFoundError 我该如何
  • 如何在Android应用程序的同一屏幕上显示文本框的值,就像whatsapp一样

    这是我的主文件 我在其中调用按钮上的单击事件来传递值 protected void onCreate Bundle savedInstanceState super onCreate savedInstanceState setConten
  • Android:多图像密度支持 - 缩放高度宽度和 dpi?

    我有一个 Android 应用程序 我正在尝试添加对不同密度 屏幕尺寸等的支持 我已经在具有 HVGA 支持的模拟器上开发了该应用程序 并使用了我们 iphone 应用程序中的所有图标 自从分辨率以来 结果很好分辨率为 320x480 现在
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • CollapsingToolbarLayout 禁用绘制扩展

    我有一个已有条件禁用的 CollapsingToolbar 当用户在这种情况下加载视图时 它看起来就像一个普通的 ToolBar 对象 唯一奇怪的是 如果它们向下拖动 例如在拉动刷新样式操作中 折叠工具栏就会展开 尽管我的愿望和代码与此相反
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • 将样式应用于警报对话框

    我决定尝试材质警报dialogs https material io develop android components dialog 在安卓上 我遇到的问题是当我尝试应用某些样式时 检查文档 我发现了这个
  • android 从图库中选择图像

    我想从图库创建一个图片选择器 我使用代码 intent new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL CONTENT URI
  • 如何更改 Bitbucket 中的 git 提交消息?

    我需要更改 Bitbucket 中的旧 git 提交消息 我试过git rebase i并重写了我的消息 但是当我拉取并提交时 它只是将旧消息保留在 Bitbucket 中并合并了我的更改 这基本上是 4 个步骤的过程 但如果多个团队成员在
  • Kotlin 中是否有类似于 #region #endregion 的语法?

    我知道我可以使用 region endregion 包围 C 中的代码片段 Kotlin 中是否有类似的语法 谢谢 region MyRegion protected void Page Load object sender EventAr
  • 防止 Firebase 中的待处理写入事务不起作用

    我的目标是在单击按钮时将名称插入 Cloud Firestore 中 但如果用户未连接到互联网 我不希望保存处于挂起状态 我不喜欢 Firebase 保存待处理写入的行为 即使互联网连接已恢复 我研究发现Firebase 开发人员建议使用事
  • Android同步onSensorChanged?

    这是我的问题的后续 Android线程可运行性能 https stackoverflow com questions 36395440 android thread runnable performance 我在理解应用程序的同步方法时遇到
  • Phonegap - cordova 在 Android 和 iOS 设备上延迟且缓慢

    我刚刚开始使用 zend studio 开始我的第一个 PhoneGap 项目 但是 在我构建并部署它之后 该应用程序非常慢 Android 和 iOS 均可 滚动滞后 如果我按下按钮 转到下一页的速度很慢 有什么办法可以提高它的性能吗 提
  • 使用 Android 的 Mobile Vision API 扫描二维码

    我跟着这个tutorial http code tutsplus com tutorials reading qr codes using the mobile vision api cms 24680关于如何构建可以扫描二维码的 Andr

随机推荐