Android SDK 33 - Any potential updates?

Hi, I’m a new Solar2D developer who has taken on an old Corona project for my company. I’ve successfully updated and built multiple versions of our app targeting SDK 32, which I notice is the default in the build.gradle.kts (github search) for Solar2D 2023.36.90 which came out last week.

I’ve tried searching the forums for any info regarding when support for SDK 33 will come out, and I’m also not sure if SDK updates are mentioned explicitly anywhere. I tried forcing the targetSdkVersion in my build.settings file as well with no luck.

2 Likes

I believe targeting the new API is going to be handled with future versions, close to Google Play deadline of 31st of August.

1 Like

Great, thanks for the info!

Anyone with any news on this. Given the deadline is just over a month away. I can see some breaking changes that this can create, and would love to be able to test sooner rather than waiting til the last day

Hopefully by the end of the month

I believe it’s being handled.

Scott- How are we looking on this?

I submitted my pull request here,

For context, I don’t really control or have permission to push features to main repo and create new releases(which is fair and good idea) so I cannot make a promise or time guess on when it will actually be available for people to download and use.

But Vlad said that everything was working great^ (other then the back button which he pointed is an easy fix), you can see the comment in the link above

Also just to clarify this not like the last api requirement and your app will still be available to download on all devices but you just won’t be able to update or submit new apps with 32 after the deadline so there is not a need to rush update just for targeting 33.

No rush? What about apps that need updating regularly?

This happens every year… why are we not prepared in advance?

I’m aware of that I was mainly referring to people who are waiting around for this update.

That doesn’t answer the question… Why are we only doing this now with days before the deadline? Surely we can do this in June/July as this is a known thing with Google?

@Scott_Harrison quick question regarding api 33. it now will require the com.google.android.gms.permission.AD_ID permission. is that automatically added or something that needs to be added manually in the build settings.
The reason i am asking is we do have a few kids apps and this permission in the kids apps need to be switched to OFF.
I seen in discord someone was mentioning switching it off via

manifestChildElements=
{
[[
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
]],
},

Is there a way we can place that into the applicationChildElements in the build settings?

I agree with @anon63346430 on this one and I’m not saying this directly to you @Scott_Harrison since this has been a problem for some time now. More transparency on why we wait until last weeks for those API updates could go a long way.

I just talked to Vlad and he said he would package it and release it with next week :slight_smile:

@chris_raz it depends on what plugins/3rd libraries you are using, if you are not using any analytics or ad plugins you should be fine

Edit: I do agree that we should have done this update sooner, honestly just caught me off guard a little bit and required a bit more work than I thought, we will try to be more on top these changes in the future.

3 Likes

@Scott_Harrison thanks for the answer,
We do use admob which is why I ask, I know in unity we have to disable it in the manifest, but not sure how it would be doable here, and given that won’t be able to update our apps for not being policy compliant with that situation

As I mentioned above is there a way we can have below code available in the applicationChildElements in our build settings file? The uses permission for AD_ID to include the tools:node=“remove” if that would fix it?

manifestChildElements=
{
[[
<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
]],
},

I really appreciate the effort you put in and I’m glad to hear that you’ll take this into account for future releases.

With may exciting adventures 3963 got released - https://solar2d.com/download/3693. It targets Android 33. Biggest change is now Android requires a pop up to ask for notification permissions. It can look like

local options =
{
  appPermission = "android.permission.POST_NOTIFICATIONS",
  urgency = "Critical",
  listener = appPermissionsListener,
  rationaleTitle = "Notification access required",
  rationaleDescription = "Notification access is required to send notifications",
  settingsRedirectTitle = "Alert",
  settingsRedirectDescription = "Without the ability to take notification, this app cannot properly function. Please grant notification access within Settings."
}
native.showPopup( "requestAppPermission", options )

We would incorporate the pop-up into the notification Plugin to be automatic soon, but probably to have it manually triggered.

3 Likes

Hi @vlads thanks for getting this out… We are facing the issue of the required declaration of the AD-ID in the new api. In unity we simply have to add this line into the androidmanifest to remove the AD_ID permission.

<uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

And as per this post java - Action requested: Declare your Ad ID permission - Stack Overflow
you also need to add the xmlns:tools="http://schemas.android.com/tools

Otherwise google was rejecting the app as alot of our apps are in the family program and uses admob. is there away we can add this in the build settings? i dont want to be stuck from 31st of august submitting non compliant apps getting rejected as we have a pretty large userbase and is a matter of urgency for us.

Hi

I use appodeal synced with admob account and must update 10+ apps.

None of my apps is in family program.
Is declaration of the AD-ID required or all I have to do is build again without any changes and upload?

With Solar2d version 3693 I’m encountering “Error code: 256” when building any apps that use Google Play Game Services. I hadn’t encountered this in 3691. My other apps built fine.

In my build.settings these are the lines used by GPGS:

settings = {
    android = 
    {
        googlePlayGamesAppId = "<MY_ID>",
    },
}
plugins = 
{
    ["plugin.gpgs.v2"] =         
    {          
      publisherId="com.coronalabs",
      supportedPlatforms={android=true}        
    },
}

The error string looks like this:

private/var/folders/80/73y5tf3x0019_mb2qykw72980000gn/T/CLtmpZQMBhT/template/app/build.gradle.kts: Error: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]
/private/var/folders/80/73y5tf3x0019_mb2qykw72980000gn/T/CLtmpZQMBhT/template/app/build.gradle.kts: Error: httpclient defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]

   Explanation for issues of type "DuplicatePlatformClasses":
   There are a number of libraries that duplicate not just functionality of
   the Android platform but using the exact same class names as the ones
   provided in Android -- for example the apache http classes. This can lead
   to unexpected crashes.

   To solve this, you need to either find a newer version of the library which
   no longer has this problem, or to repackage the library (and all of its
   dependencies) using something like the jarjar tool, or finally, rewriting
   the code to use different APIs (for example, for http code, consider using
   HttpUrlConnection or a library like okhttp).

2 errors, 0 warnings


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':App:lintVitalRelease'.
>                 Lint found fatal errors while assembling a release target.
  
                  Fix the issues identified by lint, or create a baseline to see only new errors:
                  ```
                  android {
                      lint {
                          baseline = file("lint-baseline.xml")
                      }
                  }
                  ```
  
                  For more details, see https://developer.android.com/studio/write/lint#snapshot
  
                  /private/var/folders/80/73y5tf3x0019_mb2qykw72980000gn/T/CLtmpZQMBhT/template/app/build.gradle.kts: Error: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]
  /private/var/folders/80/73y5tf3x0019_mb2qykw72980000gn/T/CLtmpZQMBhT/template/app/build.gradle.kts: Error: httpclient defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]
  
     Explanation for issues of type "DuplicatePlatformClasses":
     There are a number of libraries that duplicate not just functionality of
     the Android platform but using the exact same class names as the ones
     provided in Android -- for example the apache http classes. This can lead
     to unexpected crashes.
  
     To solve this, you need to either find a newer version of the library which
     no longer has this problem, or to repackage the library (and all of its
     dependencies) using something like the jarjar tool, or finally, rewriting
     the code to use different APIs (for example, for http code, consider using
     HttpUrlConnection or a library like okhttp).
  
  2 errors, 0 warnings

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 50s
Android build failed (256) after 54 seconds
ERROR: Build Failed: Error code: 256