因为mupdf编译的体积不小,之前也发过编译的文章,现在更新一下.
建一个mupdf_c目录,名字自己取,在里面git下载mupdf源码,把目录修改为libmupdf
mupdf_c目录下建build.gradle文件,内容如下
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'group = 'com.artifex.mupdf'
version = '1.22.2'buildscript {repositories {maven {url "https://maven.aliyun.com/repository/public"}maven {url "https://maven.aliyun.com/repository/google"}maven { url "https://jitpack.io" }google()mavenCentral()maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }maven { url "https://kotlin.bintray.com/kotlinx/" }}dependencies {classpath 'com.android.tools.build:gradle:7.4.1'}
}allprojects {repositories {maven {url "https://maven.aliyun.com/repository/public"}maven {url "https://maven.aliyun.com/repository/google"}maven { url "https://jitpack.io" }google()mavenCentral()maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }maven { url "https://kotlin.bintray.com/kotlinx/" }}
}publishing {publications {// 定义一个名为 mupdf 的发布,// 运行./gradlew publishMupdfPublicationToLocalRepoRepository发布到下面定义的mupdf_c// ./gradlew publishMupdfPublicationToMavenLocal发布到.m2下面// ./gradlew publishMupdfPublicationToRemoteRepoRepository则是发布到远程,要配置远程仓库//maven {// name = "remoteRepo"// url = "http://my.org/repo"//}mupdf(MavenPublication) {groupId = "com.artifex.mupdf"artifactId = "mupdf-fitz"version = '1.0-SNAPSHOT'// 必须有这个 否则不会上传AAR包afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }// 上传source,这样使用方可以看到方法注释//artifact generateSourcesJar}}repositories {maven {// 基于版本名称选择不同的仓库地址def releasesRepoUrl = "file:///Users/archko/pdf/mupdf_c/"def snapshotsRepoUrl = "file:///Users/archko/pdf/mupdf_c/"name = 'localRepo'// url是必须要配置的url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl// 仓库用户名密码//credentials {// username = "root"// password = "root"//}}}
}android {compileSdkVersion 34buildToolsVersion '34.0.0'defaultConfig {minSdkVersion 16targetSdkVersion 29externalNativeBuild.ndkBuild.arguments '-j4'// Set ABI_FILTERS in your gradle.properties file//if (project.hasProperty('ABI_FILTERS')) {// ndk.abiFilters = []// ndk.abiFilters.addAll(ABI_FILTERS.split(',').collect{it as String})//}ndk{abiFilters "arm64-v8a" //,"armeabi-v7a"}}sourceSets {main {manifest.srcFile 'AndroidManifest.xml'java.srcDirs 'libmupdf/platform/java/src'}}externalNativeBuild {ndkBuild.path 'libmupdf/platform/java/Android.mk'}android.ndkVersion '25.2.9519653'
}
其它文件如gradle.properties,gradle目录,gradlew从别的工程弄过来就可以了.
manifest文件也要一个,内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.artifex.mupdf.fitz" />
然后运行:./gradlew publishMupdfPublicationToMavenLocal 就可以发布了.发完在自己工程最外的build.gradle加入mavenLocal()仓库,就可以引用到了,加两处.