Hi Troy,

Thanks for your help! This is how it looks after wiping the /sdcard/sword directory and freshly starting up Bishop:

01-02 21:10:58.863  9973 10061 D libsword.so: libsword: init() begin
01-02 21:10:58.863  9973 10061 D libsword.so: libsword: init() sword config not found, attempting to create parent of: /sdcard/sword/mods.d/globals.conf 01-02 21:10:58.864  9973 10061 D libsword.so: libsword: init() saving basic: /sdcard/sword/mods.d/globals.conf 01-02 21:10:58.864  9973 10061 D libsword.so: libsword: init() sword config STILL not found, attempting to create parent of: /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf 01-02 21:10:58.865  9973 10061 D libsword.so: libsword: init() saving basic: /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf 01-02 21:10:58.866  9973 10061 D libsword.so: libsword: extraConfig Exists at path: /data/user/0/org.crosswire.bishop/files/extraConfig.conf 01-02 21:10:58.866  9973 10061 D libsword.so: libsword: init() creating WebMgr using path: /data/user/0/org.crosswire.bishop/files 01-02 21:10:58.870  9973 10061 I libsword.so: Checking at provided path: /data/user/0/org.crosswire.bishop/files/...
01-02 21:10:58.870  9973 10061 I libsword.so: Found mods.d/

It still fails in the same way as before.

The portion of the code that is involved here is this, right?

