NDK编译
开始一直还天真的以为在桌面下编好的/usr/local/libhpdf.so可以直接用,后来才意识到要用NDK重新编~.~
步骤:
项目路径/jni下有两个文件夹:
libharu 和 lpng163 其中包含了 所有对应的src 和 include文件
还有haru 自带的例子 font_demo.cpp
针对: lpng163
include $(CLEAR_VARS) sources := png.c \ pngerror.c \ pngget.c \ pngmem.c \ pngpread.c \ pngread.c \ pngrio.c \ pngrtran.c \ pngrutil.c \ pngset.c \ pngtrans.c \ pngtest.c \ pngwio.c \ pngwrite.c \ pngwtran.c \ pngwutil.c LOCAL_C_INCLUDES := $(LOCAL_PATH)/lpng163 LOCAL_MODULE := png LOCAL_LDLIBS := -lz LOCAL_SRC_FILES := $(sources:%=lpng163/%) include $(BUILD_STATIC_LIBRARY)
针对libharu
include $(CLEAR_VARS) sources := hpdf_annotation.c \ hpdf_array.c \ hpdf_binary.c \ hpdf_boolean.c \ hpdf_catalog.c \ hpdf_destination.c \ hpdf_dict.c \ hpdf_doc.c \ hpdf_doc_png.c \ hpdf_encoder.c \ hpdf_encoder_cns.c \ hpdf_encoder_cnt.c \ hpdf_encoder_jp.c \ hpdf_encoder_kr.c \ hpdf_encrypt.c \ hpdf_encryptdict.c \ hpdf_error.c \ hpdf_ext_gstate.c \ hpdf_font.c \ hpdf_font_cid.c \ hpdf_fontdef_base14.c \ hpdf_fontdef.c \ hpdf_fontdef_cid.c \ hpdf_fontdef_cns.c \ hpdf_fontdef_cnt.c \ hpdf_fontdef_jp.c \ hpdf_fontdef_kr.c \ hpdf_fontdef_tt.c \ hpdf_fontdef_type1.c \ hpdf_font_tt.c \ hpdf_font_type1.c \ hpdf_gstate.c \ hpdf_image.c \ hpdf_image_png.c \ hpdf_info.c \ hpdf_list.c \ hpdf_mmgr.c \ hpdf_name.c \ hpdf_null.c \ hpdf_number.c \ hpdf_objects.c \ hpdf_outline.c \ hpdf_page_label.c \ hpdf_page_operator.c \ hpdf_pages.c \ hpdf_real.c \ hpdf_streams.c \ hpdf_string.c \ hpdf_u3d.c \ hpdf_utils.c \ hpdf_xref.c LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/libharu/include \ $(LOCAL_PATH)/libharu/src \ $(LOCAL_PATH)/lpng163 LOCAL_LDLIBS := -lz -lm LOCAL_MODULE := haru LOCAL_SRC_FILES := $(sources:%=libharu/src/%) LOCAL_STATIC_LIBRARIES := z png include $(BUILD_SHARED_LIBRARY)
最后就是font_demo了
include $(CLEAR_VARS) LOCAL_MODULE := haru_font LOCAL_SRC_FILES := font_demo.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/libharu/include LOCAL_CPPFLAGS += -fexceptions LOCAL_STATIC_LIBRARIES := z png haru include $(BUILD_SHARED_LIBRARY)
如果只是这样,会报错
error: dereferencing pointer to incomplete type
需要
1) 缺少 pnglibconf.h ,这个文件在png/scripts/pnglibconf.h.prebuilt ,拷贝出来,改名为pnglibconf.h
2)增加 hpdf_image_png.c 的头文件, 在#include <png.h> 后增加
#include <pngstruct.h>
#include <pnginfo.h>
即可成功!
相关推荐
SSH移植到Android系统步骤 SSH(Secure Shell)是一种安全的远程登录协议,常用于Linux系统中。但是,Android系统并不具备SSH功能,这篇文章将讲述如何将OpenSSH移植到Android系统中。 Step 1: 获取OpenSSH源码 ...
在Android系统中,蓝牙(Bluetooth)模块的移植是一项重要的工作,尤其对于开发和定制设备固件的工程师来说。本文将详细讲解如何移植REALTAK RTL8723BU蓝牙模块到Android系统,以及在此过程中涉及的关键知识点。 ...
《Dropbear在Android 9.0系统的移植与应用》 Dropbear是一款轻量级的SSH服务器和客户端软件,尤其适用于资源有限的设备,如嵌入式系统和移动设备,如Android。在Android 9.0(Pie)系统上移植Dropbear,能够为设备...
《Android系统中的无线调试工具wireless_tools.29版本移植详解》 在移动设备的开发与调试过程中,无线网络工具起着至关重要的作用。这里我们关注的是`wireless_tools.29`版本,一个专为Android系统移植优化的无线...
本文将深入探讨Android驱动开发与移植的实战细节,帮助开发者理解和掌握这一关键技能。 一、Android驱动概述 Android驱动主要分为内核空间驱动和用户空间驱动两部分。内核空间驱动直接与硬件交互,而用户空间驱动则...
1. **连接设备**:通过USB线将Android设备连接至计算机,并确保已开启“USB调试”模式。 2. **安装 APK**:将编译生成的APK文件推送到Android设备,并通过命令`adb install /path/to/xbmc.apk`进行安装。 #### 7. ...
【摘要】介绍的是将OSG(OpenSceneGraph)引擎移植到Android Studio中进行开发和运行的实践。OSG是一个基于OpenGL的开源3D图形渲染引擎,由C++编写,提供了高级别的API接口,用于实现三维可视化。文章分析了OSG引擎...
Linux内核是Android操作系统的基础,理解其工作原理对于底层开发至关重要。Linux内核主要包括进程管理、内存管理、文件系统、网络协议栈和设备驱动等核心模块。其中,进程管理负责进程的创建、调度和销毁;内存管理...
因此,移植Android RIL为Linux通用平台创建一个独立的RIL层,可以方便地支持各种电话应用的开发,提高系统的稳定性和兼容性。 2. Android系统中RIL层分析 RIL在Android系统中位于硬件抽象层,通过Socket与框架层...
移植Android 13中的Wi-Fi驱动通常涉及以下步骤: 1. **环境准备**:设置Android开发环境,包括安装Android SDK、NDK和必要的构建工具。 2. **获取驱动和固件**:从NXP官网或其他可靠来源下载适合目标硬件的驱动和...
【标题】"J2ME移植Android引擎"涉及的是将基于Java Micro Edition (J2ME) 开发的游戏或应用转换到Android平台的过程。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统,而Android则是一个开源的操作系统,...
Android系统移植技术是一个复杂而精细的过程,涉及到多个...这些知识点构成了Android系统移植的基础,涵盖了从环境准备到具体功能实现的整个流程,对于开发者来说,理解和掌握这些内容是成功移植Android系统的关键。
- Android NFC堆栈架构包含多个层次,从上至下分别应用层、服务层、Java Native Interface (JNI)、NFC控制接口(libnfc-nci)以及本地库(C/C++)。 - **应用层**:使用NFC API的应用程序,如支付或标签读取应用。...
### OpenSSH移植到Android系统的详细步骤 #### 一、获取OpenSSH源码 为了将OpenSSH移植到Android系统,首先需要获取适用于Android平台的OpenSSH源码。Android SDK默认并不包含OpenSSH源码,但可以通过以下步骤来...
将 FFmpeg 移植到 Android 平台,可以让 Android 应用程序具备处理多媒体文件的强大能力,比如播放视频、音频,进行格式转换等。在 Android 上移植 FFmpeg 需要对 C/C++ 语言、Android NDK(Native Development Kit...
【跨平台移植Win32至Android】:在软件开发中,跨平台移植是一项重要的技能,它允许开发者将应用从一个操作系统或硬件环境移植到另一个。本文档主要关注将基于Cocos2d-x的游戏或应用程序从Windows(Win32)移植到...
本文将详细介绍如何在Android NDK环境中移植`libiconv`库,以实现跨平台的字符编码转换功能。 首先,我们来理解一下Android NDK。NDK(Native Development Kit)是Google提供的一个用于Android应用开发的工具集,...
标题《将本地PC游戏轻松移植到Android的秘技-ch02》和描述《将本地PC游戏轻松移植到Android的秘技, jni, ndk》揭示了本书第二章节将详细讨论的内容,旨在教导读者如何将本地PC上的游戏通过特定的技术手段移植到...
本项目的目标是将OpenCV移植到Android工程,以便在移动设备上运行基于OpenCV的算法。 移植OpenCV到Android工程主要涉及以下几个步骤: 1. **添加OpenCV库**:首先,你需要下载OpenCV的Android SDK,并将其添加到...
《NTFS-3g在Android平台的移植与应用》 NTFS-3g是一款开源的、为Linux系统设计的NTFS文件系统驱动程序,它允许Linux用户读写Microsoft Windows操作系统所使用的NTFS格式的磁盘。这个软件项目始于2005年,经过多次...