mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
個人BLOG
it developer
  1. Main page
  2. dev
  3. Main content

使用NDK移植/编译开源库(2)zlib的编译

2015-11-16 115hotness 0likes 0comments

说明:

android的NDK本来就提供了zlib库,但是由于zlib相对简单,所以我第一次编译的就是zlib,只是为了了解一下大概如何编译的思路。

这里使用的zlib的版本是zlib-1.2.3。

(1)使用ndk-build的方式

解压zlib包后,将其放入JNI文件夹下,目录树结构如下:

    NDK#tree -L 3  
    .  
    ├── prj_zlib  
    │   └── jni  
    │       └── zlib-1.2.3  
    └── zlib-1.2.3.tar  

在jni目录下,新建Android.mk(注意大写)文件,其内容如下:

    LOCAL_PATH:= $(call my-dir)  
      
    include $(CLEAR_VARS)  
      
    include $(CLEAR_VARS)  
      
    LOCAL_SRC_FILES := mytest.c  
    LOCAL_C_INCLUDES :=        \  
        $(LOCAL_PATH)        \  
        $(LOCAL_PATH)/..  
      
    LOCAL_STATIC_LIBRARIES := libzlib  
      
    LOCAL_MODULE := libmyzlibtest  
      
    include $(BUILD_SHARED_LIBRARY)  
      
    include $(call all-makefiles-under,$(LOCAL_PATH))  

其中,mytest.c为使用JNI封装zlib函数的测试例子,内容如下(根据需要去调用):

    #include <jni.h>  
    #include "zlib.h"  
    #include <string.h>  
      
    jstring chartojstring( JNIEnv* env, const char* pat)  
    {  
        /*jclass strClass = (*env)->FindClass(env,"java/lang/String;");
        jmethodID ctorID = (*env)->GetMethodID(env,strClass, "<init>", "([BLjava/lang/String;)V");
        jbyteArray bytes = (*env)->NewByteArray(env, strlen(pat));
        (*env)->SetByteArrayRegion(env,bytes, 0, strlen(pat), (jbyte*)pat);
        jstring encoding = (*env)->NewStringUTF(env,"utf-8");
         
        return (jstring)(*env)->NewObject(env,strClass, ctorID, bytes, encoding);
        */  
      
        /*
        jstring stoJstring(JNIEnv* env, const char* pat)  
    {  
           jclass strClass = env->FindClass("Ljava/lang/String;");  
           jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
           jbyteArray bytes = env->NewByteArray(strlen(pat));  
           env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);  
           jstring encoding = env->NewStringUTF("utf-8");  
           return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);  
    }  
        */  
        re

Tag: Nothing
Last updated:2015-11-16

mikebai

This person is a lazy dog and has left nothing

Like
< Last article
Next article >

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang