[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