簡體   English   中英

在 Android 應用程序中打開 PDF 文件僅適用於 Android 上的未簽名 APK

[英]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可能是您猜測的一個問題。 根據你提供的信息很難知道。 但是,您可以嘗試以下操作;

  1. 禁用 Proguard:您可以通過刪除以下行在 build.gradle 文件中禁用 Proguard:minifyEnabled true

  2. 配置 Proguard:您可以通過在 proguard-rules.pro 文件中添加特定規則來配置 Proguard 以保留必要的代碼或資源。 例如,要保留用於打開 PDF 文件的 iText 庫,可以添加以下規則:-keep class com.itextpdf.** { *; }

  3. 檢查 PDF 文件:“文檔沒有頁面”的錯誤消息表明該應用程序正在嘗試打開一個空的或無效的 PDF 文件。 確保您嘗試打開的 PDF 文件不為空且未損壞。

  4. 檢查權限:確保您的 AndroidManifest.xml 文件中有“android.permission.INTE.NET”,因為如果您沒有此權限,您將無法打開 pdf 文件。

  5. 檢查 PDF 閱讀器庫:確保您使用的是正確版本的 iText 庫,並且它與您的 android 版本兼容。

總結是,這取決於您的應用程序和您嘗試打開的 PDF 文件的具體情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM