Я использую приведенный ниже код, чтобы открыть файл PDF, и он отлично работает, если я распространяю файл APK без подписи.
Код: https://www.online-java.com/i5u7QPU9N4
Но если я подпишу APK, созданный с помощью Android Studio, произойдет сбой приложения со следующим сообщением:
Caused by: ExceptionConverter: java.io.IOException: The document has no pages.
01-24 17:06:20.750 29758 29758 E AndroidRuntime: Caused by: java.io.IOException: The document has no pages.
01-24 17:06:20.750 29758 29758 E AndroidRuntime: at com.itextpdf.text.pdf.PdfPages.writePageTree(
Возможно ли, что что-то вроде Proguard повлияло на подписанный APK? Или это может быть другая проблема?
РЕДАКТИРОВАТЬ
Это мой файл build.gradle уровня приложения.
https://codebeautify.org/alleditor/y2356950e
У меня есть minifyEnabled, но он объявлен ложным.
Вы правы, отладочный APK работает отлично. APK, который я подписываю своим ключом, не работает должным образом.
Что у вас в build.gradle на уровне приложения, у вас есть minifyEnabled или что-то еще интересное?
Согласно ошибке, вы не открываете PDF. Вы генерируете один. Вы должны выполнить отладку, чтобы выяснить, почему сгенерированный документ пуст.
Proguard
может быть одной проблемой, о которой вы размышляете. Трудно сказать, исходя из предоставленной вами информации. Но вот что вы можете попробовать;
Отключить Proguard: вы можете отключить Proguard в файле build.gradle, удалив следующую строку: minifyEnabled true
Настройка Proguard: вы можете настроить Proguard так, чтобы он сохранял необходимый код или ресурсы, добавив определенные правила в файл proguard-rules.pro. Например, чтобы сохранить библиотеку iText, которую вы используете для открытия файла PDF, вы можете добавить следующее правило: -keep class com.itextpdf.** { *; }
Проверьте файл PDF: сообщение об ошибке «В документе нет страниц» предполагает, что приложение пытается открыть пустой или недопустимый файл PDF. Убедитесь, что файл PDF, который вы пытаетесь открыть, не пуст и не поврежден.
Проверьте разрешение: убедитесь, что у вас есть «android.permission.INTERNET» в вашем файле AndroidManifest.xml.
Проверьте библиотеку для чтения PDF: убедитесь, что вы используете правильную версию библиотеки iText и она совместима с вашей версией Android.
Подводя итог, можно сказать, что это зависит от специфики вашего приложения и PDF-файла, который вы пытаетесь открыть.
Если я использую «minifyEnabled false», Proguard будет отключен?
Да, используйте minifyEnabled false
или удалите эту строку. (developer.android.com/studio/build/shrink-code)
Проверьте ниже, что может помочь. 1. ИНТЕРНЕТ-РАЗРЕШЕНИЕ 2. проверьте READ PERMISSION или добавьте код ниже в манифест.
<uses-permission
android:name = "android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion = "32" />
Нет такой вещи, как запуск неподписанного APK — Android не будет запускать их. Даже отладочные APK-файлы подписаны, они просто подписаны ключом, созданным IDE. Они созданы только для пользователей, которые хотят разделить этапы подписания и компиляции.