【发布时间】:2017-11-10 10:52:38
【问题描述】:
我在基于 EasyPermissions 为 Unity 实现 Android 插件时遇到了一个问题。问题是由于
Caused by: java.lang.ClassNotFoundException: Didn't find class "pub.devrel.easypermissions.EasyPermissions$PermissionCallbacks"
因为 Android Studio 没有将相关类打包到我的 AAR 文件中。
我尝试了各种方法:
- 只需在 Android Studio 中编译,希望生成的 AAR 会正常FAIL
- 从 jCentral 下载 AAR 并将其添加到 Unity - 失败
所以最后我解压了 EasyPlugin AAR 并把里面的 classes.jar 文件添加到 Unity 中。这有效。然而,这是一个相当手动的过程。
我需要在我的 gradle 文件中添加什么才能自动完成这项工作?
我正在使用:
- https://github.com/googlesamples/easypermissions
- Unity 2017.1(应该没关系)
- Android Studio 2.3.3
- 使用的 Gradle 任务:build->assemble
我的 Gradle 文件:
apply plugin: 'com.android.library'
android {
compileSdkVersion 26
buildToolsVersion "27.0.0"
defaultConfig {
minSdkVersion 16
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.12'
compile 'pub.devrel:easypermissions:1.0.1'
provided files('unity/classes.jar')
}
PS。覆盖 UnityPlayerActivity 时还有第二个问题,但解决方案是 provided 而不是 compile。
【问题讨论】:
-
你把aar插件放在哪里了?
-
在 Assets/Plugins/Android 中(在 Unity 中)
-
似乎我从 aar 中提取 classes.jar 的解决方案只是部分没问题。我现在想念资源(R类):(
-
我一直在制作 java 插件,并没有遇到与 aar 插件类似的问题。
-
您是否在插件中使用了外部库?我尝试使用 github.com/googlesamples/easypermissions 并且它没有在生成的 AAR 中引用,当我尝试将其 AAR 与我的 AAR 一起添加时,Unity 在 classes.jar 副本上失败。