zoukankan      html  css  js  c++  java
  • 为Cocos2d-x的Android平台加入Protobuffer支持

    为Cocos2d-x的Android平台加入Protobuffer支持

    分类: 工作 386人阅读 评论(1) 收藏 举报

    软件: cocos2d-x版本号

    protobuffer版本号:

    NDK版本号:

    Eclipse: 


    之前在网上搜索了非常多文章,发现大多文章都没有一个完整的流程,自己摸索了2天,成功加入了protobuffer支持。这里记录下同一时候分享给其它人。

    这里的加入方式雷同于加入cocos2d-x所须要的第三方库。


    1. 利用cocos2d-x提供的python脚本新生成一个项目。(进入cocos2d-x/tools/project-creator, 编写一个bat脚本用来生成项目 create.bat)

    1. @echo off  
    2. set /p projectName=Please Input Project name:  
    3. if "%projectName%"=="" goto inputError  
    4. set /p packageName=Please Input Package Name:  
    5. if "%packageName%"=="" goto inputError  
    6. create_project.py -project %projectName% -package %packageName% -language cpp  
    7. pause  
    8. exit  
    9. :inputError  
    10. @echo Project or package name is NULL!  
    11. pause  

    注意输入PackageName的时候要使用标准的组织机构如:com.jcracker.test 否则创建可能失败。

    这里我为了学习cocos2d-x 所以模仿了9miao的名称。终于生成的项目组织结果例如以下:


    2. 为cocos2d-x加入protobuffer支持

     将protobuffer源代码拷贝到cocos2d-x/external下。 如图:


    3. 进入cygwin 生成protobuffer须要的config.h文件,假设不生成在编译阶段会提示找不到config.h错误。

    进入cygwin, 一路cd到 cocos2d-x/external/protobuf/中  运行./configure  在运行过程中注意观察 运行情况 必须运行成功才行,过程中假设提起缺少gcc g++之类的 自己又一次安装gcc g++


    4. 进入external/chipmunk 复制里面的Android.mk 到protobuf中。此时protobuf文件组织结构如图:



    5. 改写Android.mk. 改写后的Android.mk例如以下:

    1. LOCAL_PATH := $(call my-dir)  
    2.   
    3. include $(CLEAR_VARS)  
    4.   
    5. LOCAL_MODULE := protobuf_static  
    6.   
    7. LOCAL_MODULE_FILENAME := libprotobuf  
    8.   
    9. LOCAL_CPP_EXTENSION := .cc  
    10.   
    11. LOCAL_SRC_FILES :=   
    12. src/google/protobuf/io/coded_stream.cc                  
    13. src/google/protobuf/stubs/common.cc                     
    14. src/google/protobuf/descriptor.cc                       
    15. src/google/protobuf/descriptor.pb.cc                    
    16. src/google/protobuf/descriptor_database.cc              
    17. src/google/protobuf/dynamic_message.cc                  
    18. src/google/protobuf/extension_set.cc                    
    19. src/google/protobuf/extension_set_heavy.cc              
    20. src/google/protobuf/generated_message_reflection.cc     
    21. src/google/protobuf/generated_message_util.cc           
    22. src/google/protobuf/io/gzip_stream.cc                   
    23. src/google/protobuf/compiler/importer.cc                
    24. src/google/protobuf/message.cc                          
    25. src/google/protobuf/message_lite.cc                     
    26. src/google/protobuf/stubs/once.cc                       
    27. src/google/protobuf/compiler/parser.cc                  
    28. src/google/protobuf/io/printer.cc                       
    29. src/google/protobuf/reflection_ops.cc                   
    30. src/google/protobuf/repeated_field.cc                   
    31. src/google/protobuf/service.cc                          
    32. src/google/protobuf/stubs/structurally_valid.cc         
    33. src/google/protobuf/stubs/strutil.cc                    
    34. src/google/protobuf/stubs/substitute.cc                 
    35. src/google/protobuf/stubs/stringprintf.cc                 
    36. src/google/protobuf/text_format.cc                      
    37. src/google/protobuf/io/tokenizer.cc                     
    38. src/google/protobuf/unknown_field_set.cc                
    39. src/google/protobuf/wire_format.cc                      
    40. src/google/protobuf/wire_format_lite.cc                 
    41. src/google/protobuf/io/zero_copy_stream.cc              
    42. src/google/protobuf/io/zero_copy_stream_impl.cc         
    43. src/google/protobuf/io/zero_copy_stream_impl_lite.cc  
    44.   
    45. #LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/protobuf  
    46.   
    47. #LOCAL_C_INCLUDES := $(LOCAL_PATH)/include/protobuf  
    48. #LOCAL_CFLAGS := -std=c99  
    49.                                    
    50. include $(BUILD_STATIC_LIBRARY)  

    编写以上代码时候注意记得把protobuffer的cc写进来。


    6. 使用eclipse进如android项目的结构中。


    7. 为protobuffer加入编译所需的头文件支持。  由于protobuffer中非常多依赖<google/protobuf/**> 之类的头文件。假设手动去该太麻烦。 所以能够先将protobuffer在cygwin中 使用./configure && make && make install  安装到cygwin中,这样我们就能够去cygwin的头文件里直接拿去须要的头文件。例如以下:


    将以上目录直接拷贝到NDK编译的交叉编译工具链的头文件里。 我这里是:


    8 编写项目所需的Android.mk, 例如以下:


    注意红色部分。

    编译执行  注意看控制台是否编译成功,是否链接成功。

    编译成功产生静态链接库:


     链接到项目中。


    至此,为cocos2d-x加入protobuffer支持完成。

    由于时间关系 还没有測试protobuffer在android是否正常工作,请谅解。  等空了再补上。


    -------------------------------------------------------------------------------------------------------------------------------

    已验证,在android平台能成功执行

  • 相关阅读:
    实战parse_ini_file()及扩展函数解析ini文件完整版
    Android应用程序注冊广播接收器(registerReceiver)的过程分析
    LeetCode: Best Time to Buy and Sell Stock II [122]
    关于URL编码
    js进阶 14-1 jquery的ajax系列中的load方法的作用是什么
    js进阶 13 jquery动画函数有哪些
    js进阶 13-11/12 jquery如何实现折叠导航
    js进阶 13-9/10 jquery如何实现三级列表
    js进阶 13-8 jquery如何实现侧边栏
    js进阶 13-7 如何实现滑动面板效果
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4085808.html
Copyright © 2011-2022 走看看