Java Unity Android插件中的NoClassDefFoundError
我正在为我的Unity游戏开发Android插件。我的插件应该为我的应用程序返回GCM令牌。 我的gradle文件如下所示:Java Unity Android插件中的NoClassDefFoundError,java,android,plugins,unity3d,Java,Android,Plugins,Unity3d,我正在为我的Unity游戏开发Android插件。我的插件应该为我的应用程序返回GCM令牌。 我的gradle文件如下所示: apply plugin: 'com.android.library' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 23 buildToolsVersion "23.0.0" defaultConfig { //applic
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文件中呢?看来我已经解决了这个问题。此错误的原因是我的库没有正确打包。我的意思是,这个库似乎都需要外部库,但当我打开.jar文件查看其中的内容时,我发现它只有用于外部库的文件夹,这些文件夹都是空的 我的解决办法很简单。我打开了我的.jar库,并用手将必要的外部库放在那里。在这之后,我从更新的包中创建了新的.jar,它可以正常工作 对于那些选择我解决这个问题的方法的人,我有几个建议。我在工作中使用Macbook,编辑.jar文件很困难,因为每当我用标准实用程序创建新的.jar文件时,Unity都无法使用它。所以我在我的第二台Windows PC上使用WinRAR来制作.jar,然后一切都开始工作了
我希望我的建议能对某人有所帮助。注:很抱歉我的英语不好。注释掉
apply plugin:'com.google.gms.google services'
测试用例行谢谢你的回复,IntelliJ!已经尝试过,同样的情况:(