I checked out coolreader 3 from git repository http://sourceforge.net/projects/crengine/. I try to build it in eclipse, but when running it crashes with the following error:
The application Cool Reader (process.org.coolreader) has stopped unexpectedly. Please try again.
Here is the red part from logcat:
08-27 02:54:24.553: ERROR/AndroidRuntime(223): Uncaught handler: thread BackgroundThread44c32540 exiting due to uncaught exception 08-27 02:54:24.583: ERROR/AndroidRuntime(223): java.lang.UnsatisfiedLinkError: Library cr3engine-45-15 not found 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at java.lang.Runtime.loadLibrary(Runtime.java:489) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at java.lang.System.loadLibrary(System.java:557) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at org.coolreader.crengine.Engine.installLibrary(Engine.java:837) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at org.coolreader.crengine.Engine.init(Engine.java:745) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at org.coolreader.crengine.Engine.access$10(Engine.java:742) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at org.coolreader.crengine.Engine$4.run(Engine.java:565) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at android.os.Handler.handleCallback(Handler.java:587) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at android.os.Handler.dispatchMessage(Handler.java:92) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at android.os.Looper.loop(Looper.java:123) 08-27 02:54:24.583: ERROR/AndroidRuntime(223): at org.coolreader.crengine.BackgroundThread.run(BackgroundThread.java:120)
and this is the function org.coolreader.crengine.Engine.installLibrary:
private void installLibrary() { try { if (force_install_library) throw new Exception("forcing install"); // try loading library w/o manual installation log.i("trying to load library " + LIBRARY_NAME + " w/o installation"); System.loadLibrary(LIBRARY_NAME); // try invoke native method //log.i("trying execute native method "); //setHyphenationMethod(HYPH_NONE, new byte[] {}); log.i(LIBRARY_NAME + " loaded successfully"); } catch (Exception ee) { log.i(SO_NAME + " not found using standard paths, will install manually"); File sopath = mActivity.getDir("libs", Context.MODE_PRIVATE); File soname = new File(sopath, SO_NAME); try { sopath.mkdirs(); File zip = new File(mActivity.getPackageCodePath()); ZipFile zipfile = new ZipFile(zip); ZipEntry zipentry = zipfile.getEntry("lib/armeabi/" + SO_NAME); if (!soname.exists() || zipentry.getSize() != soname.length()) { InputStream is = zipfile.getInputStream(zipentry); OutputStream os = new FileOutputStream(soname); Log.i("cr3", "Installing JNI library " + soname.getAbsolutePath()); final int BUF_SIZE = 0x10000; byte[] buf = new byte[BUF_SIZE]; int n; while ((n = is.read(buf)) > 0) os.write(buf, 0, n); is.close(); os.close(); } else { log.i("JNI library " + soname.getAbsolutePath() + " is up to date"); } System.load(soname.getAbsolutePath()); //setHyphenationMethod(HYPH_NONE, new byte[] {}); } catch (Exception e) { log.e("cannot install " + LIBRARY_NAME + " library", e); } } } The line 837 in engine.java:
System.loadLibrary(LIBRARY_NAME);
LIBRARY_NAME in engine.java is set by:
static final private String LIBRARY_NAME = "cr3engine-45-15";
Since I downloaded the code from repository it is supposed to work without any modifications. I don't understand why it's not working.