社区
Android
帖子详情
移植C++或者java代码到Android源码的步骤
liufengcool
2011-11-03 10:52:31
本人最近要移植一部分C++的源码到Android源码中,比如3D引擎的开源代码,供上层绘制使用,不是纯应用的java代码,请问
1、这部分代码移植到Android源码中得哪个目录
2、mk文件需要做哪些改变?
3、生成后的.so文件在哪里
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
大牛们请指点
...全文
585
26
打赏
收藏
移植C++或者java代码到Android源码的步骤
本人最近要移植一部分C++的源码到Android源码中,比如3D引擎的开源代码,供上层绘制使用,不是纯应用的java代码,请问 1、这部分代码移植到Android源码中得哪个目录 2、mk文件需要做哪些改变? 3、生成后的.so文件在哪里 4、最后生成烧机文件时怎样会自动生在/system/lib目录下 大牛们请指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liufengcool
2011-11-10
打赏
举报
回复
[Quote=引用 24 楼 challchampion 的回复:]
我的理解:
1.放在哪个目录下并不重要,遵照习惯固然好,但也可以放在其他目录下
2.mk文件和makefile的道理是一样,只是google精简了它,但是目标,依赖,规则这三要素还是存在,你编译的目标要指定,依赖的共享库,静态库要指定,头文件路径要加入,必要的编译选项,链接选项需具备,编译规则只要include google预定义的那几个变量就可以
3. 生成后的so文件在哪在你编译完之后……
[/Quote]
“编译的目标,依赖的共享库,静态库,头文件路径,编译选项,链接选项,编译规则” 这些makefile的结构和规则正在熟悉中。多谢!
liufengcool
2011-11-10
打赏
举报
回复
[Quote=引用 20 楼 cdbdyx 的回复:]
上面说错了,应该是BUILD_SHARED_LIBRARY
另外我想跟你说一下.mk的大概原理,顺便自己也屡一下
.mk只是一个文本,并不是sh脚本
真正负责make工作的在build/下,这里面有真正的Makefile和一些sh脚本
当你在根目录下make时或者mmm时
后台的makefile会递归所有目录,把所有的android.mk包含到makefile文件中来,类似这样
。。。。
frameworks/ex/common/Android.mk
frameworks/base/Android.mk
frameworks/opt/emoji/Android.mk
。。。。
而每个android.mk的写法都是
LOCAL_SRC_FILES:=xxxx
#include BUILD_xxxxxxx
而BUILD_xxxxxxx又可以替换为类似下面的
c_arm_sources := $(patsubst %.c.arm,%.c,$(filter %.c.arm,$(LOCAL_SRC_FILES)))
c_arm_objects := $(addprefix $(intermediates)/,$(c_arm_sources:.c=.o))
c_objects := $(c_arm_objects) $(c_normal_objects)
$(c_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.c $(yacc_cpps) $(LOCAL_ADDITIONAL_DEPENDENCIES)
所以,最终也就是生成了一个多个target的makefile,跟普通makefile没啥区别
而你要做的就是按照android.mk的格式,填好就行了
[/Quote]
恩,这个看懂了,就是扫描所有的Android.mk文件。然后由 /Build 目录下的若干定义好的mk文件来统筹编译
challchampion
2011-11-09
打赏
举报
回复
我的理解:
1.放在哪个目录下并不重要,遵照习惯固然好,但也可以放在其他目录下
2.mk文件和makefile的道理是一样,只是google精简了它,但是目标,依赖,规则这三要素还是存在,你编译的目标要指定,依赖的共享库,静态库要指定,头文件路径要加入,必要的编译选项,链接选项需具备,编译规则只要include google预定义的那几个变量就可以
3. 生成后的so文件在哪在你编译完之后会有提示,你不必纠结它在哪,只要它最后出现在你的烧机文件系统里就ok,你可以手动拷贝到烧机用的根文件系统的某一目录下
4. 通常so库是出现在/system/lib下,但你也可以不放在这一目录,随便某一目录都行,只是别忘了在init.rc里指定LD_LIBRARY_PATH这个环境变量的地方加上这个目录。这是链接库路径的一个环境变量,你只要保证系统能找到你的库就行
Jay_+wqq_635731323
2011-11-09
打赏
举报
回复
NDK开发,网上例子一把把的。[Quote=引用 20 楼 cdbdyx 的回复:]
引用 14 楼 liufengcool 的回复:
引用 13 楼 yiyaaixuexi 的回复:
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/sys……
[/Quote]
Calon Mo
2011-11-09
打赏
举报
回复
[Quote=引用 6 楼 liufengcool 的回复:]
大牛白天不出没么?
[/Quote]
你猜对了,大牛都是凌晨1,2点行动的。
liufengcool
2011-11-09
打赏
举报
回复
[Quote=引用 16 楼 yiyaaixuexi 的回复:]
引用 14 楼 liufengcool 的回复:
引用 13 楼 yiyaaixuexi 的回复:
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/sy……
[/Quote]
哎,一声叹息~ 更有后来着无数声叹息。。。
liangpingyy
2011-11-09
打赏
举报
回复
期待大神们的精彩答案!
充电宝111
2011-11-09
打赏
举报
回复
[Quote=引用 14 楼 liufengcool 的回复:]
引用 13 楼 yiyaaixuexi 的回复:
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
具体原因需要细细分析build……
[/Quote]
上面说错了,应该是BUILD_SHARED_LIBRARY
另外我想跟你说一下.mk的大概原理,顺便自己也屡一下
.mk只是一个文本,并不是sh脚本
真正负责make工作的在build/下,这里面有真正的Makefile和一些sh脚本
当你在根目录下make时或者mmm时
后台的makefile会递归所有目录,把所有的android.mk包含到makefile文件中来,类似这样
。。。。
frameworks/ex/common/Android.mk
frameworks/base/Android.mk
frameworks/opt/emoji/Android.mk
。。。。
而每个android.mk的写法都是
LOCAL_SRC_FILES:=xxxx
#include BUILD_xxxxxxx
而BUILD_xxxxxxx又可以替换为类似下面的
c_arm_sources := $(patsubst %.c.arm,%.c,$(filter %.c.arm,$(LOCAL_SRC_FILES)))
c_arm_objects := $(addprefix $(intermediates)/,$(c_arm_sources:.c=.o))
c_objects := $(c_arm_objects) $(c_normal_objects)
$(c_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.c $(yacc_cpps) $(LOCAL_ADDITIONAL_DEPENDENCIES)
所以,最终也就是生成了一个多个target的makefile,跟普通makefile没啥区别
而你要做的就是按照android.mk的格式,填好就行了
充电宝111
2011-11-09
打赏
举报
回复
看什么机密资料啊,都不如看android官网的资料
充电宝111
2011-11-09
打赏
举报
回复
[Quote=引用 13 楼 yiyaaixuexi 的回复:]
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
具体原因需要细细分析build/envsetup.sh 你愿意自己学习探究下吗哈哈……
[/Quote]
2.根据原来makefile的写法,改成android.mk的写法,但是如果原来是automake的就有点麻烦
4.在android.mk里面加入#include BUILD_LIBRARY好像直接就默认放到system/lib/下
抱雪过冬
2011-11-06
打赏
举报
回复
我也遇到这样的问题,需要把2.3的东西移植到2.2,但是依赖太多,求大神给点思路!
念茜
2011-11-06
打赏
举报
回复
[Quote=引用 14 楼 liufengcool 的回复:]
引用 13 楼 yiyaaixuexi 的回复:
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
具体原因需要细细分析build……
[/Quote]
擦除这件事我也有想过,可是大致看了下,不是个小工程,哎……擦完了 不剩什么了
liufengcool
2011-11-04
打赏
举报
回复
[Quote=引用 13 楼 yiyaaixuexi 的回复:]
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
具体原因需要细细分析build/envsetup.sh 你愿意自己学习探究下吗哈哈……
[/Quote]
我接下来要做得就是:
1、熟悉mk脚本;
2、三思:汝让三思,君不得不思。
3、代11楼和12楼建议:资料的机密位置擦除,共享出来?
念茜
2011-11-04
打赏
举报
回复
1、这部分代码移植到Android源码中得哪个目录
放在external/下是比较规矩的做法
2、mk文件需要做哪些改变?
这个要具体情况具体分析了……
3、生成后的.so文件在哪里
out/下的system/lib/
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
具体原因需要细细分析build/envsetup.sh 你愿意自己学习探究下吗哈哈……
至于英文资料,我很抱歉里面涉及了一些项目保密信息,所以……
不过,android下c++是有缺陷的:比如exception,虚函数的支持等等,望君三思。
jdpxiaoming
2011-11-04
打赏
举报
回复
版主我爱你 麻烦给 爱你的人 也发一份 302940116@qq.com
liufengcool
2011-11-03
打赏
举报
回复
大牛还未现身
wenkebilly
2011-11-03
打赏
举报
回复
求资料,512201267@qq.com,谢谢
sharco
2011-11-03
打赏
举报
回复
[Quote=引用 8 楼 yiyaaixuexi 的回复:]
今天去参加移动开发者大会了
英文资料给你愿意看吗
[/Quote]
羡慕,深圳这种机会好少
liufengcool
2011-11-03
打赏
举报
回复
我愿意!
邮箱:xuan-cool@126.com。辛苦念茜!
[Quote=引用 8 楼 yiyaaixuexi 的回复:]
今天去参加移动开发者大会了
英文资料给你愿意看吗
[/Quote]
念茜
2011-11-03
打赏
举报
回复
今天去参加移动开发者大会了
英文资料给你愿意看吗
加载更多回复(4)
android
java
项目
源
码-open_nsfw_
android
::fire::fire::fire:色情图片离线识别,基于TensorFlow实现。识别只需20ms,可
识别只需20ms,可断网测试,成功率99%,调用只要一行
代码
,从雅虎的开
源
项目open_nsfw
移植
,该模型文件可用于iOS、
java
、C++等平台 :warning::warning::warning: 已从jCenter仓库迁移到Maven,原引用地址发生变更,...
Android
中c++调用
java
Android
中c++调用
java
java
类的实例化 都知道
java
需要 obj var = new obj();这样一个过程,我们在C++中调用
java
类的成员函数,当然也要先示例话一个类。 示例化的函数如下所示 jobject getInstance(JNIEnv* ...
Android
移植
基础
该课程可以让学员了解
Android
系统架构、学习如何下载
Android
源
码、编译及开发
Android
、学习如何追踪
Android
源
码、了解Linux内核启动流程、了解
Android
启动流程、学习如何
移植
外部函式库至
Android
源
码中。
Android
Studio向项目添加C/C++原生
代码
教程
Android
Studio向项目添加C/C++原生
代码
教程 转自:http://www.cnblogs.com/lsdb/p/9337285.html 说明:本文相当于官方文档的个人重新实现,官方文档链接:...
终极篇 C++算法到安卓的
移植
——AS调用VS的so库
目的:windows平台下的c++算法,需要
移植
到安卓系统上。平时用惯了Visual Studio,再在其他软件上重新写算法,调试算法,实在头疼。所以我用VS的c++移动开发功能创建动态共享库,将算法内容放入,并实现JNI和
JAVA
...
Android
80,357
社区成员
91,290
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章