您的位置:首页 > 运维架构 > Linux

linuxmint18上cocos2dx protobuf2.6.1编译、使用方法

2017-05-15 00:00 309 查看
在linuxmint18上用ndk编译android版本的protobuf

1,在github上下载protobuf-2.6.1.tar.gz,解压

2,cd; mkdir -p protobuf/jni

拷贝protobuf-2.6.1目录下的src文件夹到jni目录下

在jni目录下新建Android.mk文件,内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := protobuf

LOCAL_MODULE_FILENAME := libprotobuf

LOCAL_SRC_FILES := src/google/protobuf/io/coded_stream.cc \

src/google/protobuf/stubs/common.cc \

src/google/protobuf/descriptor.cc \

src/google/protobuf/descriptor.pb.cc \

src/google/protobuf/descriptor_database.cc \

src/google/protobuf/dynamic_message.cc \

src/google/protobuf/extension_set.cc \

src/google/protobuf/extension_set_heavy.cc \

src/google/protobuf/generated_message_reflection.cc \

src/google/protobuf/generated_message_util.cc \

src/google/protobuf/io/gzip_stream.cc \

src/google/protobuf/compiler/importer.cc \

src/google/protobuf/message.cc \

src/google/protobuf/message_lite.cc \

src/google/protobuf/stubs/once.cc \

src/google/protobuf/compiler/parser.cc \

src/google/protobuf/io/printer.cc \

src/google/protobuf/reflection_ops.cc \

src/google/protobuf/repeated_field.cc \

src/google/protobuf/service.cc \

src/google/protobuf/stubs/structurally_valid.cc \

src/google/protobuf/stubs/strutil.cc \

src/google/protobuf/stubs/substitute.cc \

src/google/protobuf/text_format.cc \

src/google/protobuf/io/tokenizer.cc \

src/google/protobuf/unknown_field_set.cc \

src/google/protobuf/wire_format.cc \

src/google/protobuf/wire_format_lite.cc \

src/google/protobuf/io/zero_copy_stream.cc \

src/google/protobuf/io/zero_copy_stream_impl.cc \

src/google/protobuf/io/zero_copy_stream_impl_lite.cc \

src/google/protobuf/stubs/stringprintf.cc

LOCAL_EXPORT_C_INCLUDES :=

LOCAL_EXPORT_LDLIBS :=

LOCAL_C_INCLUDES := $(LOCAL_PATH) \

$(LOCAL_PATH)/src

LOCAL_LDLIBS := -llog -lz

include $(BUILD_STATIC_LIBRARY)

继续在jni目录下新建Application.mk,内容如下:

APP_STL := gnustl_static

APP_CPPFLAGS := -frtti

APP_ABI := armeabi armeabi-v7a x86

APP_MODULES := protobuf

3,cd protobuf-2.6.1; ./configure;

拷贝生成的config.h文件到jni目录下

4,cd; cd protobuf; ndk-build

即可发现在子目录obj/local目录中生成了armeabi armeabi-v7a x86三个平台下的libprotobuf.a

5,cd protobuf-2.6.1; make; make install

6,在你的cocosdx项目根目录下新建一个proto目录

拷贝第5步生成的protobuf的include文件夹到proto目录下

拷贝第4步的obj/local目录下的三个子文件夹(删除其中的objs文件夹)到proto/libs目录下

7,在proto目录下新建Android.mk文件,内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos_protobuf_static

LOCAL_MODULE_FILENAME := libprotobuf

LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/libprotobuf.a

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_STATIC_LIBRARY)

至此android上的protobuf库就准备好了。

8,使用protobuf

在自己工程的Android.mk文件中添加以下代码:

$(call import-add-path,$(LOCAL_PATH)/../..)

...

LOCAL_STATIC_LIBRARIES += cocos_protobuf_static

...

$(call import-module,proto)

其中

$(LOCAL_PATH)/../..这个路径就是proto目录的父目录

cocos_protobuf_static就是第7步中的LOCAL_MODULE

proto就是proto目录名

9,ps:github上也有一个protobuf2.6.1 ndk build的参考:https://github.com/julienr/protobuf-android
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: