Adobe-Runtime-Support icon indicating copy to clipboard operation
Adobe-Runtime-Support copied to clipboard

App crash with Adobe air 50.2.4

Open hadisn opened this issue 1 year ago • 35 comments

FATAL EXCEPTION: main

java.lang.UnsatisfiedLinkError: No implementation found for void com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated() (tried Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated and Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated__)
	at com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated(Native Method)
	at com.adobe.air.AIRWindowSurfaceView.surfaceCreated(AIRWindowSurfaceView.java:756)
	at android.view.SurfaceView.updateSurface(SurfaceView.java:1006)
	at android.view.SurfaceView.lambda$new$0$android-view-SurfaceView(SurfaceView.java:160)
	at android.view.SurfaceView$$ExternalSyntheticLambda5.onPreDraw(Unknown Source:2)
	at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1182)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3567)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2328)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9087)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
	at android.view.Choreographer.doCallbacks(Choreographer.java:899)
	at android.view.Choreographer.doFrame(Choreographer.java:832)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
	at android.os.Handler.handleCallback(Handler.java:942)
	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:7872)
	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:936)

hadisn avatar Dec 20 '23 11:12 hadisn

Hi @hadisn - can I check why you've closed this as completed? That's a fairly fundamental error .. if you saw it, I'm curious as to what Android OS version you were on? Plus what build type did you create (AAB vs APK, architecture version, etc)? thanks

ajwfrost avatar Dec 20 '23 12:12 ajwfrost

I closed it because it works when I choose this Option in Android Studio: Run/Debug Configurations -> Installation Options -> Deploy: Apk from app bundle. Default is Default APK (I think before this worked by default options...)

I tested it on multiple OS (Nougat 32 & 64 bit and Android 12).

hadisn avatar Dec 20 '23 12:12 hadisn

But when I test it with android studio virtual device Nexus 5 API 33 i see this error: The app doesn't support ABI architectures of the device. Device ABIs: [x86_64], app ABIs: [armeabi-v7a]. It have only armeabi-v7a version

hadisn avatar Dec 20 '23 12:12 hadisn

How are you building the APK file for your app? The default build of an APK would be to just have the armv7 i.e. armeabi-v7a, but you can configure it to include other ones if you prefer via the app descriptor buildArchitectures list, or select the ABI on the command-line via -arch x64 ..?

Or build the bundle which should normally include all the ABIs anyway, unless you've requested it not to.

Note that there was a bit of an issue with some of this stuff in 50.2.4.1 so it may be worth ensuring you're using 50.2.4.2?

thanks

ajwfrost avatar Dec 20 '23 13:12 ajwfrost

@ajwfrost here is what I did: Open my app in adobe animate cc -> choose -> AIR 50.2.3.6 -> Publish Open AndroidStudioProject in Adndroid Studio -> Generate App Bundle (release version), everything fine and I have all acrhitectures.

If I do all steps same but just choose AIR 50.2.4.2 there is only armeabi-v7a version.

I am using 7zip to open .aab file and navigate to \app-release.aab\base\lib\ and there is only armeabi-v7a folder, but with AIR 50.2.3.6 there are folders: arm64-v8a armeabi-v7a x86 x86_64

Note that I didn't made any changes anywhere except choosing different AIR version. I really don't understand what happening...

Thank you

hadisn avatar Dec 20 '23 13:12 hadisn

Ah, right, yes if you're picking up the AndroidStudioProject and building/deploying from there, then yes it would have had a change due to a bug report where there were unnecessary ABIs being packaged up ..! So to go back to the earlier behaviour, you can add a section into your application descriptor file, within the <android> section, of:

<buildArchitectures>armv7,armv8,x86,x64</buildArchitectures>

thanks

ajwfrost avatar Dec 20 '23 13:12 ajwfrost

<buildArchitectures>armv7,armv8,x86,x64</buildArchitectures>

This works only for AIR 50.2.3.7...not for newer versions of AIR.

hadisn avatar Dec 20 '23 14:12 hadisn

I've noticed this error when we attempt to run a debug build from the generated AndroidStudioProject on a device . I haven't investigated further but let me know if you want more information.

