[sword-devel] Where does Bishop store SWORD files on Android?

Tobias Klein contact at tklein.info
Sat Jan 2 17:57:47 EST 2021


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 <contact at 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
>>     <contact at 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"
>>         <scribe at 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
>>>         <contact at 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 at 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. 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://crosswire.org/pipermail/sword-devel/attachments/20210102/7e5f624a/attachment-0001.html>


More information about the sword-devel mailing list