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 diff --git a/app/build.gradle b/app/build.gradle index 3e960d4f4..c0e2b0b91 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,12 +50,13 @@ 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' + if (!shouldUseLocalVersion()) { + implementation 'org.kiwix.kiwixlib:kiwixlib:6.0.2' } else { - implementation project(":kiwixlib") - archs = file("../kiwixlib/src/main/jniLibs").list() + implementation 'com.getkeepsafe.relinker:relinker:1.3.1' + implementation fileTree(include: ['*.aar'], dir: 'libs') } // Android Support @@ -146,6 +147,10 @@ dependencies { } } +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 5b2823e68..21d81c3d8 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", 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); } } 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 @@ - - - - - - -