Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Any plan to support Android 14 with targetSdk = 34 #1315

Open
huongta157 opened this issue Jul 5, 2024 · 45 comments
Open

Any plan to support Android 14 with targetSdk = 34 #1315

huongta157 opened this issue Jul 5, 2024 · 45 comments

Comments

@huongta157
Copy link

Screenshot 2024-07-05 at 08 36 42
Does your team have any plan to support Android 14 with targetSdk = 34?

Note: Currently I using target Sdk = 33 so my app work normal

Thank team so much! I hope to receive answer from your team early.

@dji-dev
Copy link
Contributor

dji-dev commented Jul 5, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

I have not received a plan to adapt to Android 14 yet.
I will inform the team about this information. Thank you for your feedback.

°°°

@huongta157
Copy link
Author

@dji-dev Please inform me if have any update for this
Thank you so much!

@brien-crean
Copy link

brien-crean commented Jul 9, 2024

@dji-dev we would also really appreciate if SDK 4 could be updated to target Android 14 (API level 34), otherwise we will not be able to provide updates to our app after August 31st 2024. Thank you

@dji-dev
Copy link
Contributor

dji-dev commented Jul 10, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

I will convey your strong feedback to the team.

°°°

@Simon-Richards
Copy link

@dji-dev I would also like to make this request as we have an app using your SDK. When we target API level 34, the app crashes with exception:

java.lang.SecurityException: my.package.com: One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
at android.os.Parcel.createException(Parcel.java:3053)
at android.os.Parcel.readException(Parcel.java:3036)
at android.os.Parcel.readException(Parcel.java:2978)
at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6157)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1913)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1853)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1841)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:772)
at dji.sdk.sdkmanager.DJISDKManager.registerProductAccessManager(Unknown Source:36)
at dji.sdk.sdkmanager.DJISDKManager.initParams(Unknown Source:196)
at dji.sdk.sdkmanager.DJISDKManager.initSDKManager(Unknown Source:12)
at dji.sdk.sdkmanager.DJISDKManager.registerApp(Unknown Source:37)
at dji.sdk.sdkmanager.DJISDKManager.access$1300(Unknown Source:0)
at dji.sdk.sdkmanager.DJISDKManager$8.onDownloadSuccess(Unknown Source:6)
at dji.internal.flysafe.fdd.fdd(Unknown Source:19)
at dji.sdk.sdkmanager.DJISDKManager.lambda$registerApp$2(Unknown Source:27)
at dji.sdk.sdkmanager.DJISDKManager$$Lambda$5.run(Unknown Source:2)
at dji.sdksharedlib.util.dgh$fdd.run(Unknown Source:5)

Thanks!

@dji-dev
Copy link
Contributor

dji-dev commented Jul 16, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

The current released MSDK version does not support Android 14. The crashes you are experiencing are also due to this.

°°°

@dscottbot
Copy link

The linked Zendesk ticket isnt working for me. Can anyone explain what that was about? Or has there been any updates? August 31st is sooner than you think... Please DJI.

and we get it, "work expands to fill the time available for its completion", but the rest of us need your work done so we can get our work done before the 31st.

@dji-dev
Copy link
Contributor

dji-dev commented Jul 19, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

Google offers the option to extend, you can apply for it until November. The plans we currently understand may not be completed by August 31st.
image.png

°°°

@huongta157
Copy link
Author

huongta157 commented Aug 2, 2024

@dji-dev The plan is in progress, right?

@dji-lyt
Copy link

dji-lyt commented Aug 2, 2024

Apart from the requirements from the Google Store, do you have any other expectations for Android 14? For example, new features in Android 14? I would like to understand if failing to release the compatible version by August 31st would be a blocking issue. If so, could you please explain why?@huongta157 @Simon-Richards @brien-crean

At this moment, I cannot confirm if a version compatible with Android 14 will be released before August 31st, as the development time is too short. If the app has already been released, you can try applying for an extension with Google.

@huongta157
Copy link
Author

