Code Monkey home page Code Monkey logo

kiwix / kiwix-xulrunner Goto Github PK

View Code? Open in Web Editor NEW
111.0 111.0 28.0 190.3 MB

[ARCHIVED] Legacy Kiwix desktop solution for Windows/macOS/Linux

Home Page: https://download.kiwix.org/release/kiwix-xulrunner/

License: GNU General Public License v3.0

JavaScript 4.61% CSS 0.32% Python 1.02% Shell 0.22% C 20.85% HTML 0.95% Java 3.68% NSIS 0.35% Ruby 0.10% Objective-C 0.11% Objective-C++ 0.03% C++ 65.88% Batchfile 0.01% Makefile 1.00% M4 0.73% Roff 0.15%
kiwix wikimedia

kiwix-xulrunner's Introduction

Kiwix

Kiwix is an offline reader for Web content. It's especially thought to make Wikipedia available offline. This is done by reading the content of the project stored in a file format ZIM, a high compressed open format with additional meta-data.

COMPILATION INSTRUCTIONS

Take care, the paragraphs are about the target platforms. If you want to build Kiwix for Android on a GNU/Linux system, you should follow the instructions of the "Android" paragraph.

GNU/Linux

Install pre-requisties in your distro, eg, in Debian based:

sudo apt-get install zip pkg-config aptitude
sudo apt-get install libmagic-dev
sudo aptitude install libtool automake