I/MultiDex: VM with version 2.1.0 has multidex support
I/MultiDex: Installing application
I/MultiDex: VM has multidex support, MultiDex support library is disabled.
I/StartupTime1: :1703111562194
I/AIR VERSION: :50.2.3.7
I/DEVICE ARCH: :arm64-v8a
E/appcoins.sampl: No implementation found for void com.adobe.air.AIRWindowSurfaceView.nativeShowOriginalRect() (tried Java_com_adobe_air_AIRWindowSurfaceView_nativeShowOriginalRect and Java_com_adobe_air_AIRWindowSurfaceView_nativeShowOriginalRect__) - is the library loaded, e.g. System.loadLibrary?
E/appcoins.sampl: No implementation found for void com.adobe.air.AIRWindowSurfaceView.nativeShowOriginalRect() (tried Java_com_adobe_air_AIRWindowSurfaceView_nativeShowOriginalRect and Java_com_adobe_air_AIRWindowSurfaceView_nativeShowOriginalRect__) - is the library loaded, e.g. System.loadLibrary?
E/appcoins.sampl: No implementation found for void com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated() (tried Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated and Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated__) - is the library loaded, e.g. System.loadLibrary?
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: air.com.appcoins.sample, PID: 22180
    java.lang.UnsatisfiedLinkError: No implementation found for void com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated() (tried Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated and Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated__) - is the library loaded, e.g. System.loadLibrary?
        at com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated(Native Method)
        at com.adobe.air.AIRWindowSurfaceView.surfaceCreated(AIRWindowSurfaceView.java:753)
        at android.view.SurfaceView.updateSurface(SurfaceView.java:1184)
        at android.view.SurfaceView.lambda$new$0$SurfaceView(SurfaceView.java:175)
        at android.view.SurfaceView$$ExternalSyntheticLambda2.onPreDraw(Unknown Source:2)
        at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1093)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3297)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2126)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8649)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
        at android.view.Choreographer.doCallbacks(Choreographer.java:845)
        at android.view.Choreographer.doFrame(Choreographer.java:780)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
        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:7842)
        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)
I/Process: Sending signal. PID: 22180 SIG: 9
Disconnected from the target VM, address: 'localhost:55630', transport: 'socket'

Seems to be related to the architecture we build the project for.

marchbold avatar Dec 20 '23 22:12 marchbold

Ah .. so it looks like there's a priorities/conflict thing going on here:

armv7,armv8,x86,x64

This works only for AIR 50.2.3.7...not for newer versions of AIR.

So, the change we put in to get the proper support working for buildArchitectures and multi-abi apk files means that we do now have a problem with Animate again. Animate deliberately calls ADT with a parameter -arch armv7 and this is then overriding the other options.

Of course, Animate doesn't (yet?) have an option to build for x64, which is what would be needed here.

There should be a workaround if you wanted to force it to x64: the reason the "all build types" didn't work is because the passed-in value is one of the allowed ones. So if you had:

<buildArchitectures>x64</buildArchitectures>

then this would override the passed-in armv7 request and mean it could then run on the x64 emulator.

I'll see again whether we can get the Adobe team to update Animate for this.... :-(

ajwfrost avatar Dec 20 '23 23:12 ajwfrost

I don't believe that Adobe will update Animate soon, but I trust that You will find solution for this sooner :). It's ok for me to keep current AIR version in my apps as long as Google don't require to update, I hope we will solve something until then.

Thank you

hadisn avatar Dec 21 '23 08:12 hadisn

Hi, I have the same problem and I can't figure it out! I create the Bundle with Animate, but nothing. Any work around?

I tried 50.2.3.8 and the latest one 50.2.4.2

fix89 avatar Jan 04 '24 08:01 fix89

Hi, I have the same problem and I can't figure it out! I create the Bundle with Animate, but nothing. Any work around?

I tried 50.2.3.8 and the latest one 50.2.4.2

Try AIR 50.2.3.6.

hadisn avatar Jan 04 '24 08:01 hadisn