@dji-lyt Thank you for your feedback.

  • I want SDK to worked in Android 14 with targetSdk = 34
  • Yes, I have extended until November, so Can your team release it before November?

@dji-dev
Copy link
Contributor

dji-dev commented Aug 2, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

Could you let us know what you can achieve with targetSdk = 34? Or what value it brings to you?

°°°

@brien-crean
Copy link

@dji-dev @dji-lyt The value it brings is the ability to continue to distribute our app via Google Play. If DJI SDK 4 does not support targetSdk = 34 then we would have to find some other means of distributing our app which is extremely inconvenient and reduces our apps visibility.

We have already been granted an extension up until November 1st, but beyond that our app will be removed from the Play store if this SDK is not updated to support targetSdk = 34.

Will it be possible for SDK 4 to support targetSdk = 34 before November 1st?

@dji-dev
Copy link
Contributor

dji-dev commented Aug 5, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

I will relay the information you provided to our team. However, I have not yet received an estimated timeline. The plan is to adapt to Android 14 in the next version.

°°°

@lachlanwp
Copy link

lachlanwp commented Sep 1, 2024

I have the same problem, however the last update I published to my app on the Google Play store included targetSdk=34 so now I'm stuck with an app deployed that crashes on newer phones with no option to downgrade. This happened because I only tested my app on an older Android device.

I thought perhaps I could fork this repo and make the necessary changes however I find that this repo doesn't contain the source code 👎

I'm pretty upset all-round. If the new v5 DJI SDK supported all the drones, then I would have migrated to it by now - however this isn't the case. It's a pretty minor change to make it work, just call registerReceiver differently depending on the Android SDK version like below:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    registerReceiver(mReceiver, filter, RECEIVER_NOT_EXPORTED);
}else {
    registerReceiver(mReceiver, filter);
}

It's crashing at dji.midware.usb.P3.UsbAccessoryService.registerAoaReceiver. Here's the full stack trace:

java.lang.SecurityException: com.abc.xyz One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't being registered exclusively for system broadcasts
        at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
        at android.os.Parcel.createException(Parcel.java:3053)
        at android.os.Parcel.readException(Parcel.java:3036)
        at android.os.Parcel.readException(Parcel.java:2978)
        at android.app.IActivityManager$Stub$Proxy.registerReceiverWithFeature(IActivityManager.java:6157)
        at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1913)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1853)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1841)
        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:772)
        at dji.midware.usb.P3.UsbAccessoryService.registerAoaReceiver(Unknown:75)
        at dji.midware.dgh.fdd(Unknown:42)
        at dji.sdksharedlib.fdd.fdd(Unknown:6)
        at dji.sdk.sdkmanager.DJISDKManager.initParams(Unknown:15)
        at dji.sdk.sdkmanager.DJISDKManager.initSDKManager(Unknown:12)
        at dji.sdk.sdkmanager.DJISDKManager.registerApp(Unknown:37)
        at dji.sdk.sdkmanager.DJISDKManager.access$1100(Unknown)
        at dji.sdk.sdkmanager.DJISDKManager$8$1.onDownloadSuccess(Unknown:8)
        at dji.internal.jhg.fdd.fdd(Unknown:19)
        at dji.sdk.sdkmanager.DJISDKManager$8.run(Unknown:37)
        at dji.sdksharedlib.dgh.gfd$fdd.run(Unknown:5)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
        at java.lang.Thread.run(Thread.java:1012)

I hope it's fixed soon, there's definitely demand for it!

@dji-lyt
Copy link

dji-lyt commented Sep 2, 2024

@lachlanwp We will address the crashes you are experiencing in the version compatible with Android 14.
We do not recommend configuring targetSDKversion=34 in the current version, so the latest version is only compatible with Android 13.

@mitchrsm
Copy link

mitchrsm commented Sep 2, 2024

same problem here, glad to see DJI team on it, please keep us posted for any update, thanks

@dji-dev
Copy link
Contributor

dji-dev commented Sep 3, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

Of course, I will update the compatibility status of Android 14 here.

°°°

@ngocanhbui1411
Copy link

Hi, my app meets the same problem, every phones with android 14 are crash when we update our app to API 34, (my app is user MSDK4). Please let me know when your team is update MSDK 4 that compatible to android 14, hoping it will be soon because 1/11, all app needs to up to date API 34.

@dji-dev
Copy link
Contributor

dji-dev commented Sep 18, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

I am currently unable to provide an exact timeline, but we will have a version compatible with Android 14 before November.

°°°

@dji-dev
Copy link
Contributor

dji-dev commented Sep 18, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

The MSDK V5 has just released a test version compatible with Android 14. The MSDK V4 will also have a version compatible with Android 14 released in the future.
https://github.com/dji-sdk/Mobile-SDK-Android-V5/tree/dev-sdk-alpha

°°°

@geeksilva97
Copy link

It also crashes at dji.sdk.sdkmanager.DJISDKManager.registerProductAccessManager

@dji-lyt
Copy link

dji-lyt commented Sep 26, 2024

The test version compatible with Android 14 has been released:https://github.com/dji-sdk/Mobile-SDK-Android/tree/sdk_releases/4.18-alpha @brien-crean @geeksilva97 @mitchrsm @lachlanwp

@geeksilva97
Copy link

The test version compatible with Android 14 has been released:https://github.com/dji-sdk/Mobile-SDK-Android/tree/sdk_releases/4.18-alpha @brien-crean @geeksilva97 @mitchrsm @lachlanwp

quick question. READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE are now deprecated. Shouldn't these two be replaced with other permissions in Sample code?

From my tests no Android 14 both will always be denied.

@dji-dev
Copy link
Contributor

dji-dev commented Sep 27, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

The sample code is not exclusively for Android 14; for instance, the system version of the DJI RM500 remote controller is still 7 or 6.

Are you experiencing any issues when running the sample code on Android 14?

°°°

@lachlanwp
Copy link

The test version compatible with Android 14 has been released:https://github.com/dji-sdk/Mobile-SDK-Android/tree/sdk_releases/4.18-alpha @brien-crean @geeksilva97 @mitchrsm @lachlanwp

quick question. READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE are now deprecated. Shouldn't these two be replaced with other permissions in Sample code?

From my tests no Android 14 both will always be denied.

@geeksilva97, I had similar issues and I tracked back via parent commits to work it out. I think you need to keep the READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE in the AndroidManifest.xml, however in the sample code they updated it to be conditional based on Android O.S. version like this:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            permissionArrays = new String[]{
                    Manifest.permission.VIBRATE, // Gimbal rotation
                    Manifest.permission.INTERNET, // API requests
                    Manifest.permission.ACCESS_WIFI_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_COARSE_LOCATION, // Maps
                    Manifest.permission.ACCESS_NETWORK_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_FINE_LOCATION, // Maps
                    Manifest.permission.CHANGE_WIFI_STATE, // Changing between WIFI and USB connection
                    Manifest.permission.BLUETOOTH, // Bluetooth connected products
                    Manifest.permission.BLUETOOTH_ADMIN, // Bluetooth connected products
                    Manifest.permission.READ_PHONE_STATE, // Device UUID accessed upon registration
                    Manifest.permission.RECORD_AUDIO,// Speaker accessory
            };
        } else {//兼容Android 12
            permissionArrays = new String[]{
                    Manifest.permission.VIBRATE, // Gimbal rotation
                    Manifest.permission.INTERNET, // API requests
                    Manifest.permission.ACCESS_WIFI_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_COARSE_LOCATION, // Maps
                    Manifest.permission.ACCESS_NETWORK_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_FINE_LOCATION, // Maps
                    Manifest.permission.CHANGE_WIFI_STATE, // Changing between WIFI and USB connection
                    Manifest.permission.WRITE_EXTERNAL_STORAGE, // Log files
                    Manifest.permission.BLUETOOTH, // Bluetooth connected products
                    Manifest.permission.BLUETOOTH_ADMIN, // Bluetooth connected products
                    Manifest.permission.READ_EXTERNAL_STORAGE, // Log files
                    Manifest.permission.READ_PHONE_STATE, // Device UUID accessed upon registration
                    Manifest.permission.RECORD_AUDIO // Speaker accessory
            };
        }

