Libgdx上的通用补间引擎缺少Android Studio“添加为库”

时间:2015-12-18 15:00:39

标签: android android-studio module libgdx

我正在开发一个使用Universal Tween Engine的Libgdx项目。我已按照此页面上的所有步骤操作:https://github.com/libgdx/libgdx/wiki/Universal-Tween-Engine将Universal Tween Engine库安装到我的项目中。

完成所有这些步骤后,项目将在我的笔记本电脑上构建并运行良好(Android和桌面),来自补间引擎的动画完美运行。

但是,在我的台式计算机上,每当我尝试运行桌面应用程序时,它都会在TweenAccessor类上抛出NoClassDefFoundException而崩溃,而TweenAccessor类是Universal Tween Engine的一部分。应用程序正确编译,我可以按住它,它说它无法找到的类,它打开了该类的源代码,所以我知道IDE的至少某些部分正在找到这个类。源代码编辑器中的任何库类都没有红色下划线错误。有趣的是,在我的桌面计算机上,我可以运行Android应用程序,它不会崩溃,动画也可以完美运行。只有桌面版本不起作用。

在尝试对此进行问题排查时,我遇到了很多事情要说切换到“项目”视图找到jar文件,右键单击它们并选择Add as a Library我过去必须这样做其他项目确实对我有用。

但我的问题是当我在桌面PC上右击它时,上下文菜单中缺少Add as a Library选项:

enter image description here

我试过清理这个项目。我甚至完全卸载Android Studio并下载了一个新副本并安装了它。这样做后仍然得到相同的结果。

在右键单击jar文件时,是什么决定“添加为库”选项是否会显示在上下文菜单中?

我需要在桌面PC上做些什么才能正确使用Universal Tween Engine库jar?

编辑:gradle.build的相关部分。

project(":desktop") {
    apply plugin: "java"
    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        compile fileTree(dir: '../libs', include: '*.jar') // This one is not listed but I added anyway
    }
}
//...
project(":android") {
    apply plugin: "android"
    configurations { natives }
    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        compile fileTree(dir: '../libs', include: '*.jar')
    }
}
//...
project(":core") {
    apply plugin: "java"
    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        compile fileTree(dir: '../libs', include: '*.jar')
    }
}

我的项目结构

project_root_dir/
    android/
    core/
    desktop/
    html/
    ios/
    libs/
        tween-engine-api.jar
        tween-engine-api-sources.jar

3 个答案:

答案 0 :(得分:4)

我只想在这一行添加依赖:

compile files('../libs/tween-engine-api.jar')

上面的那一行应该替换这一行:

compile fileTree(dir: '../libs', include: '*.jar')

我可以想象源代码文件正在破坏某些东西。一般来说,我会避免一次导入多个罐子,我总是手工选择它们。

作为另一种想法,您是否尝试过readme file

中的第6点和第7点

在您的依赖关系部分添加:

compile "aurelienribon:tweenengine:6.3.3"
compile "aurelienribon:tweenengine:6.3.3:sources"

将这两个maven重新存入项目根目录中的build.gradle文件:

maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" }

答案 1 :(得分:1)

如果你真的想看到" Add as Library"选项。 在build.gradle中更新您的Android依赖项,如下所示(通过删除' .jar')。

project(":android") {
apply plugin: "android"
configurations { natives }
dependencies {
    compile project(":core")
    compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
    natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
    compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
    natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
    natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
    natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
    compile fileTree(dir: '../libs', include: '') //removed '*.jar'
}

}

OR,否则您可以通过

添加库而不编辑依赖项
  

文件 - >项目结构 - >依赖关系 - >添加 - >文件依赖

答案 2 :(得分:0)

你可以尝试这个。 maven repo中的通用补间引擎。

https://stackoverflow.com/a/41426725/3445320