![](/img/trans.png)
[英]NoClassDefFoundError and ClassNotFoundException for a Unity plugin
[英]NoClassDefFoundError in Android Plugin for Unity
我正在為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)
插件包含用於測試其功能的簡單方法(例如return 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,然后所有東西開始工作。
我希望我的提示對某人有幫助。 PS:對不起,我英語不好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.