Я пытался интегрировать пустой проект UniDid в DJI SDK, используя собственный плагин (файл aar), и на прошлой неделе я изо всех сил пытался заставить его работать. Кажется, что DJI mobile sdk не очень хорошо работает с Unity.
Я следовал официальной документации и сумел создать плагин, который успешно подключается к SDK, вопрос в том, буду ли я использовать Unity для перекомпиляции этого плагина и запуска игры, При запуске он просто набрал бы sh (без ошибок gradle или compile).
Dji Mobile SDK
В соответствии с документами, я должен переопределить attachBaseContext () метод для добавления Helper.install (MApplication.this); строка кода.
Это приводит к следующей ошибке:
2020-04-20 12:19:32.727 6473-6473/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kandabi.DroneGame, PID: 6473
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/secneo/sdk/Helper;
at com.kandabi.droneplugin.MApplication.attachBaseContext(MApplication.java:13)
at android.app.Application.attach(Application.java:215)
Необходимое переопределение attachBaseContext:
import com.secneo.sdk.Helper;
public class MApplication extends Application {
@Override
protected void attachBaseContext(Context paramContext) {
super.attachBaseContext(paramContext);
Helper.install(MApplication.this);
}
}
Сборка Gradle:
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
buildToolsVersion "28.0.3"
defaultConfig {
minSdkVersion 23
targetSdkVersion 29
ndk {
// On x86 devices that run Android API 23 or above, if the application is targeted with API 23 or
// above, FFmpeg lib might lead to runtime crashes or warnings.
abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
packagingOptions{
doNotStrip "*/*/libdjivideo.so"
doNotStrip "*/*/libSDKRelativeJNI.so"
doNotStrip "*/*/libFlyForbid.so"
doNotStrip "*/*/libduml_vision_bokeh.so"
doNotStrip "*/*/libyuv2.so"
doNotStrip "*/*/libGroudStation.so"
doNotStrip "*/*/libFRCorkscrew.so"
doNotStrip "*/*/libUpgradeVerify.so"
doNotStrip "*/*/libFR.so"
doNotStrip "*/*/libDJIFlySafeCore.so"
doNotStrip "*/*/libdjifs_jni.so"
doNotStrip "*/*/libsfjni.so"
exclude 'META-INF/rxjava.properties'
}
}
dependencies {
compileOnly files ('libs/unity-classes.jar')
compile ('com.dji:dji-sdk:4.11.2')
provided ('com.dji:dji-sdk-provided:4.11.2')
}
Android Манифест -
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kandabi.droneplugin">
<!-- Permissions and features -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:name="android.hardware.usb.host"
android:required="false" />
<uses-feature
android:name="android.hardware.usb.accessory"
android:required="true" />
<!-- Permissions and features -->
<application
android:name=".MApplication"
android:allowBackup="true"
android:supportsRtl="true">
<!-- DJI SDK -->
<uses-library android:name="com.android.future.usb.accessory" />
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<meta-data
android:name="com.dji.sdk.API_KEY"
android:value="------" />
<activity
android:name="dji.sdk.sdkmanager.DJIAoaControllerActivity"
android:theme="@android:style/Theme.Translucent" >
<intent-filter>
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
android:resource="@xml/accessory_filter" />
</activity>
<!-- DJI SDK -->
<activity android:name=".Controller"
android:configChanges="orientation"
android:screenOrientation="portrait">
</activity>
</application>
</manifest>
Файл Gradle и Android Файл манифеста настроен правильно. Полагаю, я был бы очень признателен, если бы вы мне помогли, так как я довольно сильно озадачен. сейчас же! ?