Hey! I have the same problem with 50.2.4.2. What is the work around for this?

Shaunmax avatar Jan 09 '24 16:01 Shaunmax

Hi

If you are trying to create an Android App Bundle via Animate, then it should be possible with 50.2.4.2 to add this to your XML application descriptor file:

<buildArchitectures>armv7,armv8,x86,x64</buildArchitectures>

But if you're using Animate to create an APK file, you would need to omit armv7 (unless you actually want an armv7 build!) - so e.g.

<buildArchitectures>armv8,x64</buildArchitectures>

If this still doesn't help, please share the debugging output from ADT when you package the application, which you can get from the AIR SDK Manager "troubleshooting" tab.

thanks

ajwfrost avatar Jan 09 '24 17:01 ajwfrost

@ajwfrost I am using IntelliJ IDEA, and have added

<android>
    <buildArchitectures>armv7,armv8,x86,x64</buildArchitectures>
    <containsVideo>true</containsVideo>

Shaunmax avatar Jan 09 '24 17:01 Shaunmax

image

also, there is no way to test this, other than uploading it to the play store?

Shaunmax avatar Jan 09 '24 17:01 Shaunmax

Why can't you test it locally? I think the below command should work if you've got a single device (or emulator) connected?

adt -installApp -package your_application.aab

But also - an AAB file (and an APK) is just a zip file, so you can open it up and look into it to try to find if the native libraries are there.

Probably we should also add an "inspect" command to ADT to help with this :-) I think you can open AAB/APK files from Android Studio too, if that helps.

thanks

ajwfrost avatar Jan 09 '24 17:01 ajwfrost

adt -installApp -package

I got this

Unsupported / Missing <platform>
usage:
  adt -checkstore SIGNING_OPTIONS
  adt -certificate -cn <name> ( -ou <org-unit> )? ( -o <org-name> )? ( -c <country> )? ( -validityPeriod <years> )? 2048-RSA <pfx-file> <password>
  adt -license
  adt -help
  adt -migrate SIGNING_OPTIONS ( <air-file-in> | <airn-file-in> ) <output-file>
  adt -package SIGNING_OPTIONS ( -target air )? <output-package> ( <app-desc> FILE_OPTIONS | <input-package> )
  adt -package SIGNING_OPTIONS -target airn <output-package> ( <app-desc> FILE-AND-PATH-OPTIONS | <input-package> )
  adt -package -target ( apk | apk-debug | apk-emulator | apk-captive-runtime ) ( CONNECT_OPTIONS? | LISTEN_OPTIONS? ) ( -airDownloadURL <url> )? ( ARCH_OPTIONS )? SIGNING_OPTIONS <output-package> ( <app-desc> PLATFORM-SDK-OPTION? FILE-AND-PATH-OPTIONS | <input-package> PLATFORM-SDK-OPTION? )
  adt -package -target ( aab | aab-debug ) ( CONNECT_OPTIONS? | LISTEN_OPTIONS? ) (SIGNING_OPTIONS?) <output-package> ( <app-desc> FILE-AND-PATH-OPTIONS | <input-package> ) PLATFORM-SDK-OPTION
  adt -package -target ( ipa-test | ipa-debug | ipa-app-store | ipa-ad-hoc | ipa-test-interpreter | ipa-debug-interpreter | ipa-test-interpreter-simulator | ipa-debug-interpreter-simulator ) ( CONNECT_OPTIONS? | LISTEN_OPTIONS? ) ( -sampler )? ANE_LINK_OPTIONS? AOT_MODE_OPTIONS? EMBED_BITCODE_OPTIONS? SIGNING_OPTIONS <output-package> ( <app-desc> PLATFORM-SDK-OPTION? FILE-AND-PATH-OPTIONS | <input-package> PLATFORM-SDK-OPTION? )
  adt -package SIGNING_OPTIONS? -target native SIGNING_OPTIONS? <output-package> ( <app-desc> FILE-AND-PATH-OPTIONS | <input-package> )
  adt -package SIGNING_OPTIONS? -migrate SIGNING_OPTIONS -target native SIGNING_OPTIONS? <output-package> <app-desc> FILE_OPTIONS PATH-OPTION
  adt -package SIGNING_OPTIONS? -target bundle SIGNING_OPTIONS? ARCH_OPTIONS? <output-package> ( <app-desc> FILE-AND-PATH-OPTIONS | <input-package> )
  adt -package SIGNING_OPTIONS? -target ane <output-package> <ext-desc> ANE_OPTIONS
  adt -prepare <airi-file> <app-desc> FILE_AND_PATH_OPTIONS
  adt -sign SIGNING_OPTIONS ( -target ( air | airn | ane | bundle ) )? ( <airi-file> | <unsigned-ane-file> | <bundle-folder> ) <output-file>
  adt -devices          PLATFORM-OPTION PLATFORM-SDK-OPTION? 
  adt -installRuntime   PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? ( -package <apk-file> )?
  adt -installApp       PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? -package <apk-file | aab-file | ipa-file>
  adt -uninstallRuntime PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION?
  adt -uninstallApp     PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? -appid <app-id>
  adt -launchApp        { PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? ( -debuggerPort port )? -appid <app-id> }
  adt -runtimeVersion   PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION?
  adt -appVersion       PLATFORM-OPTION PLATFORM-SDK-OPTION? DEVICE-OPTION? -appid <app-id>
  adt -version