Here's the source: 2a142f2
See file Sample Code/app/src/main/java/com/dji/sdk/sample/internal/view/MainContent.java

@lachlanwp
Copy link

lachlanwp commented Sep 27, 2024

@dji-dev @dji-lyt I've nearly got it running, however I noticed that somewhere along the updates this was changed:

From this:

...
com.secneo.sdk.Helper.install(MApplication.this);
...

To this:

...
com.cySdkyc.clx.Helper.install(MApplication.this);
...

And the proguard-rules.pro was changed

From this:

...
-keep class com.secneo.** { *; }
...

To this:

...
-keep class com.cySdkyc.** { *; }
...

I tried to update my source, however my app fails as below:

No implementation found for void com.cySdkyc.clx.Helper.i() (tried Java_com_cySdkyc_clx_Helper_i and Java_com_cySdkyc_clx_Helper_i__) - is the library loaded, e.g. System.loadLibrary?

and it won't let me connect to the aircraft so I can go to fly mode.

It's also noted in the official docs here: https://developer-dji-com.translate.goog/doc/mobile-sdk-tutorial/cn/?_x_tr_sl=zh-CN&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=sc

Any help would be greatly appreciated and it might help other folks who are also upgrading.

@geeksilva97
Copy link

Oh, I could handle it. I'm projecting more ppl facing the same thing and not knowing exactly what to do till the search a lot and fall here.

@dji-dev I know the sample is not exclusively for Android 14. But Sample Code should work on Android 14 too.

@geeksilva97
Copy link

@dji-dev any clue for when we have dji-uxsdk too? I'm getting the following error

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeReleaseNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
   > 2 files found with path 'lib/arm64-v8a/libDJICSDKCommon.so' from inputs:
      - /Users/edysilva/.gradle/caches/transforms-3/73ea942cea79d1fa099fdc8f34cc965c/transformed/jetified-dji-sdk-alpha-4.18-a1/jni/arm64-v8a/libDJICSDKCommon.so
      - /Users/edysilva/.gradle/caches/transforms-3/004070d3edf6633274c45e074e8956cf/transformed/jetified-dji-sdk-4.16.2/jni/arm64-v8a/libDJICSDKCommon.so
     If you are using jniLibs and CMake IMPORTED targets, see
     https://developer.android.com/r/tools/jniLibs-vs-imported-targets

app/build.gradle

    implementation ('com.dji:dji-uxsdk:4.16.2', {
        /**
         * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
         * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
         * is called.
         * Both will greatly reducing the size of the APK.
         */
        //exclude module: 'library-anti-distortion'
        exclude module: 'fly-safe-database'
        exclude group: 'com.mapbox.mapboxsdk' // this dependency is no longer needed
        exclude group: 'com.amap.api' //because of problems with GOOGLE PLAY
    })


    implementation ('com.dji:dji-sdk-alpha:4.18-a1',{
        /**
         * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
         * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
         * is called.
         * Both will greatly reducing the size of the APK.
         */
        //exclude module: 'library-anti-distortion'
        exclude module: 'fly-safe-database'
        exclude group: 'com.amap.api' //because of problems with GOOGLE PLAY
    })
    compileOnly ('com.dji:dji-sdk-provided-alpha:4.18-a1')

Looks like dependencies from dji-uxsdk are conflicting with dji-sdk-alpha.

This was not happening with version 'com.dji:dji-sdk:4.17

@dji-lyt
Copy link

dji-lyt commented Sep 29, 2024

The test version compatible with Android 14 has been released:https://github.com/dji-sdk/Mobile-SDK-Android/tree/sdk_releases/4.18-alpha @brien-crean @geeksilva97 @mitchrsm @lachlanwp

quick question. READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE are now deprecated. Shouldn't these two be replaced with other permissions in Sample code?
From my tests no Android 14 both will always be denied.

@geeksilva97, I had similar issues and I tracked back via parent commits to work it out. I think you need to keep the READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE in the AndroidManifest.xml, however in the sample code they updated it to be conditional based on Android O.S. version like this:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            permissionArrays = new String[]{
                    Manifest.permission.VIBRATE, // Gimbal rotation
                    Manifest.permission.INTERNET, // API requests
                    Manifest.permission.ACCESS_WIFI_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_COARSE_LOCATION, // Maps
                    Manifest.permission.ACCESS_NETWORK_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_FINE_LOCATION, // Maps
                    Manifest.permission.CHANGE_WIFI_STATE, // Changing between WIFI and USB connection
                    Manifest.permission.BLUETOOTH, // Bluetooth connected products
                    Manifest.permission.BLUETOOTH_ADMIN, // Bluetooth connected products
                    Manifest.permission.READ_PHONE_STATE, // Device UUID accessed upon registration
                    Manifest.permission.RECORD_AUDIO,// Speaker accessory
            };
        } else {//兼容Android 12
            permissionArrays = new String[]{
                    Manifest.permission.VIBRATE, // Gimbal rotation
                    Manifest.permission.INTERNET, // API requests
                    Manifest.permission.ACCESS_WIFI_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_COARSE_LOCATION, // Maps
                    Manifest.permission.ACCESS_NETWORK_STATE, // WIFI connected products
                    Manifest.permission.ACCESS_FINE_LOCATION, // Maps
                    Manifest.permission.CHANGE_WIFI_STATE, // Changing between WIFI and USB connection
                    Manifest.permission.WRITE_EXTERNAL_STORAGE, // Log files
                    Manifest.permission.BLUETOOTH, // Bluetooth connected products
                    Manifest.permission.BLUETOOTH_ADMIN, // Bluetooth connected products
                    Manifest.permission.READ_EXTERNAL_STORAGE, // Log files
                    Manifest.permission.READ_PHONE_STATE, // Device UUID accessed upon registration
                    Manifest.permission.RECORD_AUDIO // Speaker accessory
            };
        }

Here's the source: 2a142f2 See file Sample Code/app/src/main/java/com/dji/sdk/sample/internal/view/MainContent.java

Thank you for your suggestion. I will forward it to the team.

@dji-lyt
Copy link

dji-lyt commented Sep 29, 2024

@dji-dev any clue for when we have dji-uxsdk too? I'm getting the following error

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeReleaseNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
   > 2 files found with path 'lib/arm64-v8a/libDJICSDKCommon.so' from inputs:
      - /Users/edysilva/.gradle/caches/transforms-3/73ea942cea79d1fa099fdc8f34cc965c/transformed/jetified-dji-sdk-alpha-4.18-a1/jni/arm64-v8a/libDJICSDKCommon.so
      - /Users/edysilva/.gradle/caches/transforms-3/004070d3edf6633274c45e074e8956cf/transformed/jetified-dji-sdk-4.16.2/jni/arm64-v8a/libDJICSDKCommon.so
     If you are using jniLibs and CMake IMPORTED targets, see
     https://developer.android.com/r/tools/jniLibs-vs-imported-targets

app/build.gradle

    implementation ('com.dji:dji-uxsdk:4.16.2', {
        /**
         * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
         * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
         * is called.
         * Both will greatly reducing the size of the APK.
         */
        //exclude module: 'library-anti-distortion'
        exclude module: 'fly-safe-database'
        exclude group: 'com.mapbox.mapboxsdk' // this dependency is no longer needed
        exclude group: 'com.amap.api' //because of problems with GOOGLE PLAY
    })


    implementation ('com.dji:dji-sdk-alpha:4.18-a1',{
        /**
         * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
         * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
         * is called.
         * Both will greatly reducing the size of the APK.
         */
        //exclude module: 'library-anti-distortion'
        exclude module: 'fly-safe-database'
        exclude group: 'com.amap.api' //because of problems with GOOGLE PLAY
    })
    compileOnly ('com.dji:dji-sdk-provided-alpha:4.18-a1')

