General Modding your Joying/FYT SC9853i unit without root

Search This thread

mastrv

Senior Member
Jul 1, 2010
266
81
It happens when I try to export poweramp settings. The app tries to use documentsui and it is not installed; if I install it, it always fc (no matter what version I use). If I try to import settings, it uses any of my file explorer (I have installed several of them to see if any of them works).

It's not an issue of poweramp: any app which tries to use documentsui finish in fc too: for instance, in titaniumbackup, if I try to change documents selector from file explorer (default) to documents provider, the result is the same.

I attach a logcat I took with poweramp intent. I have no idea of how to interpret it, maybe one of you know what it says.
I was trying this out on my head unit. Those documentsui apk also force close on mine.

I looked at the logcat and there's a lot there. I saw a few issues about permissions for external storage but the app isn't requesting any permissions in the app settings. This looks like the relevant exception:

Code:
09-20 09:07:05.427 I/ActivityManager(3973): START u0 {act=android.intent.action.CREATE_DOCUMENT cat=[android.intent.category.OPENABLE] typ=application/x-poweramp-settings cmp=com.android.documentsui/.picker.PickActivity (has extras)} from uid 10108, pid 5211
09-20 09:07:05.441 I/ActivityManager(3973): ->startActivity for ActivityRecord{adc44cb u0 com.android.documentsui/.picker.PickActivity t3} result:0
09-20 09:07:05.442 D/performance(3973): getRecentTaskThumbnail----->Intent { act=android.intent.action.CREATE_DOCUMENT cat=[android.intent.category.OPENABLE] typ=application/x-poweramp-settings cmp=com.android.documentsui/.picker.PickActivity (has extras) }
09-20 09:07:05.472 I/ActivityManager(3973): Start proc 7168:com.android.documentsui/u0a186 for activity com.android.documentsui/.picker.PickActivity
...
09-20 09:07:05.546 E/BufferQueueProducer(3515): [com.maxmpz.audioplayer/com.maxmpz.widget.base.AlertDialogActivity#0] disconnect: not connected (req=1)
09-20 09:07:05.546 W/libEGL  (5211): EGLNativeWindowType 0xbe8fd008 disconnect failed
09-20 09:07:05.546 D/OpenGLRenderer(5211): endAllActiveAnimators on 0xb9f75c00 (RippleDrawable) with handle 0xbef7e160
09-20 09:07:05.595 W/ActivityManager(3973): Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{166c731 7168:com.android.documentsui/u0a186} (pid=7168, uid=10186) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
09-20 09:07:05.604 E/AndroidRuntime(7168): FATAL EXCEPTION: AsyncTask #1
09-20 09:07:05.604 E/AndroidRuntime(7168): Process: com.android.documentsui, PID: 7168
09-20 09:07:05.604 E/AndroidRuntime(7168): java.lang.RuntimeException: An error occurred while executing doInBackground()
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.AsyncTask$3.done(AsyncTask.java:353)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.run(FutureTask.java:271)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.lang.Thread.run(Thread.java:764)
09-20 09:07:05.604 E/AndroidRuntime(7168): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{166c731 7168:com.android.documentsui/u0a186} (pid=7168, uid=10186) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.Parcel.readException(Parcel.java:2004)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.Parcel.readException(Parcel.java:1950)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.content.IContentService$Stub$Proxy.registerContentObserver(IContentService.java:768)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1924)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1913)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache.loadRootsForAuthority(ProvidersCache.java:256)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache$UpdateTask.handleDocumentsProvider(ProvidersCache.java:477)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache$UpdateTask.doInBackground(ProvidersCache.java:446)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache$UpdateTask.doInBackground(ProvidersCache.java:434)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.AsyncTask$2.call(AsyncTask.java:333)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-20 09:07:05.604 E/AndroidRuntime(7168):     ... 3 more
09-20 09:07:05.605 D/HprofFactory(7168): Create HprofDebugEx
09-20 09:07:05.611 W/ActivityManager(3973):   Force finishing activity com.android.documentsui/.picker.PickActivity
09-20 09:07:05.611 I/System.out(4232): com.android.launcher3
09-20 09:07:05.612 I/System.out(4232): ch.deletescape.lawnchair.plah
09-20 09:07:05.612 I/System.out(4232): com.android.settings
09-20 09:07:05.613 E/timer   (4232): appName Files
09-20 09:07:05.615 D/PowerController.AppState(3973): - reportAppStateEventInfo() E -
09-20 09:07:05.615 D/PowerController.RecogA(3973): handleMessage(MSG_REPORT_EVENT)
09-20 09:07:05.615 I/System.out(4232): com.android.launcher3
09-20 09:07:05.615 I/System.out(4232): ch.deletescape.lawnchair.plah
09-20 09:07:05.615 I/System.out(4232): com.android.settings
09-20 09:07:05.616 E/demo    (4232): mViews size = 1
09-20 09:07:05.616 W/ActivityManager(3973):   Force finishing activity com.maxmpz.audioplayer/com.maxmpz.widget.base.AlertDialogActivity