Static (Probably what you need to do if you don't know)

Kiwix uses shared libraries only. A static build of Kiwix is a build which packages the dependencies. Command line tools (indexer, server, etc) are compiled statically.

Run automake

./autogen.sh

Run autoconf

./configure --enable-compileall --enable-staticbins --disable-android;

Download all dependencies

cd src/dependencies;
make;
cd ../..;

Reconfigure with dependencies (Gecko version)

./configure --enable-compileall --enable-staticbins --disable-android;

Compile

make;

Creates tarbal suitable for distribution (no deps)

make diststatic
  • If you want to be able to run directly from your dev repository copy the "xulrunner" directory in the distributation tarball to the "kiwix" sub-directory of your developement tree.

  • Don't try to install with "make install", if you want to have kiwix install on your system just copy the directory in a /usr/local/bin directory.

Dynamic

GNU/Linux build uses shared libraries by default. You will need the following dependencies (also -dev packages) to compile Kiwix for Linux (this list can vary a little bit depending of the GNU/Linux distribution):

  • g++
  • gcc
  • autoconf
  • automake
  • libtool
  • pkg-config
  • liblzma
  • libicu
  • libmicrohttpd
  • zlib
  • libcrypto++
  • cmake
  • wget
  • aria2
  • libuuid
  • libssl
  • libzim
  • libpugixml
  • libctpp2
  • xulrunner

Debian is the only distribution providing natively all these packages. Ubuntu provides most of them, excluding xulrunner and zimlib. You will have to download and install them separatly or run configure --with-static-dep=SELF. Then run the following commands:

Run automake

./autogen.sh;

Configure the compilation check --help for options. Most dependencies accept --with-dep=XX and with-static-dep=XX.a. Static version of libraries are used for building static binaries (server, indexer, etc) Use --with-dep=SELF or --with-static-dep=SELF to trigger fetch and build for the dependency.

./configure;

Compile

make;

Optionaly install on the filesystem

sudo make install;

Mac OSX Universal

WARNING: To build the Mac OS version you will have to install proprietary software which are free of charge. You will also need to build on an Apple Mac computer.

Configure Macports

Install the following tools and libraries

sudo port install autogen +universal pkgconfig +universal wget +universal gmake +universal coreutils +universal libidl +universal autoconf213 +universal icu +universal;

NOTE: the following commands seem to work better on OS X Yosemite, apparently 'universal' is less relevant and various packages are no longer available as universal options.

sudo port  install autogen pkgconfig  wget  gmake  coreutils  libidl  autoconf213  icu;
sudo port -v install aclocal automake libtool autoconf cmake imagemagick
./autogen.sh alt && ./configure --enable-compileall;
cd src/dependencies && make;
make clean;
./autogen.sh alt && ./configure --enable-compileall --enable-compileall --disable-dependency-tracking --with-target-arch=i386;
make;
make distmac;
make clean;
./autogen.sh alt && ./configure --enable-compileall --enable-compileall --disable-dependency-tracking --with-target-arch=x86_64;
make;
make distmac;
make universal;
Debugging tips:
  • components file type can be either Mach-O dynamically linked shared library or Mach-O bundle but above instructions will create dynamic libraries.
  • Shared Object (.so files on Linux) have .dylib extension on OSX.
  • use dtruss to inspect program execution like strace.
  • dyldinfo -lazy_bind | dyldinfo -bind components/zimAccessor.dylib |grep zim
  • nm -gm components/zimAccessor.dylib | nm -u | nm -g
  • otool -L libzim.dylib
  • install_name_tool -change @executable_path/../libicuuc.dylib libicuuc.dylib kiwix-serve
  • lldb

Android

Look at android/README

Windows

  • Install Windows XP SP2+

  • Install Visual Studio Express 2010

  • Install 7-zip

  • Install MozillaBuild 1.6

  • Install ActivePerl

  • Install Ruby

  • Install NSIS 2.46

  • Install nsis_locate

  • Install nsis_uac

  • Replace installed UAC.dll by new one.

  • Install all software in default locations.

  • Change your Windows PATH environment variable:

    • 7zip
    • NSIS
    • ruby
    • Perl
    • mozilla-build\msys\bin\
  • Get shell from c:\mozilla-build\start-msvc10.bat

mkdir -p /c/slave/windows-32b
git clone git://git.code.sf.net/p/kiwix/kiwix kiwix
cd kiwix
./autogen.sh alt
./configure --disable-indexer --enable-jar
make win
make windist
make wininstaller

Contact

Email: [email protected] or [email protected]

Jabber: [email protected]

IRC: #kiwix on irc.freenode.net

You can use IRC web interface on http://chat.kiwix.org/

More... http://www.kiwix.org/wiki/Communication

LEGAL & DISCLAIMER

Read 'COPYING' file

kiwix-xulrunner's People

Contributors

amire80 avatar apolikamixitos avatar borisfba avatar cip avatar dattaz avatar eladkishon avatar fissie avatar geofbot avatar julianharty avatar kardotim avatar kelson42 avatar kiranmathewkoshy avatar legoktm avatar m4tx avatar mgautierfr avatar mhutti1 avatar mvdan avatar rashiq avatar rgaudin avatar rupertthurner avatar schuellerf avatar scimonster avatar seb35 avatar shivamsarodia avatar shmendo avatar souramoo avatar synhershko avatar wilfredor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kiwix-xulrunner's Issues

DownloadManager notification

When you click on an Item in the LibraryActivity.java for now, it will only create one notification for a downloaded item, since the notification ID is hardcoded.
It doesn't handle multiple items being downloaded at the same time.

Implement:

  • A notification for each downloading item
  • Dismiss notification once the download is finished
  • Dismiss notification once the download service is stopped

To launch the DownloadManager, you need to start the LibraryActivity yourself, which at this point is not called nowhere from within the app since it's still very experimental and not integrated yet.

Migrate Search Database to Squidb

Migrate the current "Recent Searches" database to squidb.
We've already started implementing squidb for the download manager, but it's not in use yet.
The current search database can be found in: DatabaseHelper.java, and the new database implementation & the new database models can be found under the the /database/ package.

Move custom app to SD ***with expansion obb file***

Since 1.97 we can move the app to the SD card using Android settings - or a custom app. The problem is that with custom apps like Wikimed or Wikivoyage, which are using an obb file, the obb seems to stay on the device storage. Or the obb file represents 95% of the whole size of the app. This is a problem for many users because they can not install & move the app to an external SD card and therefore often not use the app at all due to a lack of storage.

Android custom app crashing by clicking on "settings"

This happens by using the git master head. Here is the tracelog:

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.kiwix.kiwixcustomwikivoyage/org.kiwix.kiwixcustomwikivoyage.settings.KiwixSettingsActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class org.kiwix.kiwixcustomwikivoyage.settings.SliderPreference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.access$900(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class org.kiwix.kiwixcustomwikivoyage.settings.SliderPreference
at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:443)
at android.preference.GenericInflater.rInflate(GenericInflater.java:483)
at android.preference.GenericInflater.rInflate(GenericInflater.java:495)
at android.preference.GenericInflater.inflate(GenericInflater.java:327)
at android.preference.GenericInflater.inflate(GenericInflater.java:264)
at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:273)
at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:301)
at org.kiwix.kiwixcustomwikivoyage.settings.KiwixSettingsActivity$PrefsFragment.onCreate(KiwixSettingsActivity.java:87)
at android.app.Fragment.performCreate(Fragment.java:2198)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:942)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
at android.app.BackStackRecord.run(BackStackRecord.java:793)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
at android.app.FragmentController.execPendingActions(FragmentController.java:325)
at android.app.Activity.performStart(Activity.java:6267)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
... 9 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.kiwix.kiwixcustomwikivoyage.settings.SliderPreference" on path: DexPathList[[zip file "/data/app/org.kiwix.kiwixcustomwikivoyage-1/base.apk"],nativeLibraryDirectories=[/data/app/org.kiwix.kiwixcustomwikivoyage-1/lib/x86, /data/app/org.kiwix.kiwixcustomwikivoyage-1/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.preference.GenericInflater.createItem(GenericInflater.java:376)
at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:432)
... 24 more
Suppressed: java.lang.ClassNotFoundException: org.kiwix.kiwixcustomwikivoyage.settings.SliderPreference
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 27 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

