android pdf框架,编译mupdf

因为mupdf编译的体积不小,之前也发过编译的文章,现在更新一下.

建一个mupdf_c目录,名字自己取,在里面git下载mupdf源码,把目录修改为libmupdf

mupdf_c目录下建build.gradle文件,内容如下

Kotlin 复制代码
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 34
	buildToolsVersion '34.0.0'

	defaultConfig {
		minSdkVersion 16
		targetSdkVersion 29
		externalNativeBuild.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()仓库,就可以引用到了,加两处.

相关推荐
大白要努力!1 小时前
Android opencv使用Core.hconcat 进行图像拼接
android·opencv
天空中的野鸟2 小时前
Android音频采集
android·音视频
小白也想学C3 小时前
Android 功耗分析(底层篇)
android·功耗
曙曙学编程3 小时前
初级数据结构——树
android·java·数据结构
DevOpenClub4 小时前
PDF 转 HTML API 数据接口
pdf
闲暇部落6 小时前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
zhy8103027 小时前
.net6 使用 FreeSpire.XLS 实现 excel 转 pdf - docker 部署
pdf·.net·excel
诸神黄昏EX8 小时前
Android 分区相关介绍
android
慧都小妮子8 小时前
Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图
java·pdf·.net
大白要努力!9 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle