It would appear that retroarch is unable to use a core when it is on a device that does not have execute permissions. After testing on multiple devices, it seems to be hit or miss as to whether a device will have execute privileges on files in the internal sdcard. From another android application, the /data/data/application directory will have execute permissions, but retroarch can’t load a file from here so there is no way to really configure the cores other than internally in Retroarch.
Would it be possible that if the core is not in the /data/data/com.retroarch/cores folder or when execution of the .so file fails, copy the file to the Retroarch internal space to be executed?
Or if anyone else has any ideas, please let me know. Looking to implement a front end, but there is no way to set the cores up in Retroarch without user interaction so we were attempting to point retroarch directly at the core file when calling the intent so the cores could be managed directly by the frontend based on which systems are configured.
Another option would be to create a handler for a specific intent to “install” a core, when called, it would copy the core.so file into the /data/data/com.retroarch/cores/ internal storage space so it can be properly executed.