社区
Android
帖子详情
移植C++或者java代码到Android源码的步骤
liufengcool
2011-11-03 10:52:31
本人最近要移植一部分C++的源码到Android源码中,比如3D引擎的开源代码,供上层绘制使用,不是纯应用的java代码,请问
1、这部分代码移植到Android源码中得哪个目录
2、mk文件需要做哪些改变?
3、生成后的.so文件在哪里
4、最后生成烧机文件时怎样会自动生在/system/lib目录下
大牛们请指点
...全文
600
26
打赏
收藏
移植C++或者java代码到Android源码的步骤
本人最近要移植一部分C++的源码到Android源码中,比如3D引擎的开源代码,供上层绘制使用,不是纯应用的java代码,请问 1、这部分代码移植到Android源码中得哪个目录 2、mk文件需要做哪些改变? 3、生成后的.so文件在哪里 4、最后生成烧机文件时怎样会自动生在/system/lib目录下 大牛们请指点
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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这个环境变量的地方加上这个目录。这是链接库路径的一个环境变量,你只要保证系统能找到你的库就行
呱牛 do IT
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)
FFMPEG
移植
到
android
将 FFmpeg
移植
到
Android
平台,可以让
Android
应用程序具备处理多媒体文件的强大能力,比如播放视频、音频,进行格式转换等。在
Android
上
移植
FFmpeg 需要对 C/
C++
语言、
Android
NDK(Native Development Kit...
FFmpeg的
Android
平台
移植
源码
Android
NDK(Native Development Kit)允许开发者在
Android
应用中使用原生C/
C++
代码
,为FFmpeg
移植
提供了基础。 2. **交叉编译**: 由于
Android
系统与Linux有所不同,需要通过交叉编译来生成适用于
Android
架构的...
android
源码
目录介绍及
移植
###
Android
源码
目录详解与
移植
概述
Android
操作系统作为全球最广泛使用的移动设备操作系统之一,其
源码
目录结构庞大且复杂,涉及多个层面的软件开发,包括底层硬件驱动、中间件、用户界面以及各类应用程序。本文将...
cpp-Lua533和Lua
Java
移植
至
Android
的示例
这里我们探讨的是将Lua 5.3.3和Lua
Java
移植
到
Android
环境中的具体
步骤
和关键知识点。 首先,Lua 5.3.3是Lua语言的一个版本,它提供了一些新特性,比如改进的数字处理、元表的隐式拷贝以及新的语法结构。在
Android
中...
android
ndk下编译的live555
源码
(新版)
在
Android
系统中,由于原生的
Java
API无法直接处理这些底层的流媒体协议,因此需要借助于NDK(Native Development Kit)来实现C或
C++
代码
的编译,将Live555
移植
到
Android
平台。 **关于Live555:** Live555是一个...
Android
80,471
社区成员
91,385
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章