Skip to content

Commit

Permalink
Moving initialization of pspdfkit from Application start to PdfReader…
Browse files Browse the repository at this point in the history
…Screen to prevent app crash on app start due to problems with PSPDFKit

Possible fix for pspdfkit not finding it's own binaries on some devices
  • Loading branch information
Dima-Android authored and dstillman committed Dec 27, 2023
1 parent eddefef commit 9cc5878
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 16 deletions.
4 changes: 4 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ android {
buildConfigField("boolean", "EVENT_AND_CRASH_LOGGING_ENABLED", "false")
buildConfigField("String", "PSPDFKIT_KEY", "\"\"")
manifestPlaceholders["enableCrashReporting"] = false

ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
}
}
signingConfigs {
create("release") {
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
tools:ignore="GoogleAppIndexingWarning"
tools:replace="android:requestLegacyExternalStorage"
tools:targetApi="n">
<!-- <meta-data-->
<!-- android:name="pspdfkit_automatic_initialize"-->
<!-- android:value="false" />-->
<meta-data
android:name="pspdfkit_automatic_initialize"
android:value="false" />
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${enableCrashReporting}" />
Expand Down
8 changes: 0 additions & 8 deletions app/src/main/java/org/zotero/android/ZoteroApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
import com.google.gson.Gson
import com.pspdfkit.PSPDFKit
import dagger.hilt.android.HiltAndroidApp
import org.zotero.android.BuildConfig.EVENT_AND_CRASH_LOGGING_ENABLED
import org.zotero.android.api.ForGsonWithRoundedDecimals
Expand Down Expand Up @@ -56,13 +55,6 @@ open class ZoteroApplication: Application(), DefaultLifecycleObserver {
controllers.init()

ProcessLifecycleOwner.get().lifecycle.addObserver(this)
initializePspdfKit()
}

private fun initializePspdfKit() {
if (BuildConfig.PSPDFKIT_KEY.isNotBlank()) {
PSPDFKit.initialize(this, BuildConfig.PSPDFKIT_KEY)
}
}

override fun onStart(owner: LifecycleOwner) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavHostController
import com.google.accompanist.insets.navigationBarsPadding
import com.google.accompanist.navigation.animation.composable
Expand Down Expand Up @@ -71,6 +72,8 @@ internal fun DashboardRootPhoneNavigation(
val navigation = remember(navController) {
ZoteroNavigation(navController, dispatcher)
}
val context = LocalContext.current

Box{
Column(modifier = Modifier.background(color = CustomTheme.colors.surface)) {
ZoteroNavHost(
Expand Down Expand Up @@ -114,7 +117,7 @@ internal fun DashboardRootPhoneNavigation(
navigateToZoterWebViewScreen = navigation::toZoteroWebViewScreen,
navigateToTagFilter = navigation::toTagFilter,
navigateToCollectionPicker = navigation::toCollectionPicker,
onShowPdf = navigation::toPdfScreen,
onShowPdf = { navigation.toPdfScreen(context) },
)
itemDetailsScreen(
navigateToCreatorEdit = navigation::toCreatorEdit,
Expand All @@ -128,7 +131,7 @@ internal fun DashboardRootPhoneNavigation(
onOpenFile = onOpenFile,
onOpenWebpage = onOpenWebpage,
onPickFile = { onPickFile(EventBusConstants.FileWasSelected.CallPoint.ItemDetails) },
onShowPdf = navigation::toPdfScreen,
onShowPdf = { navigation.toPdfScreen(context) },
)

composable(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.navigation.NavGraphBuilder
import com.google.accompanist.insets.navigationBarsPadding
import com.google.accompanist.navigation.animation.composable
Expand All @@ -31,6 +32,7 @@ internal fun DashboardRootTopLevelTabletNavigation(
onOpenWebpage: (uri: Uri) -> Unit,
viewModel: DashboardViewModel,
) {
val context = LocalContext.current
val navController = rememberAnimatedNavController()
val dispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher
val navigation = remember(navController) {
Expand All @@ -47,7 +49,7 @@ internal fun DashboardRootTopLevelTabletNavigation(
onOpenFile = onOpenFile,
onOpenWebpage = onOpenWebpage,
viewModel = viewModel,
onShowPdf = navigation::toPdfScreen,
onShowPdf = { navigation.toPdfScreen(context) },
toAddOrEditNote = navigation::toAddOrEditNote,
toZoteroWebViewScreen = navigation::toZoteroWebViewScreen,
)
Expand Down
26 changes: 24 additions & 2 deletions app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@

package org.zotero.android.pdf

import android.content.Context
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.navigation.NavGraphBuilder
import com.google.accompanist.navigation.animation.composable
import com.pspdfkit.PSPDFKit
import org.zotero.android.BuildConfig
import org.zotero.android.androidx.content.longToast
import org.zotero.android.architecture.navigation.ZoteroNavigation
import org.zotero.android.architecture.navigation.dialogFixedDimens
import org.zotero.android.pdf.annotation.PdfAnnotationNavigation
Expand All @@ -21,6 +25,7 @@ import org.zotero.android.pdf.settings.PdfSettingsScreen
import org.zotero.android.pdffilter.PdfFilterNavigation
import org.zotero.android.pdffilter.pdfFilterNavScreens
import org.zotero.android.pdffilter.toPdfFilterScreen
import timber.log.Timber

internal fun NavGraphBuilder.pdfReaderScreenAndNavigationForTablet(
navigation: ZoteroNavigation,
Expand Down Expand Up @@ -150,8 +155,25 @@ private object PdfReaderDestinations {
const val PDF_ANNOTATION_MORE_NAVIGATION = "pdfAnnotationMoreNavigation"
}

fun ZoteroNavigation.toPdfScreen() {
navController.navigate(PdfReaderDestinations.PDF_SCREEN)
fun ZoteroNavigation.toPdfScreen(context: Context) {
if (initializePspdfKit(context)) {
navController.navigate(PdfReaderDestinations.PDF_SCREEN)
}
}

private fun initializePspdfKit(context: Context): Boolean {
try {
if (BuildConfig.PSPDFKIT_KEY.isNotBlank()) {
PSPDFKit.initialize(context, BuildConfig.PSPDFKIT_KEY)
} else {
PSPDFKit.initialize(context, null)
}
} catch (e: Exception) {
Timber.e(e, "Unable to initialize PSPDFKIT")
context.longToast("Unable to initialize PSPDFKIT")
return false
}
return true
}

private fun ZoteroNavigation.toPdfFilterNavigation() {
Expand Down

0 comments on commit 9cc5878

Please sign in to comment.