【问题标题】:NoClassDefFoundError in Android Plugin for UnityUnity Android 插件中的 NoClassDefFoundError
【发布时间】:2016-02-18 20:16:42
【问题描述】:

我正在为我的 Unity 游戏开发 Android 插件。我的插件应该为我的应用程序返回 GCM 令牌。 我的 gradle 文件如下所示:

apply plugin: 'com.android.library'
apply plugin: 'com.google.gms.google-services'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        //applicationId "testproject.com.pushtoken"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            //resources {
            //    srcDir 'libs'
            //}
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile files('libs/classes.jar')
}

task clearJar(type: Delete) {
    delete 'libs/pluginLibrary7.jar'
}

task makeJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('plugins/')
    include('classes.jar')
    rename ('classes.jar', 'pluginLibrary7.jar')
}

makeJar.dependsOn(clearJar, build)

插件包含用于测试其功能的简单方法(如返回 int 值),当然它具有获取 gcm 令牌的方法。问题是当我尝试启动该方法以接收 gcm 令牌时,我收到此错误:

AndroidJavaException: java.lang.NoClassDefFoundError: com.google.android.gms.iid.InstanceID

我知道问题是我的 .jar 库没有 gms 库。但是我应该如何将它包含到我的 .jar 文件中呢?

【问题讨论】:

  • 注释掉测试用例的apply plugin: 'com.google.gms.google-services'
  • 感谢您的回复,IntelliJ!已经试过了,同样的情况:(

标签: java android plugins unity3d


【解决方案1】:

看来我找到了问题所在。这个错误的原因是我的库没有正确打包。我的意思是这个库似乎拥有所有需要的外部库,但是当我打开 .jar 文件查看里面的内容时,我发现它只有用于外部库的文件夹,而这些文件夹完全是空的。

我的解决方法非常简单。我打开了我的 .jar 库,并用手将必要的外部库放在那里。之后,我从更新的包中制作了新的 .jar,它可以工作了。

对于愿意选择我解决此问题的方法的人,我有几个建议。我在工作中使用的是 Macbook,而且我很难编辑 .jar 文件,因为每当我通过标准实用程序创建新的 .jar 文件时,它都不适用于 Unity。所以我在我的第二台 Windows PC 上使用 WinRAR 来制作 .jar,然后一切都开始工作了。

我希望我的建议对某人有所帮助。 P.S.:对不起我的英语不好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 2017-04-12
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多