I think this may be something that PowerAmp may/should be able to address. This exception says:

Code:
java.lang.SecurityException: Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{166c731 7168:com.android.documentsui/u0a186} (pid=7168, uid=10186) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs

Perhaps you should post this on the Poweramp forum and see what comes of it.

I also read something interesting here: https://source.android.com/docs/core/architecture/modular-system/documentsui

Says that starting in Android 12, file browsing through DocumentsUI is disabled. I think that means that when/if Poweramp is to support Android 12, they'll need to modify the code they use for selecting/creating an export file will need to be modified.
 
  • Like
Reactions: Hammerhand.17

Hammerhand.17

Senior Member
May 29, 2010
662
127
Winterfell
I was trying this out on my head unit. Those documentsui apk also force close on mine.

I looked at the logcat and there's a lot there. I saw a few issues about permissions for external storage but the app isn't requesting any permissions in the app settings. This looks like the relevant exception:

Code:
09-20 09:07:05.427 I/ActivityManager(3973): START u0 {act=android.intent.action.CREATE_DOCUMENT cat=[android.intent.category.OPENABLE] typ=application/x-poweramp-settings cmp=com.android.documentsui/.picker.PickActivity (has extras)} from uid 10108, pid 5211
09-20 09:07:05.441 I/ActivityManager(3973): ->startActivity for ActivityRecord{adc44cb u0 com.android.documentsui/.picker.PickActivity t3} result:0
09-20 09:07:05.442 D/performance(3973): getRecentTaskThumbnail----->Intent { act=android.intent.action.CREATE_DOCUMENT cat=[android.intent.category.OPENABLE] typ=application/x-poweramp-settings cmp=com.android.documentsui/.picker.PickActivity (has extras) }
09-20 09:07:05.472 I/ActivityManager(3973): Start proc 7168:com.android.documentsui/u0a186 for activity com.android.documentsui/.picker.PickActivity
...
09-20 09:07:05.546 E/BufferQueueProducer(3515): [com.maxmpz.audioplayer/com.maxmpz.widget.base.AlertDialogActivity#0] disconnect: not connected (req=1)
09-20 09:07:05.546 W/libEGL  (5211): EGLNativeWindowType 0xbe8fd008 disconnect failed
09-20 09:07:05.546 D/OpenGLRenderer(5211): endAllActiveAnimators on 0xb9f75c00 (RippleDrawable) with handle 0xbef7e160
09-20 09:07:05.595 W/ActivityManager(3973): Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{166c731 7168:com.android.documentsui/u0a186} (pid=7168, uid=10186) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
09-20 09:07:05.604 E/AndroidRuntime(7168): FATAL EXCEPTION: AsyncTask #1
09-20 09:07:05.604 E/AndroidRuntime(7168): Process: com.android.documentsui, PID: 7168
09-20 09:07:05.604 E/AndroidRuntime(7168): java.lang.RuntimeException: An error occurred while executing doInBackground()
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.AsyncTask$3.done(AsyncTask.java:353)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.run(FutureTask.java:271)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.lang.Thread.run(Thread.java:764)
09-20 09:07:05.604 E/AndroidRuntime(7168): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{166c731 7168:com.android.documentsui/u0a186} (pid=7168, uid=10186) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.Parcel.readException(Parcel.java:2004)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.Parcel.readException(Parcel.java:1950)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.content.IContentService$Stub$Proxy.registerContentObserver(IContentService.java:768)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1924)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1913)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache.loadRootsForAuthority(ProvidersCache.java:256)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache$UpdateTask.handleDocumentsProvider(ProvidersCache.java:477)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache$UpdateTask.doInBackground(ProvidersCache.java:446)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at com.android.documentsui.roots.ProvidersCache$UpdateTask.doInBackground(ProvidersCache.java:434)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at android.os.AsyncTask$2.call(AsyncTask.java:333)
09-20 09:07:05.604 E/AndroidRuntime(7168):     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
09-20 09:07:05.604 E/AndroidRuntime(7168):     ... 3 more
09-20 09:07:05.605 D/HprofFactory(7168): Create HprofDebugEx
09-20 09:07:05.611 W/ActivityManager(3973):   Force finishing activity com.android.documentsui/.picker.PickActivity
09-20 09:07:05.611 I/System.out(4232): com.android.launcher3
09-20 09:07:05.612 I/System.out(4232): ch.deletescape.lawnchair.plah
09-20 09:07:05.612 I/System.out(4232): com.android.settings
09-20 09:07:05.613 E/timer   (4232): appName Files
09-20 09:07:05.615 D/PowerController.AppState(3973): - reportAppStateEventInfo() E -
09-20 09:07:05.615 D/PowerController.RecogA(3973): handleMessage(MSG_REPORT_EVENT)
09-20 09:07:05.615 I/System.out(4232): com.android.launcher3
09-20 09:07:05.615 I/System.out(4232): ch.deletescape.lawnchair.plah
09-20 09:07:05.615 I/System.out(4232): com.android.settings
09-20 09:07:05.616 E/demo    (4232): mViews size = 1
09-20 09:07:05.616 W/ActivityManager(3973):   Force finishing activity com.maxmpz.audioplayer/com.maxmpz.widget.base.AlertDialogActivity

