Android,试图在Xamarin Android App中查看PDF

afo*_*alv 1 c# pdf android xamarin.android xamarin

我试图通过我的Android应用程序查看PDF,我正在使用这个库:https: //www.nuget.org/packages/Xamarin.PdfView.Android/

这是我的代码看起来像:

C#:

using Com.Joanzapata.Pdfview; 
using Java.IO;

namespace Xamarin_test
{
    [Activity(Label = "Xamarin", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);

            PDFView pdfView = FindViewById<PDFView>(Resource.Id.pdfview);

            pdfView.FromAsset("test.pdf")
                    .DefaultPage(1)
                    .ShowMinimap(false)
                    .EnableSwipe(true)
                    .Load();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <com.joanzapata.pdfview.PDFView
        android:id="@+id/pdfview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,我收到此错误:

Java.Lang.RuntimeException:执行doInBackground()时发生错误

是什么造成的?

谢谢.

编辑,完整错误日志:

Java.Lang.RuntimeException: An error occured while executing doInBackground()

08-17 15:09:23.301 E/AndroidRuntime( 2153): FATAL EXCEPTION: AsyncTask #1
08-17 15:09:23.301 E/AndroidRuntime( 2153): Process: Xamarin_MuPDF.Xamarin_MuPDF, PID: 2153
08-17 15:09:23.301 E/AndroidRuntime( 2153): java.lang.RuntimeException: An error occured while executing doInBackground()
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at android.os.AsyncTask$3.done(AsyncTask.java:304)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.lang.Thread.run(Thread.java:818)
08-17 15:09:23.301 E/AndroidRuntime( 2153): Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/Xamarin_MuPDF.Xamarin_MuPDF-1/base.apk"],nativeLibraryDirectories=[/data/app/Xamarin_MuPDF.Xamarin_MuPDF-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libvudroid.so"
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.lang.Runtime.loadLibrary(Runtime.java:367)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.lang.System.loadLibrary(System.java:988)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at org.vudroid.core.VuDroidLibraryLoader.load(VuDroidLibraryLoader.java:13)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at org.vudroid.pdfdroid.codec.PdfContext.<clinit>(PdfContext.java:13)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at com.joanzapata.pdfview.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:50)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at com.joanzapata.pdfview.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:1)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at android.os.AsyncTask$2.call(AsyncTask.java:292)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
08-17 15:09:23.301 E/AndroidRuntime( 2153):     ... 3 more
08-17 15:09:26.751 I/Process ( 2153): Sending signal. PID: 2153 SIG: 9
Run Code Online (Sandbox Code Playgroud)

Sve*_*übe 8

发生这种情况,因为你错过了链接libvudroid.so.pdfview需要此库.

你必须

  • 这里下载库
  • lib在Android项目中创建一个文件夹
  • 将文件夹复制arm64-v8a, armeabi-v7a, armeabi, x86到该文件夹​​中
  • 包括libvudroid.so进入项目并设置属性(右键单击文件 - >属性)
    • 构建动作:AndroidNativeLibrary
    • 复制到输出目录:始终复制

在此输入图像描述

故障排除

如果您收到构建错误: mandroid error XA0000: Invalid create-package command: ...

  • 打开项目属性
  • Android选项
  • 高级
  • 选择所有平台(如果选择了所有平台,取消选择一个并重新选择)
  • 保存
  • 再建一次

  • 先生,如果你现在在这里,我会拥抱你!你是一个超级明星!非常感谢您花时间写出正在发生的事情的详细解释.我设法让这个工作!再次,谢谢你,先生!如果你曾经在亚特兰大,请打我,我会带你出去喝酒. (2认同)