godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.17k stars 98 forks source link

Allow changing the Gradle build type for Android Gradle exports #11163

Closed mihe closed 5 days ago

mihe commented 1 week ago

Describe the project you are working on

A mobile project that needs to distribute debug exports on Google Play.

Describe the problem or limitation you are having in your project

It is currently not possible to distribute debug Android exports (built using Gradle builds) on Google Play, even for internal testing purposes, as debug exports imply the debuggable attribute, which seems to cause such builds to be rejected by Google Play Console.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

The fundamental problem here seems to be that you're not allowed to actually pick which underlying Gradle build type (the debuggable debug versus the distributable release) is used, and I can't see any inherent reason for why a debug export must be mapped to the debug Gradle build type (nor why a release export must be mapped to the release Gradle build type).

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

I would suggest adding two new Android export options, called gradle_build/debug_build_type and gradle_build/release_build_type, that can be set to either Debug or Release:

Screenshot

These would then dictate what Gradle build type is used for Gradle-based exports (i.e. when using gradle_build/use_gradle_build).

Note that this does nothing to solve this issue for non-Gradle exports, but seeing how those are inherently using prebuilt APKs I'm not sure what the solution would be there.

If this enhancement will not be used often, can it be worked around with a few lines of script?

I believe this requires changes to EditorExportPlatformAndroid.

Is there a reason why this should be core and not an add-on in the asset library?

I believe this requires changes to EditorExportPlatformAndroid.

mihe commented 5 days ago

Closing this as this approach turned out to not be viable. See discussion in godotengine/godot#99290 for more details.