I think this may be something that PowerAmp may/should be able to address. This exception says:

Code:
java.lang.SecurityException: Permission Denial: opening provider com.android.externalstorage.ExternalStorageProvider from ProcessRecord{166c731 7168:com.android.documentsui/u0a186} (pid=7168, uid=10186) requires that you obtain access using ACTION_OPEN_DOCUMENT or related APIs

Perhaps you should post this on the Poweramp forum and see what comes of it.

I also read something interesting here: https://source.android.com/docs/core/architecture/modular-system/documentsui

Says that starting in Android 12, file browsing through DocumentsUI is disabled. I think that means that when/if Poweramp is to support Android 12, they'll need to modify the code they use for selecting/creating an export file will need to be modified.
I posted it already in Poweramp forum, but it I understood it well A12 limits are not yet imposed.

Even there, it has an option called "legacy file access" to use previous method, but in our units is disabled because it uses this method by default.

I will post your message, though.

I had thought about this issue: why every app asks about access permission but this one doesn't, even when it's specifically for that? But don't know how to solve it
 

Top Liked Posts

  • There are no posts matching your filters.
  • 2
    My AllAppUpdate has a password so I can't extract it with 7zip. Using ApkPack to extract gives me an error with weird symbols. How do I get around this?
    Wrong forum thread if you have a uis7862, or wrong downloaded zip if you really have a sc9853i.
    And read before asking! All the answers are there.
    General FYT based Spreadtrum uis7862 (unisoc ums512) - Q&A, Mods, tips, firmware. post #1 and #2

    Edit: Ah, I see you already did that, but you didn't alter your post.
    1
    It fcs. Any time it's invoked it says "files keeps stopping"
    I am sorry. It is the Android 8.0 documentsui necessary for the PX5 (had the same issue). You need the 8.1 intel version for the sc9853i.
    Please find attached the 8.1 version (com.android.documentsui_8.0.0-26_minAPI26(nodpi)_apkmirror.com.apk). As far as I can remember it's the one I used on my sc9853i.

    If that one doesn't work, please try the Android version 10 one (DocumentsUI-10.apk) which should be "generic android" and also work on lower versions.
    1
    Feeling like total newbie, but none of them works. 8.1 version force closes again, and 10 version can't be installed.

    Edit: have it to be installed as system app or something?
    I can't remember anymore. I'm currently a week on holiday. I will check coming weekend my sc9853i (on the bench). If I still have a working version of the documentsui.apk, I will copy it off the unit and share it.
    1
    Maybe you had the opportunity and have taken a look into your unit?
    I am very sorry.
    Yes, I checked it last Sunday but it was no longer on my unit. I searched (again) my github repositories, my Google drive and my laptops and server, but can't find it anymore.
    1
    Thanks again for bothering.

    I have been searching it and tried several 8.1, 9, & 10 versions, all of them fails. I don't know if it's an issue with permissions or something with my unit.

    Don't you have any idea of what the issue could be? I will keep searching but I don't know how to go further.
    I don't know. I used one on my unit which I "simply" installed and that worked.
    I think I copied one out of a 8.1 firmware for a phone having a sc9853i chip.
  • 11
    See title: Only for SC9853i Joying/FYT 8.1 units.
    Due to some changes in the flashing process since the previous PX5 and Sofia 3GR models it is now partly possible to mod your unit without root.

    Some info to start with:
    (partly from 4pda, partly from a "hint" from @julien_blanche, mostly from own knowledge)

    Contents of a firmware zip:
    Code:
    6521_1.zip           # The zip that contains the boot.img; the system/vendor/oem partitions and a few other things.
    Allapp.pkg           # Special file that contains all FYT apps (actually a special XAR archive.)
    config.txt           # file comparible to the build.prop which can contain additional properties
    lsec6521update       # The binary that really does the update
    oem                  # Folder containing some additional apps
    Stm32ud.bin          # The MCU binary. It is not always in every firmware
    updatecfg.txt        # Contains instructions for the flashing process
    crruptoff            # Special file for "WiFi only". Not in the normal firmwares. Be careful!


    Some commands that can be put inside updatecfg.txt
    Code:
    twipe_all     # Wipe entire system
    twipe_data    # Will wipe data partition (but not /sdcard, internal memory). Wiping the /data partition will wipe all config, all 3rd party apps and updates of system apps. This is the same as a "reset to factory defaults"
    twipe_sd      # Will wipe internal memory /sdcard (but not the data partition)
    dellapp       # Remove all 3rd party apps
    make_updates  # Make an upgrade U-disk boot file
    test             # test unit and firmware before flash

    Some properties that can be put inside config.txt. Say you live in Brazil and you want your locale settings immediately on Brazil, you can add that, for example:
    Code:
    ro.product.locale = pt_BR

    The file crruptoff:
    If you have a unit with a 4G module, but you don't have 4G (or don't want to use it), you can use this file. Put one line in this crruptoff being "fixwifi" and save it to the sdcard/usb-stick you use for flashing.
    You can use it to get rid of the "No SIM" notification in your notification bar.
    Does not work anymore on the later firmwares. Chances are minimal but maybe it might work again "some day".

    The Allapp.pkg
    The Allapp.pkg file is a special XAR archive with a directory structure. You can use ApkPack.exe to create or extract it.
    Folder path: This is where your files are being extracted to, or packed from
    File path: This is the file that is being created (packed), or where the files are extracted from.
    All apks (*.apk) and all libraries (*.so) will be installed as system apks and libraries, which means you can't uninstall them, but on the SC9853i units they are installed under /oem and not under /system.
    Inside this Allapp.pkg you will also find two other files: fyt.prop and skipkillapp.prop.
    The fyt.prop is identical to the build.prop but gives the option to add extra properties or replace/modify properties in the build.prop.
    The skipkillapp.prop contains apps (package names) with values from -15 to 15.
    When going into "deep sleep" the packages not mentioned in this list will be killed. Applications in this list with positive values will absolutely be killed (unstable otherwise??). The ones with higher values first. The ones with values 1 and 0 as last, where the app with value 0 will be the last killed before going into deep sleep.
    The apps with negative values are considered system apps and will not be killed. In this case the most negative number (-15) has the highest priority. My assumption (not tested, not verified) is that negative numbers approaching 0 might be killed if the system needs the memory?
    So in other words: If you do not want that some of your apps are killed, you can add them to this "skipkillapp.prop" by their package name. Say you use @realzoulou's DAB-Z app, you would add a line for DAB-Z (com.zoulou.dab). Or for example if you are a Tasker user, which is normally killed as well:
    Code:
    com.zoulou.dab = -10
    net.dinglisch.android.taskerm = -10
    (I would suggest not using values like -15, -14, -13 to make sure you do not really interfere with the real system apps).
    And then you need to add this file to your own allapp.pkg

    The lsec_updatesh folder and lsec.sh script
    Practical applications:
    • Making patches, an alternative to creating the Allapp.pkg package.
    • Work on all folders in the unit (which Allapp.pkg cannot do).
    • Delete unnecessary files or applications (who uses the calculator app?), or overwite files like the fyt.prop or others.
    • Modify/overwrite config files that are otherwise not modifiable (like bluetooth config?)
    • Setting properties that normally require root/admin rights.
    • Creating backups of your partitions using the dd command. This can be handy on a device for which you do not have a firmware yet as backup.
    • Rooting your unit, also if you do not have a firmware from your supplier.
    • Make a Custom ROM by simply doing all kind of modifications after the "normal" firmware flash.

    See for more info about the "The lsec_updatesh folder and lsec.sh script" in post #228.

    Creating an Allapp.pkg and flash it to your device (post #2)
    Some pre-build flashable images (post #3)
    And if everything goes wrong and your unit ends up in a boot loop or doesn't get past the boot logo. (post #4)
    8
    Creating an Allapp.pkg and flash it to your device

    Use the (English) version of ApkPack.exe (english version attached) to unpack/repack an Allapp.pkg. (It also works with wine on Linux/MacOS)

    (See this youtube link for a really quick & dirty (and unsharp, sorry) video about what scrolls on your screen when flashing such a mini Allapp.pkg)

    (1) Quick example:
    • Create a folder Allapp
    • Copy some wanted apks or mods into the folder.
    • Use the ApkPack.exe to create the Allapp.pkg
    • Simply copy the "Allapp.pkg" and "lsec6521update" onto a clean FAT32 formatted SD-card or USB-stick.
    • Put the USB-stick into your unit and it will recognise the update and flash it to your unit.
    • Other options:
      • Copy the "Allapp.pkg", (optional) "updatecfg.txt", (optional) "config.txt" and "lsec6521update" onto a clean FAT32 formatted SD-card or USB-stick.
      • In my case having a 4G unit without using 4G and wanting to use Google Assistant for calls: Copy the Allapp.pkg, config.txt (see above), crruptoff (see above) and lsec6521update onto a clean FAT32 formatted USB-stick.
      • Note that when NOT using an updatecfg.txt, nothing will be wiped on your unit. Only added/replaced.

    (2) Another example:
    • Create folder Allapp on your pc/laptop
      • add (2019-08-14) main server mod with extended navi_app.txt and "BT to background" hacks. (see my github repo. Be careful to choose the one for your specific firmware date)
      • add BW-RDS radio mod (see my github repo. Only choose version for Android 8.1 if you want full functionality)
      • add oandbackup (dk.jens.backup_305.apk) (Free and open source backup restore apk)
      • add latest MagiskManager-v7.3.2.apk
    • Use apkpack.exe (attached) to create a new Allapp.pkg by selecting the folder to be packaged, the name of the file being Allapp.pkg, and select button "Packed" (sloppy translation from Chinese)
    • Copy created "Allapp.pkg" and "lsec6521update" onto a clean FAT32 formatted USB-stick.
    • Insert in your unit and the flashing process will start (Note: It will mention "Setting to factory defaults" before flash reboot, but it is really not doing that)
    • After the (very quick) flash and normal reboot, you will have 2 new apps and 2 modded apps.

    (3) Example for a FYT compatible SC9853i, like a Sinosmart or Zhan or "unnamed":
    You can also create your own Allapp.pkg, also with a modded Joying apk as the apks are actually identical, but there is one big naming issue to take into account!
    Even though the apks are identical having the same package name, they have different apk names. A normal install will check for the package name and replace the apk with that same package name, whatever its apk name (think of versions or build time stamps behind the the "normal" name). The flashing method simply looks at the apk name and will create an /oem/app/<apk_name>/<apk_name>.apk. In this case versions numbers of build timestamps will create again and again a new folder with the exact same apk and none will work.
    As an example for the radio app:
    • Joying: 190043001_com.syu.radio.apk
    • Sinosmart: 190042001_com.syu.radio.apk
    • "Some" unbranded: 190101001_com.syu.radio.apk
    Again: The apks are exactly the same but have a different name. If you simply flash one next to the other, both will not work anymore as both have the same internal package name being "com.syu.radio". So you have no radio at all.
    So, how to create an Allapp.pkg with a modded Joying apk for your FYT compatible SC9853i unit?
    • Check the name of your unit's radio app (or BT, Video, Music app). (If you don't know how you can use my HWGet_info.apk and open the resulting HWget_info.zip and look inside the "oem_listing.txt")
    • Find the name of the modded Joying app.
    • Rename the modded Joying app to the name of your app. So for example for Joying-> Sinosmart radio app: rename 190043001_com.syu.radio.apk to 190042001_com.syu.radio.apk (Joying to Sinosmart)
    • Create a folder Allapp
    • Copy the modded and now renamed Joying radio apk into the folder (repeat if relevant for other mods).
    • Use the ApkPack.exe to create the Allapp.pkg
    • Simply copy the "Allapp.pkg" and "lsec6521update" onto a clean FAT32 formatted SD-card or USB-stick.
    • Put the USB-stick into your unit and it will recognise the update and flash it to your unit.
    • Also create an Allap.pkg for your original app so you can always flash back the original app if you want (or need) to.
    7
    Some pre-build flashable images

    Only for real Joying SC9853i units. Other FYT compatibles are not supported.
    All SC9853i FYT models are actually the same, but boot images are mostly different and apks have different names. In the latter case you would have 2 identical apks with the same package name, but with a different apk name residing in different folders. Neither of them will work anymore as Android doesn't know which one is the correct one.

    The zips that can be found in this post can be directly unzipped to a clean, empty Fat32 formatted USB-stick or SD-card. You do not need to be rooted and you don't need my JET apk.
    When this USB-stick or SD-card is inserted into your unit, the unit will recognize it as a flashable firmware and start flashing the files to your unit.

    Notes:
    • These flashable firmware files will leave all your installed apps and settings as they are. Only the files in these Allapp.pkg files will be overwritten.
    • The zips containing boot images will only overwrite the boot image. All apps and settings remain as they are.
    • The "combi" zips are just combinations of possible mods and/or boot images. They behave the same as the previous two.
    • The zips that can be downloaded from this post are all on one of my github repositories. You can find it here: SC98531BinRepo.
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Boot images
    2019-11-28 | 20191128-rooted-boot-image (thanks to @rigattoni) | 20191128-normal-boot-image
    2019-09-17 | 20190917-rooted-boot-image | 20190917-normal-boot-image
    2019-08-14 | 20190814-rooted-boot-image (thanks to @julien_blanche)

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Main server apk mods (the 190000000_com.syu.ms.apk)
    The ORG version is the apk as delivered by Joying in their firmwares.
    The ORG_extended is the Joying one including an extended navi_app.txt, extended player_app.txt, extended navi_audio_from_playstatus.txt.
    The NoKill is the extended version where the normal functionality to kill all apps when going into "deep sleep" (turn of ignition), has been disabled.

    2020-04-07 | 2020-04-07-com_syu_ms-ORG | 2020-04-07-com_syu_ms-ORG_extended | 2020-04-07-com_syu_ms-nokill | ( Zips, modified smali files, modified assets text files, some info)
    2019-11-28 | 2019-11-28-com_syu_ms-ORG | 2019-11-28-com_syu_ms-ORG_extended | 2019-11-28-com_syu_ms-NoKill | ( Zips, modified smali files, modified assets text files, some info)
    2019-09-17 | 2019-09-17-com_syu_ms-ORG | 2019-09-17-com_syu_ms-ORG_extended | 2019-09-17-com_syu_ms-NoKill | ( Zips, modified smali files, modified assets text files, some info)
    2019-08-14 | 2019-08-14-com_syu_ms-ORG | 2019-08-14-com_syu_ms-ORG_extended | 2019-08-14-com_syu_ms-NoKill

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Other mods
    There are currently two mods for the radio: One very nice one from user @Soiski71 and one which I made.
    The ORG version in this case is the one delivered with the Joying firmwares.

    Radio | SC98531-Radio-ORG | SC98531-Radio-Mod (preview) | SC98531-Radio-Mod-Soiski71 (preview)

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Combinations
    These are combinations of above files which I found useful. Undoing them can be done by using one of the above ORG zips.
    2019-09-17 | 2019-09-17-radio_mainserver | 2019-09-17-rootedboot_radio_mainserver
    4
    If everything goes wrong and your unit gets in a boot loop or stops on boot logo

    - Download a fresh firmware from the Joying blog.
    - Unzip it to an SD-card/USB-stick (as normal)
    - Put the USB-stick/SD-card in your unit and "push" the Reset (RST) with a paperclip or something like that. When the boot logo appears, reset the unit again. Now the flashing process should start.
    4
    L
    Less praying more reading?