悠哉杂学 - Hbuilder
type: channel
link: https://uinit.cn/index.php/tag/Hbuilder/
items: uni-app原生插件开发：PDF&Office文档预览

uni-app原生插件开发：PDF&Office文档预览
type: item
date: 2021-06-29T11:08:00+08:00
description: 序言目前有个uni-app应用内预览Office及PDF文档的需求，Dcloud插件市场：https://ext.dcloud.net.cn/上有比较多的插件，有一些用起来比较省心，但是自己也忍不住想写一个插件，因此本文实现基本的文档预览功能基础上，分享一下如何实现插件。[scode type="blue"]Dcloud官方的uni-app原生插件开发教程：https://nativesupport.dcloud.net.cn/NativePlugin/course/android[/scode]开发环境JAVA环境 jdk1.8Android Studio 下载地址：Android Studio官网 OR Android Studio中文社区App离线SDK下载：请下载2.9.8+版本的android平台SDK导入uni插件原生项目UniPlugin-Hello-AS工程请在App离线SDK中查找点击Android Studio菜单选项File--->New--->Import Project。创建Android Studio的Module模块在现有Android项目中创建library的Module，并配置刚创建的Module的build.gradle信息。apply plugin: 'com.android.library' android { compileSdkVersion 29 defaultConfig { minSdkVersion 16 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // Specifies the ABI configurations of your native // libraries Gradle should build and package with your APK. ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } repositories { flatDir { dirs 'libs' } } dependencies { compileOnly fileTree(dir: 'libs', include: ['*.jar']) compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar']) //noinspection GradleCompatible compileOnly "com.android.support:recyclerview-v7:28.0.0" //noinspection GradleCompatible compileOnly "com.android.support:support-v4:28.0.0" //noinspection GradleCompatible compileOnly "com.android.support:appcompat-v7:28.0.0" implementation 'com.alibaba:fastjson:1.1.46.android' implementation 'com.facebook.fresco:fresco:1.13.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' } 创建TestModule类Module 扩展必须继承 UniModule 类扩展方法必须加上@UniJSMethod (uiThread = false or true) 注解。UniApp 会根据注解来判断当前方法是否要运行在 UI 线程，和当前方法是否是扩展方法。UniApp是根据反射来进行调用 Module 扩展方法，所以Module中的扩展方法必须是 public 类型。package com.siyue.uni.plugin;import android.app.Activity;import android.conte…