在 android 项目中使用 Kotlogram 库

Posted

技术标签:

【中文标题】在 android 项目中使用 Kotlogram 库【英文标题】:Using Kotlogram library in android project 【发布时间】:2016-08-31 00:58:58 【问题描述】:

我想在我的 android 项目中使用Kotlogram library。

我正在使用 java 7 (jdk1.7.0_79)。但是当我想调试或运行项目时,发生了这个错误:

意外的***异常: java.lang.RuntimeException:异常解析类 在 com.android.dx.command.dexer.Main.processClass(Main.java:752) 在 com.android.dx.command.dexer.Main.processFileBytes(Main.java:718) 在 com.android.dx.command.dexer.Main.access$1200(Main.java:85) 在 com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645) 在 com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) 在 com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) 在 com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 在 com.android.dx.command.dexer.Main.processOne(Main.java:672) 在 com.android.dx.command.dexer.Main.processAllFiles(Main.java:574) 在 com.android.dx.command.dexer.Main.runMonoDex(Main.java:311) 在 com.android.dx.command.dexer.Main.run(Main.java:277) 在 com.android.dx.command.dexer.Main.main(Main.java:245) 在 com.android.dx.command.Main.main(Main.java:106) 原因:com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) 在 com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472) 在 com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) 在 com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) 在 com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) 在 com.android.dx.command.dexer.Main.parseClass(Main.java:764) 在 com.android.dx.command.dexer.Main.access$1500(Main.java:85) 在 com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684) 在 com.android.dx.command.dexer.Main.processClass(Main.java:749) ... 12 更多 1个错误;中止 失败

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

出了什么问题: 任务 ':app:transformClassesWithDexForDebug' 执行失败。 com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' 完成非零退出值 1

app build.gradel 内容:

apply plugin: 'com.android.application'
android 
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig 
    applicationId "api.telegram.learn.kotlogram"
    minSdkVersion 12
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"

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


compileOptions 
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7

dexOptions 





dependencies 
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.github.badoualy:kotlogram:0.0.6'

项目 build.gradel 内容

// Top-level build file where you can add configuration options common to all sub-projects/modules.

apply plugin: 'java'

sourceCompatibility = 1.7
targetCompatibility = 1.7

buildscript 
repositories 
    jcenter()

dependencies 
    classpath 'com.android.tools.build:gradle:1.5.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files



allprojects 
repositories 
    jcenter()
    maven  url "https://jitpack.io" 



task clean(type: Delete) 
delete rootProject.buildDir

【问题讨论】:

将此添加到您的 gradle 并清理并重建您的项目.. 在依赖部分之上。 存储库 maven url "jitpack.io" Bad class file magic or version的可能重复 我在这篇文章中展示了我的 app build.gradel 内容。我也忘记展示项目 build.gradel 了。当然我已经添加了这个存储库。我已经在项目 build.gradel 中添加了这个存储库。我没有编译错误。当我想调试或运行项目时会发生此错误 我看到了这个链接“Bad class file magic or version”。但这对我没有帮助 谁能帮助我?我必须解决这个错误 【参考方案1】:

最后我下载了存储库并将其模块手动添加到 android 项目并找到问题。

只有 java 8 可以正确编译和运行这些模块。他们使用了一些在 java 8 中定义但在 java 7 中没有定义的特殊方法。java 7 无法编译它们。

通过查看refrence,android 项目需要 java 7 才能编译和运行。

在android项目中使用Kotlogram似乎是不可能的。

【讨论】:

这不是真的。启用 Jack 后,Java 8 与 Android 完美配合。 杰克是什么意思? 请提供一些链接,以了解有关在 android 中使用 java 8 的更多信息。

以上是关于在 android 项目中使用 Kotlogram 库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android studio 中使用我的 android 项目作为其他项目中的库? [复制]

在android项目和库中使用支持库(Android Studio)

可以在Gradle,Android项目中使用ApiFuture吗?

在Eclipse中,如何从使用它的项目源中快速访问“android库项目”的源?

如何在 Android 项目中使用外部 JAR?

如何在Android项目中使用VLC