SIGNING_OPTIONS      : -storetype <type> ( -keystore <store> )? ( -storepass <pass> )? ( -alias <aliasName> )? ( -keypass <pass> )? ( -providerName <name> )? ( -tsa <url> )? ( -provisioning-profile <profile> )?
FILE_OPTIONS         : <fileOrDir>* ( ( -C <dir> <fileOrDir>+ ) | ( -e <file> <path> ) )*
ARCH_OPTIONS         : -arch (armv7 | x86 | x64 | armv8 )
CONNECT_OPTIONS      : -connect <host>
LISTEN_OPTIONS       : -listen <port>
ANE_LINK_OPTIONS     : -hideAneLibSymbols ( yes | no )
ANE_OPTIONS          : -swc <swc> ( -platform <name> (-platformoptions <file>)? <fileOrDir>* ( -C <dir> <fileOrDir>+ )* )*
FILE-AND-PATH-OPTIONS: ( PATH-OPTION | FILE-OPTIONS ) FILE-AND-PATH-OPTIONS?
PATH-OPTION          : ( -extdir <dir> | -resdir <dir> )
PLATFORM-OPTION      : -platform (android | ios)
PLATFORM-SDK-OPTION  : -platformsdk <platform-sdk-home-dir>
DEVICE-OPTION        : -device ( deviceID | ios-simulator )
AOT_MODE_OPTIONS     : -useLegacyAOT ( yes | no )
EMBED_BITCODE_OPTIONS: -embedBitcode ( yes | no )
All commands can be preceeded by '-licenseFile (path)adt.lic' or '-licenseDevID DevID' to override the use of the lib/adt.lic file

Shaunmax avatar Jan 09 '24 17:01 Shaunmax

Which version of AIR SDK is that? It's a little old..? (earlier than May 2022, from what I can see....) You should see (2048-RSA | 4096-RSA) in the certificate usage... we added the auto-detect for platform around October 2022 I think.

But with that one, you could still try:

adt -installApp -platform android -package your_application.aab

ajwfrost avatar Jan 09 '24 18:01 ajwfrost

Which version of AIR SDK is that?

is it possible to check AIR sdk version used by adt?

Shaunmax avatar Jan 09 '24 18:01 Shaunmax

But also - an AAB file (and an APK) is just a zip file, so you can open it up and look into it to try to find if the native libraries are there.

this worked, hope this time there should be no issues!

Shaunmax avatar Jan 09 '24 18:01 Shaunmax

adt -version should give the details for this.. or check the file at the root of the AIR SDK, there's an xml file giving version and build details.

If you did want to use the latest AIR SDK version (50.2.4.2) then there's also a patch version of adt.jar that you can apply on top of that (in the "lib" folder): https://github.com/airsdk/Adobe-Runtime-Support/files/13877375/adt.zip

