AndroidStudio一点技巧

调用链接.a文件:

.a文件在安卓开发中见的比较少,毕竟安卓开发包就那么多版本,还有那么多平台,很难统一。

所以一般.a是自己做的(如我本人),在就是Cocos2dx那个指定平台的了,毕竟Cocos2dx太大,做.so不划算,还是做成.a要什么就链接进去什么(个人猜测)。

第一步:

把第三方提供的h文件夹,放在cpp的include里面。其实.mk中有调用外部include的标签,但是gradle和cmake中如何设置我不知道。 

这一点是规范,不是必须。个人更倾向于将文件夹命名为ainc。

AndroidStudio一点技巧_第1张图片


第二步:

将.a文件放在src/main/jniLibs/{ABI名,如armeabi}下

AndroidStudio一点技巧_第2张图片


第三步:

CMakeLists.txt中添加include文件的路径,如:

  1. include_directories( src/main/cpp/include/jsoncpp  
  2.                      src/main/cpp/include/curl  
  3.                      src/main/cpp/include/openssl  
  4.                      )  

这样的话岂不是可以添加外部路径了

也有说要写成这个样子:

  1. #将静态库的头文件添加进来  
  2.  include_directories(  
  3.     ${CMAKE_SOURCE_DIR/src/main/include} #头文件多的话可以继续往下加      
  4.     ${CMAKE_SOURCE_DIR/src/main/include/..}  
  5.   
  6.     ${CMAKE_SOURCE_DIR/src/main/include/...}  
  7.   
  8.     。。。。  
  9.    ) 


添加.a文件的路径,如:

  1. add_library(jsoncpp STATIC IMPORTED)  
  2. set_target_properties(jsoncpp  
  3.   PROPERTIES IMPORTED_LOCATION  
  4.   ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libjsoncpp.a)  

这里面的${CMAKE_SOURCE_DIR}${ANDROID_ABI}都是定义好的环境变量哦。

最后修改target_link_libraries,设置要添加的.a库的名字。如:

  1. target_link_libraries(native-lib  
  2.                       jsoncpp  
  3.                         openssl
  4.                         curl 
  5.                       ${log-lib})  

还有说加单个(也许).a时用这种写法:

  1. add_library( 
  2.              native-lib  
  3.    
  4.              SHARED  
  5.   
  6.              src/main/cpp/native-lib.cpp )  
(也就是AndroidStudio默认的NDK配置下)

下面添加

  1. #添加自己所需的静态库 库多的话,可以使用下面的方式添加  
  2.  add_library( event    #库名字 去掉了 lib 与 .a  
  3.               STATIC   #必须的  
  4.               IMPORTED #必须的  
  5. )  
  6. set_target_properties(  
  7.               event       
  8.            PROPERTIES IMPORTED_LOCATION  
  9.            ${CMAKE_SOURCE_DIR}/libs/libevent.a #库在的路径,以cmakeList.txt所在的路径起  
  10. )  
(反正是.a文件,有个lib前缀也没什么。)


下面是.so的添加方法:



最后再说一句,要指定编译的CPU平台类型(当然是指C++,Java不用考虑这些),可以在.mk中设置

APP_ABI := armeabi armeabi-v7a

也可在ndk-build 指令后添加这句。


另设置NDK路径时要设为ndk-build所在的文件夹,新版的NDK一般在NDK根目录,r10d等等在NDK目录/build中。

你可能感兴趣的:(Cocos2dx)