android studio2.3如何编译动态库的过程详解

作者:饭后温柔 时间:2023-07-11 03:47:48 

前言

最近在工作中需要编译android下的动态库,本以为是一件简单的事,没想到因为工具,以及google本身被墙的原因,折腾了好久。

在windows外的平台搞事情,寿命都得缩短。

过程如下

一种方案是用eclipse+ndk+adt插件,总之是eclipse下适配android ndk的一套东西,我搜了一些文档,看到一大堆冗余的名字,文件,感觉不对味,放弃。

另一种方案是android studio,初看觉得是大公司出品,且针对的是自家系统的IDE,能保持个一贯性,没想到各个版本差别挺大,一时换一套编译底层,一时换一套构建系统,菜单变换也大,姑且算你迭代很快,不过都出来这么多年了,为啥就不能像visual studio看齐?搞得我在网上搜各种文档还得仔细区分版本,特别是你不熟悉时,简直是斗智斗勇。

1、下载android-ndk,安装。

2、下载android studio 2.3,安装过程会提示你选择ndk目录以及sdk目录,自带了android sdk,建议就用它自带的sdk,不然十有八九又搞出事情。

3、安装好后启动,界面上第一行是创建新工程,创建后会卡上10几分钟进不去,因为android studio需要下载gradle,而国内是下载不了的,于是她妹的卡了,连个提示都没有,vpn重连也没用。所以得去gradle官    网下,这里你还得选择gradle版本,如何查看版本,又是一件蛋疼的事。我是去到C:\Users\用户名\.gradle\wrapper\dists下看到gradle-3.3-all文件夹,选择了下载3.3-all版本,然后把下载到的压缩文件放到              C:\Users\用户名\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9下,才终于顺利通过这一步。

4、创建工程界面,选择c++ support。

5、进去之后,你还有2个东西要下。去到菜单栏tools/android/sdkmanager打开,默认会选中左边导航栏的android sdk选项,右边界面有3个标签sdk platform,sdk tools,sdk update sites,选择中间的sdk tools,    下载cmake,lldb。稍后将用cmake构建c/c++文件。2.3之前的版本还需要配置gradle关联到CMakeLists.txt文件,现在不需要了,所以你如果网上搜到一大堆配置文档就跳过吧。

6、下载后,经常会便秘,你很可能需要重启android studio, 不然新下的库找不到,同步是没有用的。

7、接下来需要配置路径了。首先左边是project视图,在文件树下找到local.properties,追加ndk的路径,虽然你已经在创建工程时选过,但这里还是得填:


ndk.dir=D\:\\sdk\\Android\\android-ndk-r14b

8、接下来添加c/c++源码文件,你在左边的project视图下,找到app/src/main/cpp文件夹,你的源码需要放到这个目录下,去硬盘上找到对应的目录把代码拷进去。

然后在视图右键点击app目录,应该有个synchronize ‘app'选项,点击同步,在cpp下应该可以刷出来你新加的源码了。这里如果是新建工程,记得把native-lib.cpp示例文件删除,不要直接在硬盘删除,通过     ide里右键点击delete,不然很可能又抽一次疯。

你以为完了?远着呢。在src目录下,找到CMakeLists.txt文件,手动添加你的.c或.cpp文件,没错,就是这么任性,你有多少个c文件,就要加多少行如下:


add_library( # Sets the name of the library.
 native-lib

# Sets the library as a shared library.
 SHARED

# Provides a relative path to your source file(s).
 src/main/cpp/lapi.c
 src/main/cpp/lauxlib.c
 src/main/cpp/lbaselib.c
 )

如以上在add_library下添加源码。然后你还得添加头文件目录如下:


# Specifies a path to native header files.
include_directories(src/main/cpp/)

与add_library并列,这里根据你的源码文件目录一个一个添加吧。我在右键选项里发现有new,创建新文件,有import,导入eclipse工程,就是没有add exisiting files选项加入已存在源码...

9、接下来你可能需要更改动态库名,还是在CMakeLists.txt文件里搜索native-lib,都替换为你需要的名字,具体含义自己去搞清楚吧,不赘述了。

10、最右边的垂直标签条,点击build variants,把debug更换为release,编译release版本。

11、点击菜单栏build/make moudle...,应该能生成.so文件了。位置在..\app\build\intermediates\cmake\release\obj下。

来源:http://www.cnblogs.com/flytrace/p/7446277.html

标签:android,studio,编译
0
投稿

猜你喜欢

  • Spring MVC URL地址映射的示例代码

    2022-12-09 19:53:33
  • java对list<Object>进行手动分页实现

    2023-01-13 13:41:01
  • 继承JpaRepository后,找不到findOne()方法的解决

    2022-08-26 18:33:26
  • Android中oncreate中获得控件高度或宽度的实现方法

    2023-09-27 05:32:12
  • Spring MVC 使用支付宝接口完成在线支付的示例代码

    2023-11-29 04:07:55
  • Java实现用户管理系统

    2023-08-26 17:18:21
  • 浅谈maven单元测试设置代理

    2022-03-14 20:23:04
  • Spring源码之循环依赖之三级缓存详解

    2021-11-13 09:31:56
  • Spring中的aware接口详情

    2023-11-29 10:48:29
  • 详解java中BigDecimal精度问题

    2021-08-17 10:24:59
  • Unity 如何获取鼠标停留位置下的物体

    2023-09-05 17:17:14
  • Log4j.properties配置及其使用

    2023-05-14 21:06:18
  • springboot 使用Spring Boot Actuator监控应用小结

    2021-10-02 10:07:27
  • RocketMQ源码分析之Broker过期消息清理机制

    2023-06-10 15:47:43
  • C#使用WebSocket与网页实时通信的实现示例

    2023-02-15 01:22:24
  • eclipse+maven+spring mvc项目基本搭建过程

    2022-12-18 03:50:52
  • C语言实现扫雷游戏源代码

    2021-10-17 14:20:44
  • java格式化数值成货币格式示例

    2023-01-31 06:27:45
  • 浅谈spring中scope作用域

    2022-08-18 10:42:53
  • 详解Spring Bean的集合注入和自动装配

    2023-02-18 15:02:58
  • asp之家 软件编程 m.aspxhome.com