[英]Open PDF file inside Android app only works with unsigned APK on Android
我使用下面的代碼打開一個 PDF 文件,如果我分發未簽名的 APK 文件,它會完美運行。
代碼: https://www.online-java.com/i5u7QPU9N4
但是,如果我對使用 Android Studio 創建的 APK 進行簽名,應用程序會崩潰並顯示以下消息:
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,但它被聲明為 false。
檢查以下內容可能會有所幫助。 1.INTE.NET 權限 2.檢查讀取權限或在清單中添加以下代碼。
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
Proguard
可能是您猜測的一個問題。 根據你提供的信息很難知道。 但是,您可以嘗試以下操作;
禁用 Proguard:您可以通過刪除以下行在 build.gradle 文件中禁用 Proguard:minifyEnabled true
配置 Proguard:您可以通過在 proguard-rules.pro 文件中添加特定規則來配置 Proguard 以保留必要的代碼或資源。 例如,要保留用於打開 PDF 文件的 iText 庫,可以添加以下規則:-keep class com.itextpdf.** { *; }
檢查 PDF 文件:“文檔沒有頁面”的錯誤消息表明該應用程序正在嘗試打開一個空的或無效的 PDF 文件。 確保您嘗試打開的 PDF 文件不為空且未損壞。
檢查權限:確保您的 AndroidManifest.xml 文件中有“android.permission.INTE.NET”,因為如果您沒有此權限,您將無法打開 pdf 文件。
檢查 PDF 閱讀器庫:確保您使用的是正確版本的 iText 庫,並且它與您的 android 版本兼容。
總結是,這取決於您的應用程序和您嘗試打開的 PDF 文件的具體情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.