SWLOGD("libsword: init() saving basic: %s", confPath.c_str());
                        SWConfig config(confPath.c_str());
                        config["Globals"]["HiAndroid"] = "weeee";
                        config.save();
                }
                if (!FileMgr::existsFile(confPath.c_str())) {
                        baseDir = STORAGE_BASE;
                        confPath = baseDir + "/mods.d/globals.conf";
SWLOGD("libsword: init() sword config STILL not found, attempting to create parent 
of: %s", confPath.c_str());


Maybe the config.save() fails for some other reason?

Meanwhile I have managed to port Ezra Project & node-sword-interface to Android and it works with this device and /sdcard/sword as the base directory for the SWORD engine.

Can you provide me a debug version of Bishop with more debug output around config.save()?

Best regards,
Tobias

On 1/2/21 4:37 PM, Troy A. Griffitts wrote:
It's not used for anything in particular, just as a write test. We used to store (I guess we still do) stuff in a [globals] section like a directory to scan for new module when SWORD first starts up and then it would install those, letting an external program or user just dump stuff to a folder, which would get install the next time their app started up. That was typically used when we supported individual module downloads by users from our webserver, but we discourage that now and instead encourage use of installmgr.

Anyway, you found exactly the problem. SWORD couldn't write to /sdcard/sword.

I suspect maybe file permission?

We should probably all read up on the changes Timmy mentions.

I would try this, remove /sdcard/sword entirely and see what Bishop does.

I have had troubles myself making changes to my sdcard, using adb shell to cd to /sdcard and mkdir xyz, then using a file browser and looking on the sdcard and not seeing my folder. I wonder if it has anything to do with the multiple profile support, i.e., can one user take a photo to the sdcard and then change profiles on the phone and have another user see that photo.

Anyway, it seems we need to read and experiment a bit.

Troy

On January 2, 2021 2:49:52 AM MST, Tobias Klein <cont...@tklein.info> wrote:

    Ok!

    Below is a full dump of adb logcat | grep libsword.

    Seems like this is the key section, though:

    01-02 10:35:25.259  5450  5538 D libsword.so: libsword: init()
    sword config not found, attempting to create parent of:
    /sdcard/sword/mods.d/globals.conf
    01-02 10:35:25.260  5450  5538 D libsword.so: libsword: init()
    saving basic: /sdcard/sword/mods.d/globals.conf
    01-02 10:35:25.260  5450  5538 D libsword.so: libsword: init()
    sword config STILL not found, attempting to create parent of:
    /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf
    01-02 10:35:25.262  5450  5538 D libsword.so: libsword: init()
    saving basic:
    /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf

    What is mods.d/globals.conf used for? It seems like this file is
    missing in my existing SWORD file structure.

    Best regards,
    Tobias

    Complete log:

    01-02 10:35:25.258  5450  5538 I libsword.so: LOOKING UP LOCALE
    DIRECTORY...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking for
    provided SWConfig("sword.conf")...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking working
    directory for sword.conf...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking working
    directory for mods.conf...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking working
    directory for mods.d...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking working
    directory ../library/ for mods.d...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking $SWORD_PATH...
    01-02 10:35:25.258  5450  5538 I libsword.so: Parsing
    /etc/sword.conf:/usr/local/etc/sword.conf...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking for
    /etc/sword.conf...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking for
    /usr/local/etc/sword.conf...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking
    $ALLUSERSPROFILE/Application Data/sword/...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking
    $HOME/Library/Application Support/Sword/...
    01-02 10:35:25.258  5450  5538 I libsword.so: Checking home
    directory for ~/.sword...
    01-02 10:35:25.259  5450  5538 I libsword.so: LOOKING UP LOCALE
    DIRECTORY COMPLETE.
    01-02 10:35:25.259  5450  5538 I libsword.so: LOOKING UP LOCALE
    DIRECTORY...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking for
    provided SWConfig("sword.conf")...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking working
    directory for sword.conf...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking working
    directory for mods.conf...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking working
    directory for mods.d...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking working
    directory ../library/ for mods.d...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking $SWORD_PATH...
    01-02 10:35:25.259  5450  5538 I libsword.so: Parsing
    /etc/sword.conf:/usr/local/etc/sword.conf...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking for
    /etc/sword.conf...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking for
    /usr/local/etc/sword.conf...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking
    $ALLUSERSPROFILE/Application Data/sword/...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking
    $HOME/Library/Application Support/Sword/...
    01-02 10:35:25.259  5450  5538 I libsword.so: Checking home
    directory for ~/.sword...
    01-02 10:35:25.259  5450  5538 I libsword.so: LOOKING UP LOCALE
    DIRECTORY COMPLETE.
    01-02 10:35:25.259  5450  5538 D libsword.so: libsword: init() begin
    01-02 10:35:25.259  5450  5538 D libsword.so: libsword: init()
    sword config not found, attempting to create parent of:
    /sdcard/sword/mods.d/globals.conf
    01-02 10:35:25.260  5450  5538 D libsword.so: libsword: init()
    saving basic: /sdcard/sword/mods.d/globals.conf
    01-02 10:35:25.260  5450  5538 D libsword.so: libsword: init()
    sword config STILL not found, attempting to create parent of:
    /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf
    01-02 10:35:25.262  5450  5538 D libsword.so: libsword: init()
    saving basic:
    /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf
    01-02 10:35:25.263  5450  5538 D libsword.so: libsword:
    extraConfig Exists at path:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf
    01-02 10:35:25.263  5450  5538 D libsword.so: libsword: init()
    creating WebMgr using path: /data/user/0/org.crosswire.bishop/files
    01-02 10:35:25.267  5450  5538 I libsword.so: Checking at provided
    path: /data/user/0/org.crosswire.bishop/files/...
    01-02 10:35:25.267  5450  5538 I libsword.so: Found mods.d/
    01-02 10:35:25.267  5450  5538 D libsword.so: libsword: WebMgr
    c-tor(path: /data/user/0/org.crosswire.bishop/files,
    extraConfPath:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf)
    01-02 10:35:25.267  5450  5538 D libsword.so: libsword:
    WebMgr::c-tor extraConfPath supplied:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf)
    01-02 10:35:25.267  5450  5538 I libsword.so: LOADING MODULE
    CONFIGURATIONS...
    01-02 10:35:25.267  5450  5538 I libsword.so: LOADING MODULE
    CONFIGURATIONS COMPLETE.
    01-02 10:35:25.267  5450  5538 I libsword.so: LOADING MODULE
    LIBRARY...
    01-02 10:35:25.268  5450  5538 D libsword.so: libsword:
    WebMgr::createAllModules
    01-02 10:35:25.268  5450  5538 D libsword.so: libsword:
    WebMgr::createAllModules extraConfig supplied:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf)
    01-02 10:35:25.268  5450  5538 D libsword.so: libsword:
    WebMgr::createAllModules extraConfig exists. Augmenting modules config
    01-02 10:35:25.269  5450  5538 D libsword.so: libsword:
    SWMgr::createAllModules
    01-02 10:35:25.269  5450  5538 I libsword.so: LOADING MODULE
    LIBRARY COMPLETE.
    01-02 10:35:25.269  5450  5538 D libsword.so: libsword: init()
    augmenting modules from:
    /sdcard/Android/data/net.bible.android.activity/files
    01-02 10:35:25.269  5450  5538 D libsword.so: libsword: init()
    augmenting modules from: /sdcard/sword
    01-02 10:35:25.269  5450  5538 D libsword.so: libsword: init()
    adding locales from baseDir.
    01-02 10:35:25.269  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading
    /data/user/0/org.crosswire.bishop/files/locales.d
    01-02 10:35:25.269  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading
    /data/user/0/org.crosswire.bishop/files/uilocales.d
    01-02 10:35:25.269  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading /sdcard/sword/locales.d
    01-02 10:35:25.269  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading /sdcard/sword/uilocales.d
    01-02 10:35:25.269  5450  5538 D libsword.so: libsword: init() end.
    01-02 10:35:25.413  5450  5538 D libsword.so: setting STORAGE_BASE
    to: /data/user/0/org.crosswire.bishop/files
    01-02 10:35:25.416  5450  5538 D libsword.so: libsword: init() begin
    01-02 10:35:25.416  5450  5538 D libsword.so: libsword: init()
    sword config not found, attempting to create parent of:
    /sdcard/sword/mods.d/globals.conf
    01-02 10:35:25.417  5450  5538 D libsword.so: libsword: init()
    saving basic: /sdcard/sword/mods.d/globals.conf
    01-02 10:35:25.417  5450  5538 D libsword.so: libsword: init()
    sword config STILL not found, attempting to create parent of:
    /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf
    01-02 10:35:25.417  5450  5538 D libsword.so: libsword: init()
    saving basic:
    /data/user/0/org.crosswire.bishop/files/mods.d/globals.conf
    01-02 10:35:25.417  5450  5538 D libsword.so: libsword:
    extraConfig Exists at path:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf
    01-02 10:35:25.417  5450  5538 D libsword.so: libsword: init()
    creating WebMgr using path: /data/user/0/org.crosswire.bishop/files
    01-02 10:35:25.418  5450  5538 I libsword.so: Checking at provided
    path: /data/user/0/org.crosswire.bishop/files/...
    01-02 10:35:25.418  5450  5538 I libsword.so: Found mods.d/
    01-02 10:35:25.418  5450  5538 D libsword.so: libsword: WebMgr
    c-tor(path: /data/user/0/org.crosswire.bishop/files,
    extraConfPath:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf)
    01-02 10:35:25.418  5450  5538 D libsword.so: libsword:
    WebMgr::c-tor extraConfPath supplied:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf)
    01-02 10:35:25.418  5450  5538 I libsword.so: LOADING MODULE
    CONFIGURATIONS...
    01-02 10:35:25.419  5450  5538 I libsword.so: LOADING MODULE
    CONFIGURATIONS COMPLETE.
    01-02 10:35:25.419  5450  5538 I libsword.so: LOADING MODULE
    LIBRARY...
    01-02 10:35:25.419  5450  5538 D libsword.so: libsword:
    WebMgr::createAllModules
    01-02 10:35:25.419  5450  5538 D libsword.so: libsword:
    WebMgr::createAllModules extraConfig supplied:
    /data/user/0/org.crosswire.bishop/files/extraConfig.conf)
    01-02 10:35:25.419  5450  5538 D libsword.so: libsword:
    WebMgr::createAllModules extraConfig exists. Augmenting modules config
    01-02 10:35:25.419  5450  5538 D libsword.so: libsword:
    SWMgr::createAllModules
    01-02 10:35:25.419  5450  5538 I libsword.so: LOADING MODULE
    LIBRARY COMPLETE.
    01-02 10:35:25.419  5450  5538 D libsword.so: libsword: init()
    augmenting modules from:
    /sdcard/Android/data/net.bible.android.activity/files
    01-02 10:35:25.420  5450  5538 D libsword.so: libsword: init()
    augmenting modules from: /sdcard/sword
    01-02 10:35:25.420  5450  5538 D libsword.so: libsword: init()
    adding locales from baseDir.
    01-02 10:35:25.420  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading
    /data/user/0/org.crosswire.bishop/files/locales.d
    01-02 10:35:25.420  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading
    /data/user/0/org.crosswire.bishop/files/uilocales.d
    01-02 10:35:25.420  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading /sdcard/sword/locales.d
    01-02 10:35:25.420  5450  5538 D libsword.so:
    LocaleMgr::loadConfigDir loading /sdcard/sword/uilocales.d
    01-02 10:35:25.420  5450  5538 D libsword.so: libsword: init() end.
    01-02 10:35:25.420  5450  5538 D libsword.so: getModInfoList
    returning 0 length array
    01-02 10:35:25.456  5450  5538 W libsword.so: LocaleMgr::getLocale
    failed to find locales
    01-02 10:35:25.460  5450  5538 W libsword.so: LocaleMgr::getLocale
    failed to find locales

    On 1/1/21 10:57 PM, Troy A. Griffitts wrote:
    Hmmm. That's odd. If you can adb logcat your tablet while it is
    plugged into your laptop and have a look at the output when
    Bishop starts up, it might give us a clue. Bishop is pretty noisy
    to the logs. The detection logic is located in init(), here:

    https://crosswire.org/svn/sword/trunk/bindings/java-jni/jni/swordstub.cpp



    On January 1, 2021 2:18:29 PM MST, Tobias Klein
    <cont...@tklein.info> wrote:

        Thanks Troy!

        I see this working with Bishop on my phone (Android 8.1.0).
        There Bishop reads from and writes to /sdcard/sword.

        However, it is not working on my Tablet (Android 10). I do
        have SWORD directories there with this structure:
        /sdcard/sword
        /sdcard/sword/installMgr
        /sdcard/sword/mods.d
        /sdcard/sword/modules

        When starting Bishop on the Tablet it asks for permissions
        and after confirmation it does not show any existing modules
        based on the structure above.

        Best regards,
        Tobias

        Am 1. Januar 2021 21:34:00 schrieb "Troy A. Griffitts"
        <scr...@crosswire.org>:

        Yes, that's exactly right. Upon install, Bishop asks for
        permissions to read and right files to /sdcard/sword/. If it
        is able, it does, if not, it writes to its app’s private
        data area.

        I don't believe there is anything like this available on
        iOS, but I am no expert. I would be interested to learn how
        iOS handles other common data files which have multiple apps
        needing the ability to read and write, like photos.

        Thanks for wanting to coordinate on where files are stored.

        Troy

        On January 1, 2021 1:07:16 PM MST, Tobias Klein
        <cont...@tklein.info> wrote:

            Hi Troy!

            Happy new year!

            Where does Bishop store the SWORD data files on Android?
            I was browsing the filesystem but could not find the
            respective directory.

            I am asking because I am working on Android support for
            node-sword-interface and I wanted to align this and use
            a common place for the SWORD data files. So far I
            thought /sdcard/sword would be the right place.

            Best regards,
            Tobias


-- Sent from my Android device with K-9 Mail. Please excuse my
        brevity.


-- Sent from my Android device with K-9 Mail. Please excuse my brevity.

    _______________________________________________
    sword-devel mailing list:sword-devel@crosswire.org
    http://crosswire.org/mailman/listinfo/sword-devel
    Instructions to unsubscribe/change your settings at above page


--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to