Parse metafiles with simple xml with Retrofit

Find a way to parse a metafile like this, using simple xml.

An example on how to use simple xml can be found by looking at LibraryNetworkEntity.java.
Convert the MetaLinkNetworkEntity.java for parsing the meta link files to a similar entity.

Currently, the meta links are parsed by setting a custom ConverterFactory for retrofit: MetaLinkConverterFactory.java. It uses regex to find out the mirror urls, which is very suboptimal, since we'd also like to have the hash values and all the other data from the meta files.

tricky sort of the search result

Reported by kelson42 on 2007-01-25 10:16 UTC
if you search "mexico", the article "mexico" is not the first result but 'only' the fourth one !

clickable part of the interface

Reported by kelson42 on 2007-01-25 10:23 UTC
This parts of the interface like (button, search results) should always have the same pointer (like a link, cursor:pointer (CSS)).

Like that, it's visualy easier for the user to identify where he can click (or not).

Kiwix search history should avoid duplicates

Steps to reproduces:
1 - Make a search (and open) on "article 3"
2 - Make a search (and open) on "article 2"
3 - Make a search (and open) on "article 1"
4 - Make a search (and open) on "article 1"
5 - Open the search dialog and type nothing

You get:
A list of suggestions with this order "article3 article2 article1 article1¨

You should get:
A list of suggestions with this order "article3 article2 article1"

Remark:
Probably a small system to avoid duplicates in the list should be done. I would do it that way at each new search (open article) done:
1 - Add the last search to the search history (at the top) like currently.
2 - Remove any further duplicate in the rest of the list/history

Bad application icon

Reported by kelson42 on 2007-01-25 10:07 UTC
With the window binary, the application icon is the default xulrunner one. It should be the wikipedia icon.

Invalid bookmark creation on Android

1 - Click many times on "random" and "bookmark" icons in the action bar (to create dozens of random bookmarks
2 - Open the bookmarks (long clikc on bookmark icon)
3 - Part of the bookmarks listed are listed as content://org.kiwix.zim.base/..... and trying to open these bookmark opens the welcome page of the current ZIM file

The problem probably happens if the HTML is not fully loaded at the time the bookmark icon is clicked. Then the title of the page is probably unknown (HTML not fully parsed).

IMO, if the page is not fully loaded the bookmarking code should be triggered one time the page is loaded (non blocking).

Revamp welcome/help pages

The current welcome and help pages suffer from following weaknesses:

  • It's impossible to come back to the welcome page, one time a file has been loaded
  • Both are ugly
  • They are not localized

For this reason this ticket ask:
1 - Merge both welcome and help pages. The informations should be more or less kept but the way to present it is free
2 - A fancy/nice/beautiful still should be used. A few graphics are available at https://commons.wikimedia.org/wiki/Category:Kiwix and http://www.kiwix.org/wiki/Category:Visuals
3 - One time, this is done, we will create a solution to translate this on www.kiwix.org and sync things. (@Kelson)

Rate dialog should use app icon (instead of Kiwix icon)

A few days ago, an icon was added by @EladKeyshawn to the "Rate the app" dialog. This usability improvment (more fancy UI) generates an awkward situation with "custom apps" like Wikivoyage or Wikimed. The users of these last two apps do not know about Kiwix and will therefore be surprised to see its logo at this place because the "rate me" dialog is not only displayed for the Kiwix app but for all apps (which is really good). This "static" Kiwix icon shoulw be probably replaced by a dynamic solution (always working), for example it would be a benefit tout simply display in place the app logo.

Difficulties to get ./gen-custom-android-build.py working (just after clone)

$ ./build-android-with-native.py customapp/wikivoyage/info.json
Traceback (most recent call last):
File "./build-android-with-native.py", line 395, in
os.chdir(ICU_TMP_TARGET)
OSError: [Errno 2] No such file or directory: '/home/kelson/kiwix/platforms/tmp/target/'
kelson@kelson-VirtualBox:~/kiwix/android$ mkdir -p /home/kelson/kiwix/platforms/tmp/target/

kelson@kelson-VirtualBox:~/kiwix/android$ ./build-android-with-native.py customapp/wikivoyage/info.json

ls -lh build/outputs/apk/org.kiwix.kiwixmobile-*

ls: cannot access build/outputs/apk/org.kiwix.kiwixmobile-*: No such file or directory

Permission problem with Kiwix for Android 1.98

Here is message I have got from a user:

After upgrading kiwix stopped reading the (previously working) zim
files.

It gives the message "To access zim files we need access to your
storage".

Zim files are on the external sd card, Android 4.0.4, Kiwix 1.98

This is not a proof that something goes wrong... but does someone has a clue why this might be happening?

Add search to LibraryActivity

The LibraryActivity list is currently just a huge list of entries and not very usable. Make the list more accessible by making is searchable.
The search should work like the main kiwix search in KiwixMobileActivity.java.

Download manager overflow entry

Add an entry to the LibraryActivity to the main overflow menu in the KiwixMobileActivity.java.
For now there is no starting point for the LibraryActivity.

Crash by click on the bookmark star icon on Android ICS

Here is the log, with filtering out everything which are not error:

E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/kiwix (11775): File removed:
E/kiwix (11775): File removed:
E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/kiwix (11775): File not found: java.io.FileNotFoundException: /data/data/org.kiwix.kiwixmobile/files/8ea04e3d-4d34-e564-783b-6ff812c04d54.txt: open failed: ENOENT (No such file or directory)
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/ActivityThread(11775): Activity org.kiwix.kiwixmobile.KiwixMobileActivity has leaked IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@417c33a0 that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread(11775): android.app.IntentReceiverLeaked: Activity org.kiwix.kiwixmobile.KiwixMobileActivity has leaked IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@417c33a0 that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread(11775): at android.app.LoadedApk$ReceiverDispatcher.(LoadedApk.java:800)
E/ActivityThread(11775): at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:601)
E/ActivityThread(11775): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1650)
E/ActivityThread(11775): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1630)
E/ActivityThread(11775): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1624)
E/ActivityThread(11775): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:430)
E/ActivityThread(11775): at com.immersion.android.haptics.HapticFeedbackManager.setupPackageBroadcastReceiver(HapticFeedbackManager.java:564)
E/ActivityThread(11775): at com.immersion.android.haptics.HapticFeedbackManager.(HapticFeedbackManager.java:108)
E/ActivityThread(11775): at com.immersion.android.HapticFeedbackManagerProxy.initialize(HapticFeedbackManagerProxy.java:90)
E/ActivityThread(11775): at com.immersion.android.HapticFeedbackManagerProxy.access$100(HapticFeedbackManagerProxy.java:30)
E/ActivityThread(11775): at com.immersion.android.HapticFeedbackManagerProxy$1$1.run(HapticFeedbackManagerProxy.java:71)
E/ActivityThread(11775): at java.lang.Thread.run(Thread.java:856)
E/Watchdog( 507): !@sync 52332
E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/Watchdog( 507): !@sync 52333
E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/SurfaceFlinger( 469): #### captureScreenImplLocked
E/EnterpriseContainerManager( 507): ContainerPolicy Service is not yet ready!!!
E/AndroidRuntime(11775): FATAL EXCEPTION: main
E/AndroidRuntime(11775): java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
E/AndroidRuntime(11775): at android.widget.ListView.addHeaderView(ListView.java:264)
E/AndroidRuntime(11775): at android.widget.ListView.addHeaderView(ListView.java:293)
E/AndroidRuntime(11775): at org.kiwix.kiwixmobile.utils.HTMLUtils$HTMLinterface$1.run(HTMLUtils.java:68)
E/AndroidRuntime(11775): at android.os.Handler.handleCallback(Handler.java:725)
E/AndroidRuntime(11775): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(11775): at android.os.Looper.loop(Looper.java:175)
E/AndroidRuntime(11775): at android.app.ActivityThread.main(ActivityThread.java:5279)
E/AndroidRuntime(11775): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(11775): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(11775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
E/AndroidRuntime(11775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
E/AndroidRuntime(11775): at dalvik.system.NativeStart.main(Native Method)
E/SurfaceFlinger( 469): #### captureScreenImplLocked

Overlaying Help screen on first launch of article

Currently when a user first launches the app, selects a zim file and article... I can't see a way in which the user will know there is an option like swiping to the left for the Content drawer (There is no icon or else to indicate its existance).
So i thought it might be helpful to have a one-time help on 1st launch overlaying activity to inform the user of it.

Error Source-Code

raspberry Pi 2B with Raspbian

Steps:

wget http://download.kiwix.org/src/kiwix-src.tar.xz
sudo su
apt-get install libzim0 liblzma5 libctpp2-2
apt-get install make gcc libtool
tar xvf kiwix-src.tar.xz
cd kiwix-0.9/
./autogen.sh

Error:

configure.ac:1836: required file 'static/Makefile.in' not found

Solution:

cd kiwix-0.9/
mkdir static
cp Makefile.in static/
./autogen.sh
./configure
make
make install

P.S.:

Thank you for developing Kiwix. I put it in a youth detention center (Judenvollzugsanstallt) and a forensic psychiatry in the context of vocational training in Germany.

Kiwix for Android crash at /system/framework/arm/boot.oat

Here is the tracelog:


Build fingerprint: 'samsung/ha3gxx/ha3g:5.0/LRX21V/N900XXUEBOK7:user/release-keys'
Revision: '11'
ABI: 'arm'
pid: 23042, tid: 23042, name: wix.kiwixmobile >>> org.kiwix.kiwixmobile <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdead432d
r0 6f1fd868 r1 131a6d40 r2 dead4321 r3 770f7508
r4 000000bd r5 131a6d40 r6 6f1fd868 r7 6f222cb8
r8 13189a60 r9 b4e08000 sl dead4321 fp 13157080
ip becb20bc sp becb3d20 lr 73effa4d pc 73ed1e1c cpsr a00f0030

backtrace:
#00 pc 00055e1c /system/framework/arm/boot.oat
#1 pc 00083a4b /system/framework/arm/boot.oat

completion box stays open

Reported by kelson42 on 2007-01-25 10:36 UTC
If you search "centur", the completion box opens itself and propose "centurion" and "centuries".

If you minimize at this time the application window, this completion box window stays open, alone, in the middle of the screen.

Mobile style sheet for kiwix-serve

When browsing from a mobile device to something running kiwix-serve, it would be nice if the server used the mobile style sheets rather than the desktop ones, which look messed up.

Create a database for current files

As of now, every time you open up the ZimFileSelectActivity, the app scans the entire system for new zim files.
It would be better to save the files that we already know of in a database, and then once you open up the ZimFileSelectActivity, display at least those files, and start refreshing for new content in the background.
Use the current implementation of squidb in the /database/ package for this.

Additionally, the database should not only save the paths to the files, but also the meta data for the zim file (Author, publish date etc.). All this can be found out by using ZimContentProvider.setZimFile()

Kiwix for Android crash if ZIM file path contain "'"

Example of crash log:

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.kiwix.kiwixmobile/org.kiwix.kiwixmobile.SearchActivity}: android.database.sqlite.SQLiteException: near "S": syntax error (code 1): , while compiling: select * from recentsearches where zim = '/storage/extSdCard/ab'S/APKz/Download/wikipedia_en_all_simple_2015-08.zim'

Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(near "S": syntax error (code 1): , while compiling: select * from recentsearches where zim = '/storage/extSdCard/ab'S/APKz/Download/wikipedia_en_all_simple_2015-08.zim')

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2699)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2773)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1434)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5930)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

