`
天天向上1989
  • 浏览: 418118 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

移植libharu至android

ndk 
阅读更多

 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>

 

即可成功!

 

分享到:
评论
2 楼 jj_zerogra 2013-11-18  
jj_zerogra 写道
请问这个工程结构是什么样的?我按照你的文章实现的编译.so库总是失败,请不吝赐教,谢谢。

我编译的结果总是报如下系列错误:
xxx in function HPDF_LoadRawImageFromMem:jni/../jni/libharu\../libharu/src/hpdf_doc.c:1697: error: undefined reference to 'HPDF_Image_LoadRaw1BitImageFromMem'
error: undefined reference to 'HPDF_NameDict_New'
in function HPDF_AttachFile:jni/../jni/libharu\../libharu/src/hpdf_doc.c:1953: error: undefined reference to 'HPDF_NameTree_New'
1 楼 jj_zerogra 2013-11-18  
请问这个工程结构是什么样的?我按照你的文章实现的编译.so库总是失败,请不吝赐教,谢谢。

相关推荐

    SSH移植到android系统步骤.doc

    SSH移植到Android系统步骤 SSH(Secure Shell)是一种安全的远程登录协议,常用于Linux系统中。但是,Android系统并不具备SSH功能,这篇文章将讲述如何将OpenSSH移植到Android系统中。 Step 1: 获取OpenSSH源码 ...

    Android蓝牙模块移植 BT驱动

    在Android系统中,蓝牙(Bluetooth)模块的移植是一项重要的工作,尤其对于开发和定制设备固件的工程师来说。本文将详细讲解如何移植REALTAK RTL8723BU蓝牙模块到Android系统,以及在此过程中涉及的关键知识点。 ...

    Android驱动开发与移植实战详解_android驱动_android驱动_android_

    本文将深入探讨Android驱动开发与移植的实战细节,帮助开发者理解和掌握这一关键技能。 一、Android驱动概述 Android驱动主要分为内核空间驱动和用户空间驱动两部分。内核空间驱动直接与硬件交互,而用户空间驱动则...

    xbmc 移植到ANDROID 方法

    1. **连接设备**:通过USB线将Android设备连接至计算机,并确保已开启“USB调试”模式。 2. **安装 APK**:将编译生成的APK文件推送到Android设备,并通过命令`adb install /path/to/xbmc.apk`进行安装。 #### 7. ...

    dropbear移植到android9.0系统

    《Dropbear在Android 9.0系统的移植与应用》 Dropbear是一款轻量级的SSH服务器和客户端软件,尤其适用于资源有限的设备,如嵌入式系统和移动设备,如Android。在Android 9.0(Pie)系统上移植Dropbear,能够为设备...

    android底层开发技术实战详解内核移植和驱动

    Linux内核是Android操作系统的基础,理解其工作原理对于底层开发至关重要。Linux内核主要包括进程管理、内存管理、文件系统、网络协议栈和设备驱动等核心模块。其中,进程管理负责进程的创建、调度和销毁;内存管理...

    OSG引擎在Android Studio中的移植和运行.pdf

    【摘要】介绍的是将OSG(OpenSceneGraph)引擎移植到Android Studio中进行开发和运行的实践。OSG是一个基于OpenGL的开源3D图形渲染引擎,由C++编写,提供了高级别的API接口,用于实现三维可视化。文章分析了OSG引擎...

    NXP-PN5XX Android 驱动移植官方文档

    - Android NFC堆栈架构包含多个层次,从上至下分别应用层、服务层、Java Native Interface (JNI)、NFC控制接口(libnfc-nci)以及本地库(C/C++)。 - **应用层**:使用NFC API的应用程序,如支付或标签读取应用。...

    将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现.pdf

    因此,移植Android RIL为Linux通用平台创建一个独立的RIL层,可以方便地支持各种电话应用的开发,提高系统的稳定性和兼容性。 2. Android系统中RIL层分析 RIL在Android系统中位于硬件抽象层,通过Socket与框架层...

    android下exfat文件系统移植

    在Android操作系统中,ExFAT(Extended File Allocation Table)文件系统的移植是一项重要的技术工作,尤其对于需要支持大容量存储如SDXC(Secure Digital eXtended Capacity)卡的应用场景。ExFAT是一种优化了FAT32...

    android13 wifi 移植文档

    移植Android 13中的Wi-Fi驱动通常涉及以下步骤: 1. **环境准备**:设置Android开发环境,包括安装Android SDK、NDK和必要的构建工具。 2. **获取驱动和固件**:从NXP官网或其他可靠来源下载适合目标硬件的驱动和...

    j2me移植Android引擎

    【标题】"J2ME移植Android引擎"涉及的是将基于Java Micro Edition (J2ME) 开发的游戏或应用转换到Android平台的过程。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统,而Android则是一个开源的操作系统,...

    Android系统移植技术详解

    Android系统移植技术是一个复杂而精细的过程,涉及到多个...这些知识点构成了Android系统移植的基础,涵盖了从环境准备到具体功能实现的整个流程,对于开发者来说,理解和掌握这些内容是成功移植Android系统的关键。

    OpenSSH移植到android系统externel步骤

    ### OpenSSH移植到Android系统的详细步骤 #### 一、获取OpenSSH源码 为了将OpenSSH移植到Android系统,首先需要获取适用于Android平台的OpenSSH源码。Android SDK默认并不包含OpenSSH源码,但可以通过以下步骤来...

    FFMPEG 移植到android

    将 FFmpeg 移植到 Android 平台,可以让 Android 应用程序具备处理多媒体文件的强大能力,比如播放视频、音频,进行格式转换等。在 Android 上移植 FFmpeg 需要对 C/C++ 语言、Android NDK(Native Development Kit...

    跨平台移植win32至android

    【跨平台移植Win32至Android】:在软件开发中,跨平台移植是一项重要的技能,它允许开发者将应用从一个操作系统或硬件环境移植到另一个。本文档主要关注将基于Cocos2d-x的游戏或应用程序从Windows(Win32)移植到...

    android ndk环境下移植libiconv方法 附源码

    本文将详细介绍如何在Android NDK环境中移植`libiconv`库,以实现跨平台的字符编码转换功能。 首先,我们来理解一下Android NDK。NDK(Native Development Kit)是Google提供的一个用于Android应用开发的工具集,...

    将本地PC游戏轻松移植到Android的秘技-ch02

    标题《将本地PC游戏轻松移植到Android的秘技-ch02》和描述《将本地PC游戏轻松移植到Android的秘技, jni, ndk》揭示了本书第二章节将详细讨论的内容,旨在教导读者如何将本地PC上的游戏通过特定的技术手段移植到...

    Opencv移植Android工程

    本项目的目标是将OpenCV移植到Android工程,以便在移动设备上运行基于OpenCV的算法。 移植OpenCV到Android工程主要涉及以下几个步骤: 1. **添加OpenCV库**:首先,你需要下载OpenCV的Android SDK,并将其添加到...

    Android系统移植与平台开发

    Android系统移植与平台开发涉及到多个方面,包含对Android系统本身的下载、编译、移植过程,以及对开发人员如何针对特定硬件平台进行开发的指导。本篇文档的内容详细描述了Android系统移植与平台开发的前期准备、...

Global site tag (gtag.js) - Google Analytics