Looks like dependencies from dji-uxsdk are conflicting with dji-sdk-alpha.

This was not happening with version 'com.dji:dji-sdk:4.17

The UXSDK currently does not have an update plan. You may try replacing the MSDK module in the UXSDK with the latest alpha version.
Like this:https://sdk-forum.dji.net/hc/en-us/articles/5318331701657-How-to-solve-the-MSDK-and-UXSDK-version-inconsistency-problem

@mitchrsm
Copy link

I managed to successfully compile and run my app on android 14 device with targetSdkVersion 34 and DJI SDK 4.18-a1 and uxsdk 4.16.2 (I have not tried the sample app). I still haven’t fully tested my app but don’t expect further problems.

@geeksilva97
Copy link

I managed to successfully compile and run my app on android 14 device with targetSdkVersion 34 and DJI SDK 4.18-a1 and uxsdk 4.16.2 (I have not tried the sample app). I still haven’t fully tested my app but don’t expect further problems.

That's interesting. Have you done any specific configuration?

@geeksilva97
Copy link

@dji-dev any clue for when we have dji-uxsdk too? I'm getting the following error

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:mergeReleaseNativeLibs'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
   > 2 files found with path 'lib/arm64-v8a/libDJICSDKCommon.so' from inputs:
      - /Users/edysilva/.gradle/caches/transforms-3/73ea942cea79d1fa099fdc8f34cc965c/transformed/jetified-dji-sdk-alpha-4.18-a1/jni/arm64-v8a/libDJICSDKCommon.so
      - /Users/edysilva/.gradle/caches/transforms-3/004070d3edf6633274c45e074e8956cf/transformed/jetified-dji-sdk-4.16.2/jni/arm64-v8a/libDJICSDKCommon.so
     If you are using jniLibs and CMake IMPORTED targets, see
     https://developer.android.com/r/tools/jniLibs-vs-imported-targets

app/build.gradle

    implementation ('com.dji:dji-uxsdk:4.16.2', {
        /**
         * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
         * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
         * is called.
         * Both will greatly reducing the size of the APK.
         */
        //exclude module: 'library-anti-distortion'
        exclude module: 'fly-safe-database'
        exclude group: 'com.mapbox.mapboxsdk' // this dependency is no longer needed
        exclude group: 'com.amap.api' //because of problems with GOOGLE PLAY
    })


    implementation ('com.dji:dji-sdk-alpha:4.18-a1',{
        /**
         * Uncomment the "library-anti-distortion" if your app does not need Anti Distortion for Mavic 2 Pro and Mavic 2 Zoom.
         * Uncomment the "fly-safe-database" if you need database for release, or we will download it when DJISDKManager.getInstance().registerApp
         * is called.
         * Both will greatly reducing the size of the APK.
         */
        //exclude module: 'library-anti-distortion'
        exclude module: 'fly-safe-database'
        exclude group: 'com.amap.api' //because of problems with GOOGLE PLAY
    })
    compileOnly ('com.dji:dji-sdk-provided-alpha:4.18-a1')

Looks like dependencies from dji-uxsdk are conflicting with dji-sdk-alpha.
This was not happening with version 'com.dji:dji-sdk:4.17

The UXSDK currently does not have an update plan. You may try replacing the MSDK module in the UXSDK with the latest alpha version. Like this:https://sdk-forum.dji.net/hc/en-us/articles/5318331701657-How-to-solve-the-MSDK-and-UXSDK-version-inconsistency-problem

I can't do this. Was anything different done in the packaging? It's really weird 4.17 works fine but 4.18 doesn't

@lachlanwp
Copy link

@dji-dev where does com.cySdkyc.clx come from? Is it in one of the dependencies in the build.gradle file? Which one?

Thanks for all your hard work 👍

@lachlanwp
Copy link

lachlanwp commented Oct 1, 2024

@dji-dev @dji-lyt

I was able to solve my issue. It has nothing to do with com.cySdkyc.clx (although it is noted I needed to change usage of com.secneo.sdk.Helper to com.cySdkyc.clx.Helper) - the problem was that I used this in my application:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            registerReceiver(mReceiver, filter, RECEIVER_NOT_EXPORTED);
        }else {
            registerReceiver(mReceiver, filter);
        }

where mReceiver was responsible for updating my application UI to allow the user to continue to 'go fly'

    protected BroadcastReceiver mReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            refreshSDKRelativeUI();
        }
    };

I changed RECEIVER_NOT_EXPORTED to RECEIVER_EXPORTED and now it's working.

I'm now able to use my app and all functionality with the Alpha version of the SDK on Android 14.0.

To clarify for others having trouble, I don't use the UXSDK anywhere in my app.

Thanks DJI for your extra support and for making this possible, it means a lot!

@dscottbot
Copy link

dscottbot commented Oct 2, 2024

com.secneo.sdk.Helper to com.cySdkyc.clx.Helper

Where did you find this? when I downloaded the Mobile-SDK-Android-sdk_releases-4.18-alpha files it was still referencing com.secneo.sdk.Helper. At least with what I saw. And like, everywhere else was claiming that, secneo was correct.

if it wasnt for your comment, SAVING THE DAY, I would have been screwed, I got really stuck on that part. Thank you so much for clearing this up!

EDIT

Note: Please change "com.secneo.sdk.Helper.install(this)" in MSDK application initialization to "com.cySdkyc.clx.Helper.install(this)", otherwise MSDK will not run

Update. I see in the link you posted it mentions making the change for the MSDK 5. I guess my new question is how did you know that the MDSK 5 stuff applied to the Mobile-SDK v4.18 stuff as well?

WORKING

Thanks @lachlanwp for your comment about Receiver_exported. With that change I was able to get my code running on both Android 13 & 14 with Target SDK 34.

I wasnt getting an error showing up in Android Studio, instead my app just crashed saying "One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified when a receiver isn't".

Swapping things around to something like this was the last missing part.

mainActivity.registerReceiver(usbEventsReceiver, usbEvents, Context.RECEIVER_EXPORTED);


Thanks Everyone and Thanks @dji-dev

@ngocanhbui1411
Copy link

The test version compatible with Android 14 has been released:https://github.com/dji-sdk/Mobile-SDK-Android/tree/sdk_releases/4.18-alpha @brien-crean @geeksilva97 @mitchrsm @lachlanwp

Hi there, did this new SDK version support for Android 14?

@dji-lyt
Copy link

dji-lyt commented Oct 8, 2024

The test version compatible with Android 14 has been released:https://github.com/dji-sdk/Mobile-SDK-Android/tree/sdk_releases/4.18-alpha @brien-crean @geeksilva97 @mitchrsm @lachlanwp

Hi there, did this new SDK version support for Android 14?

Yes, it is compatible with Android 14.

@huongta157
Copy link
Author

@dji-dev @dji-lyt Does your team have any plan to release version 4.18?

@dji-dev
Copy link
Contributor

dji-dev commented Oct 15, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

We are planning to release version 4.18 this month.

°°°

@dji-lyt
Copy link

dji-lyt commented Oct 25, 2024

The MSDK 4.18 has been officially released.
image

@huongta157
Copy link
Author

@dji-lyt thank you so much

@huongta157
Copy link
Author

@dji-lyt how about sdk V5?

@dji-dev
Copy link
Contributor

dji-dev commented Oct 28, 2024

Agent comment from yating.liao in Zendesk ticket #111263:

The Mobile SDK version 5.11 will also be released soon.

°°°

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants