From ce97adc7ee3d622d0dddc26d84a0cbf4d6077042 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Thu, 25 Jul 2019 15:32:53 +0100 Subject: [PATCH 1/6] #1259 Crash Report: UnsatisfiedLinkError - integrate with changes to kiwix-lib --- .../java/org/kiwix/kiwixmobile/di/modules/JNIModule.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/JNIModule.java b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/JNIModule.java index 14ce3f6aa..9e15c1092 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/JNIModule.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/JNIModule.java @@ -17,6 +17,7 @@ */ package org.kiwix.kiwixmobile.di.modules; +import android.content.Context; import dagger.Module; import dagger.Provides; import javax.inject.Singleton; @@ -29,7 +30,7 @@ import org.kiwix.kiwixlib.JNIKiwix; @Module public class JNIModule { @Provides @Singleton - public JNIKiwix providesJNIKiwix() { - return new JNIKiwix(); + public JNIKiwix providesJNIKiwix(Context context) { + return new JNIKiwix(context); } } From 43305738e584687f91f793e56b78d7a3f6f4b2cd Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Wed, 7 Aug 2019 13:19:42 +0100 Subject: [PATCH 2/6] #1259 update to latest library --- app/build.gradle | 8 +------- kiwixlib/build.gradle | 24 ------------------------ kiwixlib/libs/.gitkeep | 0 kiwixlib/src/main/AndroidManifest.xml | 7 ------- 4 files changed, 1 insertion(+), 38 deletions(-) delete mode 100644 kiwixlib/build.gradle delete mode 100644 kiwixlib/libs/.gitkeep delete mode 100644 kiwixlib/src/main/AndroidManifest.xml diff --git a/app/build.gradle b/app/build.gradle index 37539c74e..8c95b288c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,13 +48,7 @@ String[] archs = ['arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'] dependencies { // use jdk8 java.time backport, as long app < Build.VERSION_CODES.O implementation("com.jakewharton.threetenabp:threetenabp:1.1.1") - // Get kiwixlib online if it is not populated locally - if (file("../kiwixlib/src/main").list().length == 1) { - implementation 'org.kiwix.kiwixlib:kiwixlib:1.0.12' - } else { - implementation project(":kiwixlib") - archs = file("../kiwixlib/src/main/jniLibs").list() - } + implementation 'org.kiwix.kiwixlib:kiwixlib:5.2.0' // Android Support implementation "androidx.appcompat:appcompat:$appCompatVersion" diff --git a/kiwixlib/build.gradle b/kiwixlib/build.gradle deleted file mode 100644 index d61c875eb..000000000 --- a/kiwixlib/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion 28 - - defaultConfig { - minSdkVersion 15 - targetSdkVersion 28 - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - androidTestImplementation("androidx.test.espresso:espresso-core:$espressoVersion") - testImplementation "junit:junit:$jUnitVersion" -} diff --git a/kiwixlib/libs/.gitkeep b/kiwixlib/libs/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/kiwixlib/src/main/AndroidManifest.xml b/kiwixlib/src/main/AndroidManifest.xml deleted file mode 100644 index 77b50dc6a..000000000 --- a/kiwixlib/src/main/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - From 0e895b192c09d53f07ba1305b53d91ab3241f9e3 Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Sun, 11 Aug 2019 16:33:13 +0200 Subject: [PATCH 3/6] #1259 Allow a local kiwix-lib aar to be used --- app/build.gradle | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 8c95b288c..0090d25cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,14 @@ String[] archs = ['arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'] dependencies { // use jdk8 java.time backport, as long app < Build.VERSION_CODES.O implementation("com.jakewharton.threetenabp:threetenabp:1.1.1") - implementation 'org.kiwix.kiwixlib:kiwixlib:5.2.0' + + // Get kiwixlib online if it is not populated locally + if (!file("./libs").exists()) { + implementation 'org.kiwix.kiwixlib:kiwixlib:5.2.0' + } else { + implementation 'com.getkeepsafe.relinker:relinker:1.3.1' + implementation fileTree(include: ['*.aar'], dir: 'libs') + } // Android Support implementation "androidx.appcompat:appcompat:$appCompatVersion" From cb2e89a89f20937648831226f1114f396fe2634c Mon Sep 17 00:00:00 2001 From: Isaac Hutt Date: Wed, 14 Aug 2019 13:59:12 +0200 Subject: [PATCH 4/6] Add details on building with kiwix-lib --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d388dc72f..b5af9d4e7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,6 +58,8 @@ If you wish to rebase you should be following the [Golden Rule](https://www.atla The default build is `debug`, with this variant you can use a debugger while developing. To install the application click the `run` button in Android Studio with the `app` configuration selected while you have a device connected. All other build types but `release` can be ignored, the `release` build is what gets uploaded to the Google Play store and can be built locally with the dummy credentials/keystore provided. +By default we fetch kiwix-lib, the key component for interacting with ZIM files from maven, but if you wish to use your own locally compiled version for testing purposes, then you can create the directory `app/libs` and place your .aar file inside it to have it used instead. + ### Testing Unit tests are located in `app/src/test` and to run them locally you From 3d7e2232d98e7f953012cb7eba2fa6b5c8f4473a Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Tue, 20 Aug 2019 15:55:23 +0100 Subject: [PATCH 5/6] #1259 update to latest library, integrate with api changes --- app/build.gradle | 9 ++++++--- .../kiwixmobile/data/ZimContentProvider.java | 18 ++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0090d25cd..528a22088 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,8 +50,8 @@ dependencies { implementation("com.jakewharton.threetenabp:threetenabp:1.1.1") // Get kiwixlib online if it is not populated locally - if (!file("./libs").exists()) { - implementation 'org.kiwix.kiwixlib:kiwixlib:5.2.0' + if (!shouldUseLocalVersion()) { + implementation 'org.kiwix.kiwixlib:kiwixlib:6.0.0' } else { implementation 'com.getkeepsafe.relinker:relinker:1.3.1' implementation fileTree(include: ['*.aar'], dir: 'libs') @@ -125,7 +125,6 @@ dependencies { // Leak canary debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" implementation "android.arch.lifecycle:extensions:1.1.1" implementation "io.objectbox:objectbox-kotlin:$objectboxVersion" @@ -138,6 +137,10 @@ dependencies { testImplementation 'androidx.arch.core:core-testing:2.0.1' } +private boolean shouldUseLocalVersion() { + file("./libs").exists() +} + // Set custom app import directory def map = [:] def custom = new File("app/src") diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java b/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java index 01e305b3f..a85b17395 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java @@ -125,7 +125,7 @@ public class ZimContentProvider extends ContentProvider { * * Note that the value returned is NOT unique for each zim file. Versions of the same wiki * (complete, nopic, novid, etc) may return the same title. - * */ + */ public static String getZimFileTitle() { if (currentJNIReader == null || zimFileName == null) { return null; @@ -409,10 +409,8 @@ public class ZimContentProvider extends ContentProvider { String fileName = uri.toString(); fileName = fileName.substring(fileName.lastIndexOf('/') + 1, fileName.length()); File f = new File(FileUtils.getFileCacheDir(getContext()), fileName); - JNIKiwixString mime = new JNIKiwixString(); - JNIKiwixString title = new JNIKiwixString(); - JNIKiwixInt size = new JNIKiwixInt(); - byte[] data = currentJNIReader.getContent(filePath, title, mime, size); + byte[] data = currentJNIReader.getContent(new JNIKiwixString(filePath), new JNIKiwixString(), + new JNIKiwixString(), new JNIKiwixInt()); FileOutputStream out = new FileOutputStream(f); out.write(data, 0, data.length); out.flush(); @@ -473,10 +471,10 @@ public class ZimContentProvider extends ContentProvider { @Override public void run() { try { - JNIKiwixString mime = new JNIKiwixString(); - JNIKiwixString title = new JNIKiwixString(); - JNIKiwixInt size = new JNIKiwixInt(); - byte[] data = currentJNIReader.getContent(articleZimUrl, title, mime, size); + final JNIKiwixString mime = new JNIKiwixString(); + final JNIKiwixInt size = new JNIKiwixInt(); + final JNIKiwixString url = new JNIKiwixString(this.articleZimUrl); + byte[] data = currentJNIReader.getContent(url, new JNIKiwixString(), mime, size); if (mime.value != null && mime.value.equals("text/css") && MainActivity.nightMode) { out.write(("img, video { \n" + " -webkit-filter: invert(1); \n" + @@ -486,7 +484,7 @@ public class ZimContentProvider extends ContentProvider { out.write(data, 0, data.length); out.flush(); - Log.d(TAG_KIWIX, "reading " + articleZimUrl + Log.d(TAG_KIWIX, "reading " + url.value + "(mime: " + mime.value + ", size: " + size.value + ") finished."); } catch (IOException | NullPointerException e) { Log.e(TAG_KIWIX, "Exception reading article " + articleZimUrl + " from zim file", From 7430ec9c69b4f808ff837aae48b376be2638be17 Mon Sep 17 00:00:00 2001 From: Sean Mac Gillicuddy Date: Thu, 22 Aug 2019 16:22:26 +0100 Subject: [PATCH 6/6] #1259 update kiwixlib --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 528a22088..b889fbd00 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,7 +51,7 @@ dependencies { // Get kiwixlib online if it is not populated locally if (!shouldUseLocalVersion()) { - implementation 'org.kiwix.kiwixlib:kiwixlib:6.0.0' + implementation 'org.kiwix.kiwixlib:kiwixlib:6.0.2' } else { implementation 'com.getkeepsafe.relinker:relinker:1.3.1' implementation fileTree(include: ['*.aar'], dir: 'libs')