{"id":25645790,"url":"https://github.com/detaysoft/mupdf-android-viewer","last_synced_at":"2025-10-25T02:09:50.576Z","repository":{"id":53178787,"uuid":"196722981","full_name":"Detaysoft/mupdf-android-viewer","owner":"Detaysoft","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-01T11:55:35.000Z","size":807,"stargazers_count":5,"open_issues_count":1,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-01T13:28:40.018Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Detaysoft.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-07-13T13:09:43.000Z","updated_at":"2025-04-30T08:20:42.000Z","dependencies_parsed_at":"2024-09-12T21:43:01.511Z","dependency_job_id":"460d9a36-248a-4dd0-9112-815bf47a2102","html_url":"https://github.com/Detaysoft/mupdf-android-viewer","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/Detaysoft/mupdf-android-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Detaysoft%2Fmupdf-android-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Detaysoft%2Fmupdf-android-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Detaysoft%2Fmupdf-android-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Detaysoft%2Fmupdf-android-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Detaysoft","download_url":"https://codeload.github.com/Detaysoft/mupdf-android-viewer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Detaysoft%2Fmupdf-android-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279059373,"owners_count":26094945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-23T09:19:28.279Z","updated_at":"2025-10-15T07:27:36.568Z","avatar_url":"https://github.com/Detaysoft.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MuPDF Android Viewer\n\nThis project is a simplified variant of the full MuPDF Android app that only\nsupports viewing documents. The annotation editing and form filling features\nare not present here.\n\nThis project builds both a viewer library and a viewer application.\nThe viewer library can be used to view PDF and other documents.\n\nThe application is a simple file chooser that shows a list of documents on the\nexternal storage on your device, and hands off the selected file to the viewer\nlibrary.\n\n## License\n\nMuPDF is Copyright (c) 2006-2017 Artifex Software, Inc.\n\nThis program is free software: you can redistribute it and/or modify it under\nthe terms of the GNU Affero General Public License as published by the Free\nSoftware Foundation, either version 3 of the License, or (at your option) any\nlater version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License along\nwith this program. If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n## Prerequisites\n\nYou need a working Android development environment, consisting of the Android\nSKD and the Android NDK. The easiest way is to use Android Studio to download\nand install the SDK and NDK.\n\n## Building\n\nDownload the project using Git:\n\n\t$ git clone git://git.ghostscript.com/mupdf-android-viewer.git\n\nEdit the local.properties file to point to your Android SDK directory:\n\n\t$ echo sdk.dir=$HOME/Android/Sdk \u003e local.properties\n\nIf all tools have been installed as per the prerequisites, build the app using\nthe gradle wrapper:\n\n\t$ ./gradlew assembleRelease\n\nIf all has gone well, you can now find the app APKs in app/build/outputs/apk/,\nwith one APK for each ABI. There is also a universal APK which supports all\nABIs.\n\nThe library component can be found in lib/build/outputs/aar/lib-release.aar.\n\n## Running\n\nTo run the app in the android emulator, first you'll need to set up an \"Android\nVirtual Device\" for the emulator. Run \"android avd\" and create a new device.\nYou can also use Android Studio to set up a virtual device. Use the x86 ABI for\nbest emulator performance.\n\nThen launch the emulator, or connect a device with USB debugging enabled:\n\n\t$ emulator -avd MyVirtualDevice \u0026\n\nThen copy some test files to the device:\n\n\t$ adb push file.pdf /mnt/sdcard/Download\n\nThen install the app on the device:\n\n\t$ ./gradlew installDebug\n\nTo start the installed app on the device:\n\n\t$ adb shell am start -n com.artifex.mupdf.viewer.app/.LibraryActivity\n\nTo see the error and debugging message log:\n\n\t$ adb logcat\n\n## Building the JNI library locally\n\nThe viewer library here is 100% pure java, but it uses the MuPDF fitz library,\nwhich provides access to PDF rendering and other low level functionality.\nThe default is to use the JNI library artifact from the Ghostscript Maven\nrepository.\n\nIf you want to build the JNI code yourself, you will need to check out the\n'jni' submodule recursively. You will also need a working host development\nenvironment with a C compiler and GNU Make.\n\nEither clone the original project with the --recursive flag, or initialize all\nthe submodules recursively by hand:\n\n\tmupdf-mini $ git submodule update --init\n\tmupdf-mini $ cd jni\n\tmupdf-mini/jni $ git submodule update --init\n\tmupdf-mini/jni $ cd libmupdf\n\tmupdf-mini/jni/libmupdf $ git submodule update --init\n\nThen you need to run the 'make generate' step in the libmupdf directory:\n\n\tmupdf-mini/jni/libmupdf $ make generate\n\nOnce this is done, the build system should pick up the local JNI library\ninstead of using the Maven artifact.\n\n## Release\n\nTo do a release you MUST first change the package name!\n\nDo NOT use the com.artifex domain for your custom app!\n\nIn order to sign a release build, you will need to create a key and a key\nstore.\n\n\t$ keytool -genkey -v -keystore app/android.keystore -alias MyKey \\\n\t\t-validity 3650 -keysize 2048 -keyalg RSA\n\nThen add the following entries to app/gradle.properties:\n\n\trelease_storeFile=android.keystore\n\trelease_storePassword=\u003cyour keystore password\u003e\n\trelease_keyAlias=MyKey\n\trelease_keyPassword=\u003cyour key password\u003e\n\nIf your keystore has been set up properly, you can now build a signed release.\n\n## Maven\n\nThe library component of this project can be packaged as a Maven artifact.\n\nThe default is to create the Maven artifact in the 'MAVEN' directory. You can\ncopy thoes files to the distribution site manually, or you can change the\nuploadArchives repository in build.gradle before running the uploadArchives\ntask.\n\n\t$ ./gradlew uploadArchives\n\nGood Luck!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetaysoft%2Fmupdf-android-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdetaysoft%2Fmupdf-android-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetaysoft%2Fmupdf-android-viewer/lists"}