String IndexOutOfBounds Exception while using extensions in companion app

It looks like despite android14, companion behaves like in older android. Like it doesn't detect the version correctly.

My phone also had this error but only until the middle of last week. Then it went away.

2 Likes

I also have nothing in the private folder. And if I want to check the cache, it shows me the error of lack of permissions "READ_EXTERNAL_STORAGE" which shouldn't be on Android14. But even though Private is empty, the extension in companion works.

As I said several times, my Android 14 test device is a Pixel 7 Pro (Android 14).

With reference to what I wrote here, try this:

On Android 14+ device

  • Create a new project
  • load up one of your own extensions
  • test in companion - should work
  • now build/create a new version of your extension
  • update your existing extension in the project with your newly created version
  • test in companion - should fail - not loading the classes.jar file, or similar runtime error

this would be very similar to most extension developers workflow when testing new features in their extension

As I also said several times, I always remove the Companion folder (to avoid things not being updated correctly/completely) before I test a new version of an extension, reload the browser and then connect to Companion...

Yes, I encountered such an error a week ago when I updated my ListViewPlus extension. Maybe that's why I had this error a week ago. But then it also showed that methods were missing, which were added in the new version.

This has never been necessary before now. I also did a reinstall of the companion app, which cleared the files, and still the problem arises.

This has happened to me several times before.

Regardless, the same error message about classes.jar is happening to other users, who are not doing this.

Why?

You can also write in your PrivateDir. Right?
Or where exactly are the extensions stored? Obviously not in:
/storage/emulated/0/Android/data/edu.mit.appinventor.aicompanion3/files/data/assets/external_comps/


And why didn't we get any issue with Niotron (also on Android 14)?

1 Like

The full system path to the private folder would be like this.
/data/data/edu.mit.appinventor.aicompanion3/files
We can save files to the private folder. But it's not about being able to write, it's about marking the file as read-only. So we can save the file, mark it as read-only and we can't modify it anymore.

@ewpatton When uploading an updated extension, are the old files deleted? Maybe if the classes.jar file is read-only, it can't be overwritten? So the files should be deleted every time companion connects? Or remove the read-only flag, then update the files and set the flag again.

No.
The full path to the PrivateDir with Companion is: file:///storage/emulated/0/Android/data/edu.mit.appinventor.aicompanion3/files/data/

Try:

data/data/edu.mit.appinventor.aicompanion3/files/data

This is a mock private folder for the app loaded into companion. The jar files are loaded into the real private folder of the companion app.

Maybe here:

data/data/edu.mit.appinventor.aicompanion3/files/data/assets/external_comps

1 Like

I'll check it out myself right away.

Whatever that might be. (???)

Certainly not in: storage/emulated/0/

What can already be concluded from this: