airsdk / Adobe-Runtime-Support

Report, track and discuss issues in Adobe AIR. Monitored by Adobe - and HARMAN - and maintained by the AIR community.
206 stars 11 forks source link

Struggling to compile/debug for Android 14 device #3538

Closed davekomodo closed 4 weeks ago

davekomodo commented 1 month ago

Problem Description

I need to compile an app which targets SDK Version 34 for the Play store. I'm trying to debug on my Android 14 phone over USB and I'm receiving the warning "This app isn't compatible with the latest version of Android". I'm guessing this is because something isn't setup/configured correctly in my descriptor file or project.

Can anyone offer any suggestions as to what might be wrong?

marchbold commented 1 month ago

The message "This app isn't compatible with the latest version of Android" normally implies that you are running a 32bit apk of your application on a 64bit device.

Change the output to be 64bit and it should resolve this.

davekomodo commented 1 month ago

Ok I changed the "arch" option in my asconfig (I'm using the as3mxml extension on VSCode) to "armv8" and the warning has gone so that has fixed that issue, thanks.

I moved on to compiling an aab to test it on Browserstack. When testing on an Android 13 device, everything works no problem. However, when testing the aab on an Android 14 device, our app doesn't seem to have internet access. Is there something I'm missing permission wise for Android 14?

marchbold commented 1 month ago

Have you added the internet permission to your manifest?

  <uses-permission android:name="android.permission.INTERNET"/>
davekomodo commented 1 month ago

I do have that permission yes. Here is my app descriptor as it stands, this works without issue on my Android 14 phone so I'm not sure what the issue might be:

<android>
    <colorDepth>16bit</colorDepth>
    <manifestAdditions><![CDATA[<manifest android:installLocation="auto" >
    <!-- uses-sdk android:minSdkVersion="14" android:targetSdkVersion="34" /-->
    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="34"/>
    <!-- Permission will be merged into the manifest of the hosting app. -->
    <!-- Is required to launch foreground extraction service for targetSdkVersion 28+. -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <!-- Is required to launch foreground extraction service for targetSdkVersion 34+. -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <!-- Required permission for App measurement to run. -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    <uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION"/>
    <uses-permission android:name="android.permission.ACCESS_ADSERVICES_AD_ID"/>
    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
    <!-- Required by older versions of Google Play services to create IID tokens -->
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
    <application>
      <meta-data android:name="android.max_aspect" android:value="2.5"/>
      <meta-data android:name="android.notch_support" android:value="true"/>
      <!-- The activities will be merged into the manifest of the hosting app. -->
      <activity android:name="com.google.android.play.core.common.PlayCoreDialogWrapperActivity" android:exported="false" android:stateNotNeeded="true" android:theme="@style/Theme.PlayCore.Transparent"/>
      <!-- The services will be merged into the manifest of the hosting app. -->
      <service android:name="com.google.android.play.core.assetpacks.AssetPackExtractionService" android:enabled="false" android:exported="true">
        <meta-data android:name="com.google.android.play.core.assetpacks.versionCode" android:value="20201"/>
      </service>
      <service android:name="com.google.android.play.core.assetpacks.ExtractionForegroundService" android:enabled="false" android:exported="false" android:foregroundServiceType="dataSync"/>
      <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
      <activity android:name="com.google.android.gms.common.api.GoogleApiActivity" android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
      <receiver android:name="com.google.android.gms.measurement.AppMeasurementReceiver" android:enabled="true" android:exported="false"/>
      <service android:name="com.google.android.gms.measurement.AppMeasurementService" android:enabled="true" android:exported="false"/>
      <service android:name="com.google.android.gms.measurement.AppMeasurementJobService" android:enabled="true" android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/>
      <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/ga_ad_services_config"/>
      <service android:name="com.google.firebase.components.ComponentDiscoveryService" android:exported="false">
        <meta-data android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar" android:value="com.google.firebase.components.ComponentRegistrar"/>
      </service>
      <activity android:name="com.distriqt.core.auth.AuthorisationActivity" android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
   </application>
</manifest>
]]></manifestAdditions>
  </android>
  <resdir>res</resdir>
  <iPhone>
    <InfoAdditions><![CDATA[
<key>MinimumOSVersion</key>
<string>11.0</string>]]></InfoAdditions>
    <requestedDisplayResolution>high</requestedDisplayResolution>
  </iPhone>
  <extensions>
    <extensionID>com.distriqt.ApplicationRater</extensionID>
    <extensionID>com.distriqt.Core</extensionID>
    <extensionID>com.distriqt.playservices.Base</extensionID>
    <extensionID>com.google.android.play</extensionID>
    <extensionID>com.jetbrains.kotlin</extensionID>
  </extensions>
davekomodo commented 1 month ago

I've looked into this and I think the issue could be down to the fact that we are using RemoteObjects for communication. The FaultEvent coming back from the first remote call is giving a status code of 0 and the error code is Client.Error.MessageSend.

The strange thing is that when I debug on my Android 14 phone, everything works ok. Same when using the simulator. It's just when I upload an aab to BrowserStack that the fault occurs.

Any advice or pointers would be appreciated

marchbold commented 1 month ago

Have you tried a real device through a test channel on the play store or something? BrowserStack is useful but does have issues.

davekomodo commented 1 month ago

No but I think I'm going to have to go down that route. I'll report back

davekomodo commented 4 weeks ago

Tested on 4 Android 14 devices and all is working correctly. Thanks for the help