Android工作室如何参考库?

时间:2014-04-26 20:06:44

标签: java android intellij-idea android-studio

我在intelliJ中创建了一个库。这是一个休息客户端,我想在android项目中导入它。我想在intelliJ中单独开发库,因为它允许我在没有实际的Android应用程序的情况下测试它,但只是在控制台中。当我想在android工作室中导入库时,我收到一个错误。我尝试了导入库的所有方法(很多都来自SO)。这就是我的工作:

我转到项目结构,选择依赖项并从我在.jenJ中创建的.jar文件的文件夹中添加。在IntelliJ中,我做了Artifact,然后将其构建为.jar。我把它移到Android工作室,它不起作用。 Bellow是我在Android studio中编译项目时遇到的错误。

     Error:Execution failed for task ':app:preDexDebug'.
  

com.android.ide.common.internal.LoggedErrorException:无法运行命令:       C:\ Users \ Gregor \ AppData \ Local \ Android \ android-studio \ sdk \ build-tools \ android-4.4.2 \ dx.bat --dex --output C:\ Users \ Gregor \ AndroidStudioProjects \ Perla \ app \ build \ pre-dexed \ debug \ PerlaRestAPI-985193a1adafac50f74c01c1069cd74ce9c69b55.jar C:\ Users \ Gregor \ AndroidStudioProjects \ Perla \ app \ libs \ PerlaRestAPI.jar   错误代码:       1   输出:       意外的顶级例外情况:       com.android.dx.cf.iface.ParseException:错误的类文件魔术(cafebabe)或版本(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.processClass(Main.java:665)           在com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)           在com.android.dx.command.dexer.Main.access $ 600(Main.java:78)           在com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:572)           在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:596)           在com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)           在com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)           在com.android.dx.command.dexer.Main.run(Main.java:230)           在com.android.dx.command.dexer.Main.main(Main.java:199)           在com.android.dx.command.Main.main(Main.java:103)       ...在解析api / Game.class时       1错误;中止

2 个答案:

答案 0 :(得分:3)

IntelliJ中的库是用Java 7编译的吗?这可能是导致dex工具失败的原因。 Android仅支持Java 6。

编辑:从Android 5.0开始不再适用,现在需要Java 7。

答案 1 :(得分:0)

我遇到了错误消息bad class file magic (cafebabe) or version (0034.0000),并采取了以下步骤来成功解决问题:

  • 将我的Intellij模块中的语言级别设置为7
  • 将要编译的JAR设置为我的Android模块的libs文件夹
  • 右键单击JAR,然后添加为库
  • 在Android模块的build.gradle compileOptions
  • 中将 sourceCompatibility targetCompatibility 设置为JavaVersion.VERSION_1_7

注意您的JAR文件存在一个可能的问题,该文件具有使用Android当前不支持的Java版本编译的依赖项。