Android File System & Material Import Bug v1.91

Version: Android v1.91
Device: Samsung Tab S9 Ultra

Hi, I’ve just updated to v1.91 recently and due to the new triplanar & material features I bought the Material Pack from ProCreateFX. While I tried importing it I’ve noticed multiple issues / bugs.

  1. His Material Folder Zip file has multiple subfolders based on the material type. But when I use the import function to import the zip file Nomad v.1.91 seems to throw all in one folder. I don’t see the sub folders. The material list loads also fairly slow, maybe it has to do with it as well.

  2. Because of (1) i tried to copy them manually. But the core android data folder is not accessible. I thought no problem, I can move that to a different place. So I went to the Nomad Main Menu to move the Nomad Main Folder to a new location. Unfortunately that doesn’t work because Nomad Sculpt has not the Android File Permission implemented. Not sure if it’s just since 1.91, but without that permission I can’t move it to any other place in the file system.

There you can see that it doesn’t include any permissions to access the file system structure.

a fix for the folder problem seems to be planned for the next release (Nomad Change Log - #66 by stephomi)

Thank you - that’s good to know. These permissions seem to be missing. (from other apps with file access)

Nomad also sometimes shows write errors because it has no access to the file system.

Little update for problem (1):
Used ADB to access that folder and it looks like the main issue is that Nomad unzipped it without subfolders. Fixed that manually and now they shop up in sub-folders and it also loads much faster after the first initial load.

So the main problem of 1 seems to be in the unzipping process if a zip file with subfolders gets imported.

Zip is not the issue, folder are simply ignored when importing.

If it’s only a few materials you can rename and it’ll create the folder, e.g: “my_folder/my_mat”.
But I’ll improve it to keep folder at import, for other assets as well.

It’s possible that I’ll only look at the common denominator (so if you zip “material/”, “material/” will be ignored).

Which one?
There was an error regarding material (the default one), but it has been fixed on the last Google Play update.

Because in theory you don’t need to.
As long as the user select the folder, write and read permission should be ensured.
I shouldn’t need the “special privilege” thing: Use of All files access (MANAGE_EXTERNAL_STORAGE) permission - Play Console Help

It works for me when I choose a new folder, but if I fiddle with the folder externally I got permission errors as well.
I’m 50% sure it’s an Android issue, file system has always been crap in Android.
I double check my code and even when I revoke the permission and request it back I still have the issue… only new folder works
Had 0 issue with iOS even though I spent way less time on platform specific on iOS.

Anyway… I’ll probably remove the possibility of custom folder for now (for Android only).

If you know an app that can set another folder (and then read/write many files) I’m interesting to take a look.

Nah it’s only for the toolbox, and it’s not an importing thing.
As for the “main Nomad folder”, well… just see above :frowning:

Which one? There was an error regarding material (the default one), but it has been fixed on the last Google Play update.

Maybe it was that one then. I can’t remember where exactly it happened but it was while I was playing around with the material import and testing them. I’ll see if I can re-produce it today.

I’m 50% sure it’s an Android issue, file system has always been crap in Android.

From a User level it’s great. On my iPad I’ve so many more issues and frustrating situations when trying to find the right files, copying over or getting even a nice detailed files list. But I agree that from a development perspective there have been many changes in the last SDK version that can give quite a headache. To some degree also because for some time projects / libraries used “workarounds” that then got blocked from Android 13 and above I think.

Some apps where users can pick a free folder in the external user space and that read and write many files would be Moon Reader, Folder Sync, Solid Explorer, Komikku, ytdlnis .

The last two are open source. But for that feature they don’t seem to use the SAF. Komikku uses different Permissions based on the users API Level.

If it’s too much hassle just leave it as it is. The main reason why I was wanting to move the folder is

a) because of the current import bug which won’t be an issue anymore when it’s fixed
b) to have a way to backup my Nomad structure because I’ve changed many custom keyboard shortcuts and now with the extra materials added as well it would have been nice if I could have just copied over that folder.

I could do it now through File Manager+ & Shizuku, which gives access to the restricted /Android/data folder, but that always feels a bit wrong to me because that’s usually an area the user shouldn’t mess around with. Having an external folder that “supposed” to be used for such things by the dev feels “safer”.

I’ve tried again the current SAF solution.

What i get after creating and selecting the folder in the GUI is:
Could not create file, probably a permission issue: /storage/emulated/0/Nomad/settings.json
Could not create file, probably a permission issue: /storage/emulated/0/Nomad/bindings.json

In the folder I picked it successfully creates all the necessary sub-folder though:

Where it fails when is it when it comes to writing the individual files in it. They main and sub-folders are empty. So it seems to work to some degree - at least for creating the folder structure.

I was talking about user side.
When I download a DCC app I expect to have access to its public folder :

  • on iOS most apps will make the foder public and it’s super easy to access it
  • on Android, eurk, you need a file manager (and at some point none of them were working, I had to test multiple of them)

It’s even worse for development, their File API is crazy annoying, or I’m dumb.
At least Java is easy to handle…

iOS perfect solution: ask the developer if the app folder should be public… and voilà you got an “app folder” with the nice icon at the root of the iOS Files App.
As a user and dev I love it, that’s the only thing I want from Android.
I don’t care about accessing files that the developer doesn’t want me to access.

That’s not the issue that I have on my Tab S9.
When I create from scratch, everything is working fine.
I can save/load, restart the app and even restart the tablet, permission persists.
But… when I rename the main folder, and then rename it back to the same name, I can’t overwrite existing files.

Even when I try to revoke persistable permission and choose back the same folder, the file is protected for good, no way to edit it except externally.
I knew this issue but decided to release it anyway because I thought most people wouldn’t do this, but there are probably other ways to trigger the issue…
I think that maybe another app “takes over” the permission (for example the File Manager App).

By default everything is empty, it’s normal.
You’ll only see “bindings.json” and “settings.json”.