mlcommons / mobile_app_open

Mobile App Open
https://mlcommons.org/en/groups/inference-mobile/
Apache License 2.0
47 stars 23 forks source link

Test Android Play Store version #893

Closed anhappdev closed 2 weeks ago

anhappdev commented 5 months ago

Issue: Our app crashes on devices with Qualcomm or Samsung chipset when installed via Google Play (but no crash if installed manually via APK).


Possible reason: Permission denied when access third-party libraries (*.so files) https://developer.android.com/about/versions/10/behavior-changes-10#execute-permission


Debug / possible solutions:

  1. Let the app download the *.so files (see @mohitmundhragithub's comment) -> Worked on Samsung S23 Ultra

  2. Specify native libs with uses-native-library in AndroidManifest.xml (see PR#929) -> Worked with Samsung S24+ (Q Snapdragon 8 Gen 3 inside) per comment but not on S23 Ultra per comment

  3. Set extractNativeLibs=true and enableUncompressedNativeLibs=false (see PR#930)


Tried:

  1. Deployed to different channels (internal testing, closed testing) did not make a different.
mohitmundhragithub commented 5 months ago

Sorry, unable to upload the logs from my Qualcomm PC. Need to take it up with IT team here... will get back on this.

But from the logs, it seems that the app has been marked as untrusted, and makes fastRPC inaccessible from the application. Sharing a snippet below:

06-19 15:46:13.911 1745 1745 E audit : type=1400 audit(1718792173.908:4128500): avc: denied { getattr } for pid=5702 comm="DartWorker" path="/vendor/dsp" dev="sda17" ino=2 scontext=u:r:untrusted_app_32:s0:c126,c258,c512,c768 tcontext=u:object_r:adsprpcd_file:s0 tclass=dir permissive=0 SEPF_SM-S918B_13_0001 audit_filtered 06-19 15:46:13.911 1745 1745 E audit : type=1400 audit(1718792173.908:4128501): avc: denied { search } for pid=5702 comm="DartWorker" name="/" dev="sda17" ino=2 scontext=u:r:untrusted_app_32:s0:c126,c258,c512,c768 tcontext=u:object_r:adsprpcd_file:s0 tclass=dir permissive=0 SEPF_SM-S918B_13_0001 audit_filtered 06-19 15:46:13.911 1745 1745 E audit : type=1400 audit(1718792173.908:4128502): avc: denied { getattr } for pid=5702 comm="DartWorker" path="/vendor/dsp" dev="sda17" ino=2 scontext=u:r:untrusted_app_32:s0:c126,c258,c512,c768 tcontext=u:object_r:adsprpcd_file:s0 tclass=dir permissive=0 SEPF_SM-S918B_13_0001 audit_filtered

We need to find why this restriction would come after uploading to playstore? What changes in the apk when we upload the app?

anhappdev commented 5 months ago

The only different I can think of now is that the CI version is an APK and the Play Store version is an Android App Bundle (AAB).

anhappdev commented 5 months ago

@mohitmundhragithub Is the crash occurred on any Android devices with the QTI backend or only on the Galaxy S23?

anhappdev commented 3 months ago

I suggest we first release a version with only TFLite backend to the Play Store and see if we still have the issue with untrusted app after the app is live on Play Store.

With only the TFLite backend included in the app, we can also move on with the licensing issue. Other backend vendors can provide their license later when including their backend in the Play Store version.

freedomtan commented 3 months ago

I suggest we first release a version with only TFLite backend to the Play Store and see if we still have the issue with untrusted app after the app is live on Play Store.

With only the TFLite backend included in the app, we can also move on with the licensing issue. Other backend vendors can provide their license later when including their backend in the Play Store version.

Let's do it. Supposedly, this should just work.

Let's hold on putting it to be generally available in Play Store. Keep it in testing for now (before we got EULA).