赖振军 发表于 2016-7-21 18:00:35

Realtek android平台快速入门指南

一、android 系统分区及根文件系统目录结构 1、系统分区 目前我们的2992平台,android 系统暂时分了多个分区, /data 分区可读写 /system分区只读file:///C:/Users/LAIZHE~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg                  2.1.1---系统分区图 2、根文件系统目录结构file:///C:/Users/LAIZHE~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg 2.2.1---android 根目录结构 cache :是缓存临时文件夹,etc :指向 /system/etc ,众所周知的配置文件存放目录system :是Android根文件系统中一个很重要的目录,系统中的大部分东西都在这里了sys:用于挂载 sysfs文件系统。。proc :/proc 文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。mnt:U盘等外部存储设备挂载路径data :存放用户安装的软件以及各种数据。dev :设备节点文件的存放地。Init: 是系统启动到文件系统的时候第一个运行的程序init.rc :系统初始化脚本…….……… Android中的内核启动后,kernel会启动第一个用户级别的进程:init,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。 file:///C:/Users/LAIZHE~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg2.2.2---init 进程 Init源码位置:JB目录下system/core/init/init.c中。Init作用:(1)、 创建一些linux根文件系统中的目录(2)、读取并且解析init.rc文件(3)、读取并且解析硬件相关的init.magellanbroad.rc脚本文件(4)、初始化动态设备管理,设备文件有变化时反应给内核(5)、启动系统属**: system property service(6)、启动init.rc中定义的boot 等各种action和service.……… file:///C:/Users/LAIZHE~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg2.2.2---system目录结构 System 目录结构分析\system\app 这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件, 在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\app。\system\bin这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件\system\etc从文件夹名称来看保存的都是系统的配置文件\system\fonts字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库\system\frameworkframework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架\system\liblib目录中存放几乎所有的共享库(.so)文件\system\media铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音\system\xbin系统员管理工具build.prop系统全局属性……..…….特别说明:build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。1、查看build.prop#getprop……: : []: : : : : : ….. # getprop ro.sf.lcd_density//查看单个属性2、设置属性#setprop ro.sf.lcd_density240
二、替换android系统文件分别可通过U盘copy 和adb push等方式替换U盘里放需要替换的文件1、U盘插进板子USB接口、usb会自动mount在系统跟目录的/mnt/udisk目录下2、先删除掉系统中需要替换的文件3、命令cp 相应文件到自己的目录adb push方式1、adb连接设备2、adb push 本地替换文件目录android系统相关目录 ps:替换android 系统apk(atv.apk)1、 系统apk 存放在/system/app目录下,系统system分区默认为只读的,首选需要重新mountsystem 目录 成为可读写#mount –o remount rw /system2、 删除atv.apk#rm /system/app/atv.apk如需为了push进系统的apk里面生效我们还需删除掉apk在/data/data目录下生成的相应数据#pm install com.realtek.atv3、push 新的apk进系统#adb push d:\atv.apk /system/app
三、 android 独立模块的编译(apk、so、jar档等) android的编译命令有m mm mmm等三个编译命令 m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件 想使用这些命令,首先需要在android源码根目录执行.build/envsetup.sh 脚本设置环境#source ./build/envsetup.sh或者#. build/envsetup.sh Ps:1、编译apk    Y:\Workspace\kernel\android\JB\device\realtek\app\atvphoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./device/realtek/apps/Atv/将会在下面的目录下生成atv.apkY:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\app/atv.apk 2、编译jar档Y:\Workspace\kernel\android\JB\frameworks\base\services\javaphoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./ frameworks/base/services/java将会在下面的目录下生成services.jarY:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\framework\ services.jar 为了每次都要输入TARGET_PRODUCT对应的产品编号可以做如下操作: phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$lunchYou're building on Linux Lunch menu... pick a combo: ……13.rtk_magellan_tv001-eng14. magellan_tv010-eng…….Which would you like? 14….phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ 四、TvServer 简介 1、TvServer源码编译(1)    进入Y:\Workspace\system\src 目录#make(2)    编译完成后进入Y:\目录Workspace\system\project\TvServer #make release(3)    会在Y:\Workspace\system\project\TvServer\bin目录下生成相应的Clienttest和TvServer 2、TvServer 的启动(1)    TvServer 位于android 系统的\system\rtk_rootfs\usr\local\bin目录下(2)    TvServer服务系统如何设定自动启动Init.rc中添加service magellan-setup /system/bin/sh /init.magellan.shclass mainoneshotinit.magellan.sh 中添加cd /usr/local/bin; ./TvServer >/dev/c**ole 2>&1 &备注:最后一个“&”代表系统后台背景下运行这样在init启动的过程中会自动启动TvServer服务 3、TvServer 和android 关系file:///C:/Users/LAIZHE~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg 五、   Eclipse 使用注意事项 1、android 标准apijar包android.jar替换rtk平台android.jar( 包含TvManager 等rtk平台自己的api) android.jar路径:Y:\Workspace\kernel\android\JB\out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\class.jar 2、编译依赖第三方jar包 工程目录下先建libs目录。第三方jar放进libs目录即可,编译过程第三方jar包会编进apk等。
六、常用知识汇总 1、使用am command#Am start –n packagename/ class name(可以从AndroidManifest.xml找到)//启动浏览器#am start -ncom.android.browser/com.android.browser.BrowserActivity//启动图片播发器#am start -ncom.skyworth.pictureplayer/com.skyworth.pictureplayer.activity.PlayerActivity 2、Clienttest 的使用 一款我们可以用来测试TvServer 功能android客户端的工具Clienttest 工具的源码位于TVserver 源码目录中Y:\Workspace\system\project\TvServer\ClientTestSrcClienttest 工具存放于\system\rtk_rootfs\usr\local\bin目录下Ps:1、切source#./clienttest –src 1//切到atv 通道#./clienttest –src 5/切到hdmi1通道2、自动搜台#./clienttest –san//自动搜台 3、设置系统音量#./Clienttest–vol 50 //设置系统音量50 详细的Clienttest 功能测试命令可参考:Y:\Workspace\system\project\TvServer\ClientTestSrc\ParamParse.cpp中的void ProcessParam(intargc, char **argv, RpcClient& client, int i){// Test TvChannel API    if (strstr(argv, "-first"))PlayFirstChannel(client);    else if (strstr(argv,"-next")) PlayNextChannel(client);    else if (strstr(argv,"-prev")) PlayPrevChannel(client);else if (strstr(argv, "-playHisCh")) PlayHistoryChannel(client);…….…….} 4、遥控器设定#setir –p 1 //设置rtk公版遥控器#setir –p 5 //设置skyworth 遥控器 5、input 模拟按键输入(详细键值可查看keyevent.java)#input keyevent 3//home 按键#input keyevent 4 //返回按键 6、make update-api修改了framework之后全编ICS 需要make update-api然后在全编 make update-api #如果你在Android源码中添加了自定义的包、类、方法或者你修改了Android源码中标识为@hide的方法、类, 你需要这些内容对 Application可见并且需要编译进SDK的Document中的话,这个命令是必须的

bean.yang 发表于 2016-7-22 09:06:22

MStar有没?

赖振军 发表于 2016-7-25 10:50:00

都是大同小异的

lailiuming 发表于 2016-7-25 15:09:13

:o:o:o:o:o

halleyhuang 发表于 2016-7-25 18:12:41

科普了,感谢分享
页: [1]
查看完整版本: Realtek android平台快速入门指南