Feature Request: Allow custom names/paths for AndroidResources, UILaunchStoryboardName, and xcassets

Currently, in Solar2D projects, these three items:

  • AndroidResources

  • UILaunchStoryboardName = "LaunchScreen"

  • xcassets = "Assets.xcassets"

are expected to sit directly in the project root with fixed names.

I’d like to be able to customize both the names and paths of these three, for example:

proj/bundle/ios/LaunchScreen.storyboardc
proj/bundle/ios/Assets.xcassets
proj/bundle/android/Resources

instead of being forced to keep them at the project root like:

proj/AndroidResources
proj/Assets.xcassets
proj/LaunchScreen.storyboardc

This has been a recurring inconvenience for me over the years of using Solar2D, so I wanted to suggest it as an improvement. Being able to organize these platform-specific resources into subfolders (like bundle/ios/ and bundle/android/) would make project structures much cleaner, especially for larger projects.

Thank you for considering this!

I remember looking up information on those things a few years ago and I’m just going by my memory, so take this with a grain of salt.

For the assets catalogue, I have a vague memory that the xcassets in the iphone table isn’t limited to a bare filename. Solar2D just appends it to your project path and hands that to actool, and actool compiles the catalogue from whatever path you point it at, with the compiled output always going to the app root regardless. So xcassets = "bundle/ios/Assets.xcassets" might work as-is.

I think UILaunchStoryboardName is just written in Info.plist as-is, which would mean you can just set it as well. The build should just copy your .storyboardc into the app while keeping its folder structure, so a file sitting in a subfolder should up in that same subfolder inside the built app.

Now, I don’t remember if Apple documents any rules that the launch storyboard has to be at the bundle root. Still, I don’t know if iOS actually finds it in a subfolder at runtime.

Now, these are just based on my memories. You can give them a try and let me know if they work. :sweat_smile:


I’m fairly certain that AndroidResources name and location are hardcoded into the Gradle build with no build.settings option behind them, so moving or renaming it would definitely require updating the engine.