Caused by: android.database.sqlite.SQLiteException: near "S": syntax error (code 1): , while compiling: select * from recentsearches where zim = '/storage/extSdCard/ab'S/APKz/Download/wikipedia_en_all_simple_2015-08.zim'

Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(near "S": syntax error (code 1): , while compiling: select * from recentsearches where zim = '/storage/extSdCard/ab'S/APKz/Download/wikipedia_en_all_simple_2015-08.zim')

at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1454)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1393)
at org.kiwix.kiwixmobile.utils.DatabaseHelper.getRecentSearches(DatabaseHelper.java:82)
at org.kiwix.kiwixmobile.SearchActivity.onCreate(SearchActivity.java:47)
at android.app.Activity.performCreate(Activity.java:6178)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2652)
... 10 more

The solution: values given to sqlite should be SQL escaped or use any other SQL solution to avoid this kind of problem with special characters.

Impossible to build custom apps with embedded ZIM (anymore)

here is the log at the time the app is launched

03-02 20:13:53.200 31352 31352 D kiwix : Kiwix Custom App starting for the first time. Check Companion ZIM.
03-02 20:13:53.204 31352 31352 D kiwix : Looking for: /data/data/org.kiwix.kiwixcustomwikivoyage/lib/libcontent.so -- filesize: 4802267
03-02 20:13:53.205 31352 31352 D kiwix : ... doesn't exist.
03-02 20:13:53.232 31352 31352 I AppCompatDelegate: The Activity's LayoutInflater already has a Factory installed so we can not install AppCompat's

On the screen, at the start, the following error message appears:
"Your application is corrupted. This might happen when you remove files on the SD Card...."

Save file truncate filename on Android

Steps:
1 - Open a ZIM file
2 - Choose a picture and long click on it

You get
File is saved in the pictures directory but the first two letters of the file are missing

You should get
File with the correct filename

Remark
This bug as already been fixed on time in one of the recent last releases... unfortunately it seems to be broken again. Probably the regresseion was introduced in 1.97.

Font problem

Reported by kelson42 on 2007-01-25 11:31 UTC
A few article need specific fonts to be correctly rendered. That is the case of "United-Nations".

On default windows installations, this font are not installed.

It would be good to be find a solution to be certain that all page are correctly rendered.

if an article start with a number...

Reported by kelson42 on 2007-01-25 10:32 UTC
By searching "centuries", I get all articles about centuries. Ok

But in the search result box, all numbers before "th" are squezed !

Bad binary icon for wikipedia.exe

Reported by kelson42 on 2007-01-25 10:17 UTC
This binary should have an icon (now it's simply the default win binary icon) : the wikipedia one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.