diff --git a/mailbox-android/build.gradle b/mailbox-android/build.gradle index a926079f715ad34353dc1d9a753608a8bf3bd1d3..3260cdb9eebded14e0b3283074c92edf3b4ee115 100644 --- a/mailbox-android/build.gradle +++ b/mailbox-android/build.gradle @@ -42,6 +42,12 @@ android { // Due to https://github.com/Kotlin/kotlinx.coroutines/issues/2023 exclude 'META-INF/licenses/*' exclude '**/attach_hotspot_windows.dll' + merge "**/libsqlitejdbc.so" + merge "/org/sqlite/native/Linux/android-arm/libsqlitejdbc.so" + merge "org/sqlite/native/Linux/android-arm/libsqlitejdbc.so" + doNotStrip "**/libsqlitejdbc.so" + doNotStrip "/org/sqlite/native/Linux/android-arm/libsqlitejdbc.so" + doNotStrip "org/sqlite/native/Linux/android-arm/libsqlitejdbc.so" } } @@ -91,7 +97,7 @@ def torLibsDir = 'src/main/jniLibs' task cleanTorBinaries { doLast { delete fileTree(torBinariesDir) { include '*.zip' } - delete fileTree(torLibsDir) { include '**/*.so' } + //delete fileTree(torLibsDir) { include '**/*.so' } } } diff --git a/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt b/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt index 7ecf1961a53d9e1c4b202489c7b5884b42febf5d..3247a72250e7d7aaa03dc2489d9081eaaccbc3a4 100644 --- a/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt +++ b/mailbox-android/src/androidTest/java/org/briarproject/mailbox/core/DatabaseCreationTest.kt @@ -3,23 +3,66 @@ package org.briarproject.mailbox.core import android.util.Log import kotlinx.coroutines.runBlocking import org.junit.Test +import org.sqlite.SQLiteJDBCLoader import org.sqlite.mc.SQLiteMCConfig +import org.sqlite.util.OSInfo import java.io.File import java.sql.Connection import java.sql.DriverManager import kotlin.test.assertEquals import kotlin.test.assertTrue + class DatabaseCreationTest { companion object { val LOG_TAG = "db test" } + fun hasResource(path: String?): Boolean { + return DatabaseCreationTest::class.java.getResource(path) != null + } + @Test fun createDatabase(): Unit = runBlocking { Class.forName("org.sqlite.JDBC") + var foo = OSInfo.getNativeLibFolderPathForCurrentOS() + Log.i(LOG_TAG, "native lib folder path: $foo") + + var sqliteNativeLibraryPath = System.getProperty("org.sqlite.lib.path") + var sqliteNativeLibraryName = System.getProperty("org.sqlite.lib.name") + Log.i(LOG_TAG, "native library path: $sqliteNativeLibraryPath") + Log.i(LOG_TAG, "native library name: $sqliteNativeLibraryName") + val mapped = System.mapLibraryName("sqlitejdbc") + Log.i(LOG_TAG, "mapped library name: $mapped") + + if (sqliteNativeLibraryName == null) { + sqliteNativeLibraryName = System.mapLibraryName("sqlitejdbc") + if (sqliteNativeLibraryName != null && sqliteNativeLibraryName.endsWith(".dylib")) { + sqliteNativeLibraryName = sqliteNativeLibraryName.replace(".dylib", ".jnilib") + } + } + + val packagePath = + SQLiteJDBCLoader::class.java.getPackage().name.replace("\\.".toRegex(), "/") + sqliteNativeLibraryPath = + String.format("/%s/native/%s", packagePath, OSInfo.getNativeLibFolderPathForCurrentOS()) + val resource = sqliteNativeLibraryPath.toString() + "/" + sqliteNativeLibraryName + val hasNativeLib: Boolean = hasResource(resource) + val hasWindowsLib: Boolean = hasResource("/org/sqlite/native/Windows/x86/sqlitejdbc.dll") + val hasLinuxFoo: Boolean = hasResource("/org/sqlite/native/Linux/android-arm/libsqlitejdbc.foo") + val hasTor1: Boolean = hasResource("/jniLibs/armeabi-v7a/libtor.so") + val hasTor2: Boolean = hasResource("/armeabi-v7a/libtor.so") + val hasTor3: Boolean = hasResource("/libtor.so") + Log.i(LOG_TAG, "resource: $resource") + Log.i(LOG_TAG, "has native lib: $hasNativeLib") + Log.i(LOG_TAG, "has Windows lib: $hasWindowsLib") + Log.i(LOG_TAG, "has Linux foo: $hasLinuxFoo") + Log.i(LOG_TAG, "has tor1: $hasTor1") + Log.i(LOG_TAG, "has tor2: $hasTor2") + Log.i(LOG_TAG, "has tor3: $hasTor3") + val file: File = File.createTempFile("test", ".sqlite") Log.i(LOG_TAG, "file: $file") val connection: Connection = DriverManager.getConnection( diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/aarch64/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/aarch64/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..7bad179fe5a836e451c2cb7396087860aae1a116 Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/aarch64/libsqlitejdbc.so differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/android-arm/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/android-arm/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..35f3fba421b28fe72e9791045c54520b31ecb9e7 Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/android-arm/libsqlitejdbc.so differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/arm/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/arm/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..fe111c21af68547e9cc0d32efed63b115d975bfd Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/arm/libsqlitejdbc.so differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/armv7/libsqlitejdbc.foo b/mailbox-android/src/main/resources/org/sqlite/native/Linux/armv7/libsqlitejdbc.foo new file mode 100755 index 0000000000000000000000000000000000000000..782719738fffc941438283dc6d554ef7c3fef182 Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/armv7/libsqlitejdbc.foo differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/armv7/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/armv7/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..782719738fffc941438283dc6d554ef7c3fef182 Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/armv7/libsqlitejdbc.so differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/ppc64/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/ppc64/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..e1a224881ed661b6cd306e52329d4923a60d4665 Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/ppc64/libsqlitejdbc.so differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/x86/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/x86/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..34d37472ac60a754c87c714e12b08d2c6b5bac40 Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/x86/libsqlitejdbc.so differ diff --git a/mailbox-android/src/main/resources/org/sqlite/native/Linux/x86_64/libsqlitejdbc.so b/mailbox-android/src/main/resources/org/sqlite/native/Linux/x86_64/libsqlitejdbc.so new file mode 100755 index 0000000000000000000000000000000000000000..53291c66028ac9e6f50c4518bb53dfe495a0bacd Binary files /dev/null and b/mailbox-android/src/main/resources/org/sqlite/native/Linux/x86_64/libsqlitejdbc.so differ