搜索
 找回密码
 立即注册

简单一步 , 微信登陆

Realtek android平台快速入门指南

作者:赖振军 | 时间:2016-7-21 18:00:35 | 阅读:7360| 只看该作者
一、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.jpg
2.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 等各种actionservice.
………
file:///C:/Users/LAIZHE~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg
2.2.2---system目录结构
System 目录结构分析
\system\app
这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件, 在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\app。
\system\bin
这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件
\system\etc
从文件夹名称来看保存的都是系统的配置文件
\system\fonts
字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库
\system\framework
framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架
\system\lib
lib目录中存放几乎所有的共享库(.so)文件
\system\media
铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音
\system\xbin
系统员管理工具
build.prop
系统全局属性
……..
…….
特别说明:
build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。
1、查看build.prop
#getprop
……
[ro.secure]: [0]
[ro.serialno]: []
[ro.sf.lcd_density]: [160]
[ro.wifi.channels]: [14]
[service.adb.tcp.port]: [5555]
[service.bootanim.exit]: [1]
[sys.boot_completed]: [1]
[sys.usb.config]: [adb]
…..
# getprop ro.sf.lcd_density  //查看单个属性
2、设置属性
#setprop ro.sf.lcd_density  240

二、替换android系统文件
分别可通过Ucopy adb push等方式替换
U盘里放需要替换的文件
1、  U盘插进板子USB接口、usb会自动mount在系统跟目录的/mnt/udisk目录下
2、  先删除掉系统中需要替换的文件
3、  命令cp 相应文件到自己的目录
adb push方式
1、  adb连接设备
2、  adb push 本地替换文件目录  android系统相关目录
ps:替换android 系统apkatv.apk
1 系统apk 存放在/system/app目录下,系统system分区默认为只读的,首选需要重新mountsystem 目录 成为可读写
#mount –o remount rw /system
2 删除atv.apk  
#rm /system/app/atv.apk
如需为了push进系统的apk里面生效我们还需删除掉apk在/data/data目录下生成的相应数据
#pm install com.realtek.atv
3、  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\atv
phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./device/realtek/apps/Atv/
将会在下面的目录下生成atv.apk
Y:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\app/atv.apk
2、编译jar档Y:\Workspace\kernel\android\JB\frameworks\base\services\java
phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./ frameworks/base/services/java
将会在下面的目录下生成services.jar
Y:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\framework\ services.jar
为了每次都要输入TARGET_PRODUCT对应的产品编号可以做如下操作:
phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$lunch
You're building on Linux
Lunch menu... pick a combo:
……
13.rtk_magellan_tv001-eng
14. magellan_tv010-eng
…….
Which would you like? [full-eng] 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.sh
class main
  oneshot
init.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
2Clienttest 的使用
一款我们可以用来测试TvServer 功能android客户端的工具
Clienttest 工具的源码位于TVserver 源码目录中
Y:\Workspace\system\project\TvServer\ClientTestSrc
Clienttest 工具存放于\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 //返回按键
6make update-api
修改了framework之后
全编ICS 需要make update-api  然后在全编
make update-api #如果你在Android源码中添加了自定义的包、类、方法或者你修改了Android源码中标识为@hide的方法、类,
你需要这些内容对 Application可见并且需要编译进SDKDocument中的话,这个命令是必须的

收藏
收藏0
分享
分享
点赞
点赞0
反对
反对0
回复

使用道具 举报

大神点评4

沙发#
bean.yang 发表于:2016-7-22 09:06:22
MStar有没?
回复

使用道具 举报

板凳#
赖振军 发表于:2016-7-25 10:50:00
都是大同小异的
回复 支持 反对

使用道具 举报

地板#
lailiuming 发表于:2016-7-25 15:09:13
回复

使用道具 举报

5#
halleyhuang 发表于:2016-7-25 18:12:41
科普了,感谢分享
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
手机版