But we'll also try to get this out in a proper release soon..

thanks

ajwfrost avatar Jan 09 '24 20:01 ajwfrost

Looks like issue still persist in version 50.2.4.4, or I missed something? Thanks

hadisn avatar Mar 28 '24 19:03 hadisn

Looking at this thread .. I'm not sure what the action was here though..? There's still the restrictions in Animate but if the configurations are set up properly, ADT should generate what's requested?

Are you able to clarify the issue you're still seeing?

ajwfrost avatar Mar 28 '24 20:03 ajwfrost

App crash

FATAL EXCEPTION: main

java.lang.UnsatisfiedLinkError: No implementation found for void com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated() (tried Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated and Java_com_adobe_air_AIRWindowSurfaceView_nativeSurfaceCreated__)
	at com.adobe.air.AIRWindowSurfaceView.nativeSurfaceCreated(Native Method)
	at com.adobe.air.AIRWindowSurfaceView.surfaceCreated(AIRWindowSurfaceView.java:756)
	at android.view.SurfaceView.updateSurface(SurfaceView.java:1006)
	at android.view.SurfaceView.lambda$new$0$android-view-SurfaceView(SurfaceView.java:160)
	at android.view.SurfaceView$$ExternalSyntheticLambda5.onPreDraw(Unknown Source:2)
	at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1182)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3567)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2328)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9087)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1231)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
	at android.view.Choreographer.doCallbacks(Choreographer.java:899)
	at android.view.Choreographer.doFrame(Choreographer.java:832)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
	at android.os.Handler.handleCallback(Handler.java:942)
	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:7872)
	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:936)

hadisn avatar Mar 28 '24 20:03 hadisn

Okay yes, so that would normally happen if the correct version of the native library is not found in the APK file. How are you packaging up the APK or AAB file, and do you have any override settings in your "adt.cfg" file or any "buildArchitecture" flags in your app descriptor?

ajwfrost avatar Mar 29 '24 07:03 ajwfrost

In adt.cfg I have path to java, I dont have buildArchitecture flags in app descriptor, should I have? I am using adobe animate tu build android studio project, and from android studio I am building aab.

hadisn avatar Mar 29 '24 07:03 hadisn

So from what I can see:

  1. Building from Animate with ARMv7 checked No build architectures or other overrides from the config file Output only contains ARMv7 binaries

  2. Building from Animate with ARMv7 checked All build architectures set in the app descriptor Output still only contains ARMv7 binaries...

  3. Building from Animate with ARMv7 checked All build architectures set in the app descriptor Additional "CreateAndroidAppBundle=true" setting in config file Output now contains all the binaries, per the build architecture request

So I think unless you override that "Create Android App Bundle" setting, ADT will just do as it's asked by Animate, which is probably the wrong thing to do! Are you able to change that setting and then check in the generated Android Studio project: AndroidStudioProject/app/src/main/jniLibs/ should contain arm64-v8a/ armeabi-v7a/ x86/ x86_64/

Also just to check, what CPU format is the handset/simulator that you're running on?

FYI we are still talking with Adobe about the Animate thing and trying to get these options built into their UI..

thanks

ajwfrost avatar Mar 29 '24 07:03 ajwfrost

Yes you are right, all 3 thing you mentioned are correct. So point is to set CreateAndroidAppBundle=true in adt.cfg? :)

Now it launches app but crash because of distriqt adverts ane, I updated their ane also, need to check this detailed, I have this error:

FATAL EXCEPTION: AdWorker(ClientSingle) #1 Process: air.com...., PID: 29010 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/internal/ads/zzged;

hadisn avatar Mar 29 '24 07:03 hadisn

I noticed that manifest file (updated via apm) now contain this few new lines:

<property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config"/> <uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID"/> <uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION"/> <uses-permission android:name="android.permission.ACCESS_ADSERVICES_TOPICS"/>

but animate gives an error when try to build with these options:

-app.xml: error 402: Current Android sdk version doesn't support property as xml tag

If I remove options above I can build but app crashes...

hadisn avatar Mar 29 '24 09:03 hadisn