DragonX-cloud / dji_flutter_plugin

A Flutter plugin for DJI SDK.
BSD 3-Clause "New" or "Revised" License
34 stars 8 forks source link

Got DJIsdkmanager class not found error. #15

Closed pranimation closed 1 year ago

pranimation commented 1 year ago

Hey, I am developing an app with this SDK, on android, I have set up everything as the documentation said, but after launching the app I got this error which looks like a dex error somewhere.

Error log

[dji.flutter] PlatformException (PlatformException(NoClassDefFoundError, java.lang.NoClassDefFoundError: Failed resolution of: Ldji/sdk/sdkmanager/DJISDKManager;, Cause: java.lang.ClassNotFoundException: Didn't find class "dji.sdk.sdkmanager.DJISDKManager" on path: DexPathList[[zip file "/data/app/~~hTWImH7qJWAX5H1KdW5xpw==/com.example.my_chat_app-scM9NEThNeRdWC2KL5bJlA==/base.apk"],nativeLibraryDirectories=[/data/app/~~hTWImH7qJWAX5H1KdW5xpw==/com.example.my_chat_app-scM9NEThNeRdWC2KL5bJlA==/lib/x86_64, /data/app/~~hTWImH7qJWAX5H1KdW5xpw==/com.example.my_chat_app-scM9NEThNeRdWC2KL5bJlA==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]], Stacktrace: java.lang.NoClassDefFoundError: Failed resolution of: Ldji/sdk/sdkmanager/DJISDKManager;
                    at cloud.dragonx.plugin.flutter.dji.DjiPlugin.registerApp(DjiPlugin.kt:169)
                    at cloud.dragonx.plugin.flutter.dji.Messages$DjiHostApi.lambda$setup$2(Messages.java:453)
                    at cloud.dragonx.plugin.flutter.dji.Messages$DjiHostApi.$r8$lambda$TcaQldx0VP5bWuSA6Otnan8R4LM(Unknown Source:0)
                    at cloud.dragonx.plugin.flutter.dji.Messages$DjiHostApi$$ExternalSyntheticLambda6.onMessage(Unknown Source:2)
                    at io.flutter.plugin.common.BasicMessageChannel$IncomingMessageHandler.onMessage(BasicMessageChannel.java:217)
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0(DartMessenger.java:319)
at io.flutter.embedding.engine.dart.DartMessenger.$r8$lambda$TsixYUB5E6FpKhMtCSQVHKE89gQ(Unknown Source:0)
at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
                    at android.os.Handler.handleCallback(Handler.java:938)
                    at android.os.Handler.dispatchMessage(Handler.java:99)
                    at android.os.Looper.loopOnce(Looper.java:201)
                    at android.os.Looper.loop(Looper.java:288)
                    at android.app.ActivityThread.main(ActivityThread.java:7839)
                    at java.lang.reflect.Method.invoke(Native Method)
                    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
                Caused by: java.lang.ClassNotFoundException: Didn't find class "dji.sdk.sdkmanager.DJISDKManager" on path: DexPathList[[zip file "/data/app/~~hTWImH7qJWAX5H1KdW5xpw==/com.example.my_chat_app-scM9NEThNeRdWC2KL5bJlA==/base.apk"],nativeLibraryDirectories=[/data/app/~~hTWImH7qJWAX5H1KdW5xpw==/com.example.my_chat_app-scM9NEThNeRdWC2KL5bJlA==/lib/x86_64, /data/app/~~hTWImH7qJWAX5H1KdW5xpw==/com.example.my_chat_app-scM9NEThNeRdWC2KL5bJlA==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]]
                    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
                    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

my Gradle build file.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 33

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.my_chat_app"
        minSdkVersion 24
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         multiDexEnabled true
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }

    packagingOptions {
  exclude 'META-INF/rxjava.properties'
}
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'androidx.core:core-ktx:1.6.0'
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

}

Testing device Android version 31 At this point, I am stuck about what to do. any help would be appreciated.

orenagiv commented 1 year ago

Hey @pranimation I'm sorry... I've only now noticed your issue...

Did you manage to resolve the problem?

upendra-bajpai commented 1 year ago

No, unfortunately, I could not.

orenagiv commented 1 year ago

Hey @upendra-bajpai As a first step, please load your Flutter project in Android Studio - let it "sync" and then see if you have the build.gradle of the android.dji module, and verify that you can see the DJI packages dependencies inside (see attached image).

Screenshot 2022-12-02 at 9 55 06

Let me know if that exists in your project.

pranimation commented 1 year ago

I'll do that and update you asap. Thanks

orenagiv commented 1 year ago

Hey @pranimation I'm closing this for now. If you need - I'll re-open.