`
dengzhangtao
  • 浏览: 666595 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

系统开发--最近使用到的

阅读更多
putty ssh(linux客户端)
源码镜像 服务器: 192.168.247.70
帐号密码:hiapk/12121212

repo init -u git://192.168.247.70/cm/CyanogenMod/android.git -b cm-10.1
repo sync

git clone git://192.168.247.70/cm/CyanogenMod/android.git -b cm-10.1


镜像同步时不会同步devices文件下的,
要同步的化  
在源码的.repo下新建manifest.xml
vi manifest.xml
mv local_manifest.xml.bak  local_manifest.xml
vi local_manifest.xml
增加<project name="CyanogenMod/android_device_samsung_maguro" path="device/samsung/maguro" remote="github"
repo
搞定

#set java environment 
export JAVA_HOME=/home/dengzt/下载/jdk1.6.0_20
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib 
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 

/etc/profile
#set NDK env
export NDK_HOME=/home/dengzt/android/android-ndk-r8d
export PATH=$NDK_HOME:$PATH

export PATH=/home/dengzt/android/android-sdk-linux/platform-tools/:$PATH
NDK_ROOT=/home/dengzt/android/android-ndk-r8d/
export NDK_ROOT

软件:
putty
geany
dock
sqlite
meld diff
gitg

在编译cm-10.1时候,Term.apk出错,因为Term.apk是cm不开源的
解决:
进入 /vendor/cm$  ./get-prebuilts
,
手机刷到4.2后,总是adb shell 出现,device offine,
解决: 更新android-sdk  的tools, ,操作:运行tools下的android。

根据Android启动过程的来裁剪:
。  定制本地服务
。  定制Android系统服务
。  优化ZygoteInit的类预加载preloadClasses和资源预加载preloadResources机制
。  PackageManagerService扫描、检查APK安装包信息

-----------裁剪记录:

一,定制本地服务
修改/system/core/rootdir/init.rc
1,去掉电话模块
# modify by dengzt 2013,8,28
#service ril-daemon /system/bin/rild
#    class main
#    socket rild stream 660 root radio
#    socket rild-debug stream 660 radio system
#    user root
#   group radio cache inet misc audio sdcard_r sdcard_rw log
2,系统调试
# modify by dengzt 2013.11.14
#service debuggerd /system/bin/debuggerd
#    class main
3 蓝牙
#service bluetoothd /system/bin/bluetoothd -n
#    class main
#    socket bluetooth stream 660 bluetooth bluetooth
#    socket dbus_bluetooth stream 660 bluetooth bluetooth
    # init.rc does not yet support applying capabilities, so run as root and
    # let bluetoothd drop uid to bluetooth with the right linux capabilities
#    group bluetooth net_bt_admin misc
#    disabled



init.rc启动了服务zygote,而ZygoteInit启动了systemServer,所有zygote服务不能整个去掉
/frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
服务zygote的装载一千多个类和初始化堆栈的过程,用了20秒左右。
ZygoteInit.java的preloadClasses加载了1千多个类。。
/frameworks/base/preloaded-classes
虽然preloaded-classes是在下载源码的时候已经确定了的,也就是对我们来说WritePreloadedClassFile类是没用到的,我们可以做的就是在preloaded-classes文件中,把不预装载的类去掉,试了把所有类去掉,启动确实很快跳过那个地方,但是启动HOME的时候就会很慢了
裁剪文件preloaded-classes:暂时全部清空



另一个是扫描
/system/app,
/system/framework,
/data/app,
/data/app-private.
这几个目录下面的package用了大概10秒,所以我们重点能够修理的就是这两个老大的。

我这里先不修改扫描的方法,只要把系统应用裁剪了就好了。。我裁剪到了10几个

二,定制Android系统服务SystemServer.java

1,去掉电话服务
//ServiceManager.addService("telephony.registry", new TelephonyRegistry(context));

2,去掉震动服务
//modify by dengzt 2013,8,28
//Slog.i(TAG, "Vibrator Service");
//vibrator = new VibratorService(context);
//ServiceManager.addService("vibrator", vibrator);

其他的有待裁剪

三,裁剪系统应用
只保留了10几个:
am335x.apk工厂测试(这个放在data/app/下,不做为系统应用)
ApplicationsProvider.apk这个暂时不知道是什么
Browser.apk
FileManager.apk
Gallery2.apk
Launcher2.apk
MediaProvider.apk
PackageInstall.apk
PinyinIME.apk
Settings.apk
SettingsProvider.apk
SoundRecorder.apk
SystemUI.apk
DefaultContainerService.apk
DrmProvider.apk
UserDictionaryProvider.apk

=================
1在Settings,增加工厂测试到launcher,方便测试开发测试程序
<activity android:name="TestingSettings" android:label="@string/testing">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />  //add
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
</activity>

2修改MasterClear.java ,恢复出厂设置,改为重启到recovery模式
  PowerManager pm = (PowerManager)getActivity(). getSystemService(Context.POWER_SERVICE);
              pm.reboot("recovery");
3,锁屏修改成全屏:
LockScreen.java的
@Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        if (LockPatternKeyguardView.DEBUG_CONFIGURATION) {
            Log.v(TAG, "***** LOCK ATTACHED TO WINDOW");
            Log.v(TAG, "Cur orient=" + mCreationOrientation
                    + ", new config=" + getResources().getConfiguration());
        }
        updateConfiguration();
        this.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);//mod by  dengzt 2013 9.17
    }
4,修改默认语言为中文
在out/产品/ 修改system.prop和system下的build.prop增加
# modif by dengzt 2013.11.12
persist.sys.language=zh #这里是我添加上去的
persist.sys.country=CN
persist.sys.localevar=
persist.sys.timezone=Asia/Beijing #原版是shanghai
ro.product.locale.language=zh
ro.product.locale.region=CN
# modif end

或者在编译前:
在/build/target/product/core.mk下
    PRODUCT_PROPERTY_OVERRIDES := \  
        ro.config.notification_sound=OnTheHunt.ogg \  
        ro.config.alarm_alert=Alarm_Classic.ogga \  
        persist.sys.language=zh \增加的
        persist.sys.country=CN

四,破解系统的root权限
修改文件/system/extra/su/su.c
1. /*if (myuid != AID_ROOT && myuid != AID_SHELL) {
        fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
        return 1;
    }*/
2.在init.rc增加权限
#add by dengzt 2013.11.15
chmod 4755 /system/xbin/su
编译make su TARGET_PRODUCT=am335xevm 生成新的su可执行文件,替换/system/xbin/下
亲测可行了。。。。

其他注意:
1在我的工厂测试应用里用到了so库,如果当作系统应用的话,会找不到so库,需要放在系统的制定目录下。

编译文件系统之前,设置下内核编译,貌似会影响到文件系统的编译
编译内核,原来内核对性能也很关键,先设置
cd kernel
make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig

出现蓝色框框
选kernel features-->preemption model-->Preemptible Kernel (Low-Latency Desktop)
Exc Exc两下返回,退出,save



dos:
使用ftp上传到服务器
ftp 172.16.20.25
ftp>user caizf
ftp>startp1

使用lcd命令设置ubuntu下文件接收位置

ftp>lcd /home/glorin/work/linux

ftp>cd /tmp
ftp>put android_rootfs_tar.gz
-------------------------------------
SecureCRT中:
开一个TeInet ,端23
账号密码caizf ,startp1

常用命令:
android板,串口,网卡ok后,加载网络文件系统
开机回车,
pr
run netboot
root
pwd
cd /


解压tar xvzf /tmp/android_rootfs_0.tar.gz -C .
mkdir dzt_rootfs

cp nand-rootfs.20131223/* /mnt/cf/ -af
df
sync

logcat *:w
ping -c 1 -w 1 172.16.3.162

setenv bootfile uImage.3rd.desktop3

cd kernel
make menuconfig
make clean
make kernel.img

cd 目录
在该目录下搜索
grep kkk  *




在nfs上加载nand分区命令
1. ubiattach /dev/ubi_ctrl -m 7 -O 2048
2. mount -t ubifs ubi0:rootfs /mnt/cf/
卸载nand分区命令
1.umount /mnt/cf/
2. ubidetach /dev/ubi_ctrl -m 7


BT/FM/GPS would be unavailable on system
I/SurfaceFlinger(  331): SurfaceFlinger is starting
I/SurfaceFlinger(  331): SurfaceFlinger's main thread

ready to run. Initializing graphics H/W...
E/FramebufferNativeWindow(  331): couldn't open

framebuffer HAL (Not a typewriter)
E/FramebufferNativeWindow(  331): couldn't open gralloc

HAL (Not a typewriter)
E/SurfaceFlinger(  331): Display subsystem failed to

initialize. check logs. exiting...

pr
setenv serverip 172.16.3.162
saveenv
setenv rootpath /nfsroot/linux_rootfs
setenv bootfile uImage.3rd.gt_rst

nand erase 0x280000 0x3a0000

cp config.am335x.3rd .config

Settings.Secure.putString(getContentResolver(),

Settings.Secure.TTS_DEFAULT_SYNTH, "com.iflytek.tts");
engine:包名com.ik.xx

adb shell
cat /proc/cpuinfo

烧写内核:
setenv bootfile uImage.3rd.desktop3
dhcp
擦出nandflash
nand erase 0x280000 0x400000
nand write 0x80007fc0 0x280000 0x400000

nand write srcaddr destaddr size



1、  去除休眠

frameworks/base/packages/SettingsProvider/res/values/de

faults.xml


里<integer

name="def_screen_off_timeout">60000</integer>

60000ms,修改为-1。-1代表0xffffffff,等于永远不要休眠了

2、  去除锁屏

Frameworks/base/policy/src/com/android/internal/policy/

impl/KeyguardViewMediator.java

/热插拔usb和sdcard
在system/etc/vold.fstab
dev_mount sdcard /storage/sdcard0 3

/devices/platform/omap/omap_hsmmc.0/mmc_host/mmc0
其中的3改成auto,既自动挂载。

WindowManagerService
PowerManagerService
ActivityManagerService
PackgeManagerService

本地服务的zygote在init.rc启动
这个zygote进程要执行的程序是/system/bin/app_process
源码在app_main.cpp
开始android运行环境


在init.am335xevm.rc 中加入开机自动加载ko模块
on boot
# Default Read Ahead value for sdcards
    write /sys/block/mmcblk0/queue/read_ahead_kb 2048

# wi-fi
    mkdir /data/misc/wifi/sockets 0770 wifi wifi
    mkdir /data/misc/dhcp 0770 dhcp dhcp
    insmod /system/lib/modules/compat.ko
    insmod /system/lib/modules/cfg80211.ko
    insmod /system/lib/modules/mac80211.ko
    insmod /system/lib/modules/wlcore.ko
    insmod /system/lib/modules/wl12xx.ko
    insmod /system/lib/modules/wl18xx.ko

    chmod 0770 /system/lib/modules/destroy.ko
    insmod /system/lib/modules/destroy.ko

如果想定义defaults.xml中没有的,在这里添加后,需修改frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java,加入自己的存储代码。

读、写、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,rw-r--r--用数字表示成644。

快速打包system.img----- make snod

网络adb
busybox ifconfig eth0
setprop service.adb.tcp.port 5555
stop adbd
start adbd

adb connect 172.16.20.9:5555

mkdir
mount -o remount,rw rootfs /
mount -o remount,rw ubi1_0 /system
chmod 777 /system/bin/vold

系统权限是没权限访问sdcard的。

去掉init.am335x.rc 中的uim服务。

系统应用也可以安装到/data/app/
修改chmod 777 /storage  可以访问sdcard了

去掉init.am335x.rc 中的uim服务。

系统应用也可以安装到/data/app/
修改chmod 777 /storage  可以访问sdcard了

ipconfig /flushdns 手动清dns

不能直接烧out下面的system.img
因为格式不是ext3,开机会出现挂载不了system

使用system应用asset.apk来实现 预安装
在asset.apk修改后缀名rar后,打开增加删除assets目录的apk来实现自动安装
分享到:
评论

相关推荐

    安卓软件开发--毕业设计开题报告安卓软件文献翻译.docx

    在本次的项目中主要用到的就是当前的经度和纬度,在查看我们周边商家的信息的时候,将当前的经度纬度发送到后台,计算出距离自己最近的商家,并且按照距离来展示出周边的详细情况。 安卓自带关系型数据库SQLite...

    新浪微博开放平台开发-android客户端

    最近不是太忙,花了一些时间学习android的应用开发。经过两个星期的学习,学习的同时还写了很多的demo示例,可以从基本控件及基本动画效果等示例demo集合大放送,持续更新下载。 从这个星期开始,准备拿新浪微博...

    python项目开发实战_学生信息管理系统-IDLE控制台程序_编程案例实例详解课程教程.pdf

    本章使用 Python语言开发了一个学生信息管理系统,该系统可以帮助教师快速录入学生的信息,并且对学生的信息进行基本的增、删、改、查操作;还可以根据排序功能,宏观地看到学生成绩从高到低的排列,随时掌握学生近期的...

    基于Python(爬虫)的股票系统stock-master.zip

    5)使用tornado开发web系统,支持每日股票数据-东财,龙虎榜-个股上榜-新浪,数据中心-大宗交易行情等。 6)数据展示系统,是通用数据展示系统,配置字典模板之后,页面自动加载数据,并完成数据展示,后续自己开发...

    基于android的手机列车订票系统开发(带论文报告)

    基于android、ios等主流移动终端系统生态链的日趋完善,激发了以大数据为背景的数据市场活力,特别是与我们生活息息相关的购物、旅游、餐饮都由传统的web端转移到了app移动终端上,特别是最近几年兴起的以去哪儿、...

    股票系统 使用python进行开发

    5)使用tornado开发web系统,支持每日股票数据-东财,龙虎榜-个股上榜-新浪,数据中心-大宗交易行情等。 6)数据展示系统,是通用数据展示系统,配置字典模板之后,页面自动加载数据,并完成数据展示,后续自己开发...

    SSM-混合音乐推荐系统-毕业设计-MySQL

    本系统主要通过隐式地收集用户对歌曲的播放,下载以及收藏行为记录,进而使用基于最近邻用户的协同过滤推荐算法为当前激活用户推荐歌曲; 对于有歌词信息的歌曲(英文),通过基于异构文本网络的词嵌入来计算歌曲之间的...

    模块开发卷宗-GB8567-88.docx

    编排日期(说明整个卷宗最近的一次编排日期) 2、模块开发情况表 3、功能说明 扼要说明本模块(或本组模块)的功能,主要是输入、要求的处理、输出。可以从系统设计说明书中摘录。同时列出在软件需求说明书中对这些...

    Python开发的全栈股票系统.zip

    5)使用tornado开发web系统,支持股票数据,沪深300成份股,中证500成份股,龙虎榜数据,每日股票数据,每日大盘指数行情等 6)数据展示系统,是通用数据展示系统,配置字典模板之后,页面自动加载数据,并完成数据...

    基于框架的Web开发-开发文档.doc

    1 系统介绍 1.1 数据表 (1) t_user表 该表记录用户基本信息:用户名、密码、积分(每次登录+5分),最近登录时间和最近登录ip(每次登录更新)。 (2) t_login_log表 该表记录用户的每次登录信息,每登录一次,添加一...

    嵌入式实时操作系统uCOSII-邵贝贝

    过去几年中,我进了会议的顾问委员会(Advisory Committee),最近的几次会上,每次的会议我都要做至少三次讲演,每次的听众都在200到300人之间。会议对我的讲演的评价总是在前10%。 至今,μC/OS的书已售出了15,000...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    最近抽些时间,更新到eclipse3.6上来,既作为为广大Eclipser入门plugin/RCP开发的一个方便之门,也是对自己近年来学习的一个总结吧。 每一章都会单独提取出来,并尽可能的独立于其他章节,更新中的源代码工程也会...

    基于PHP开发的B站公开在线抽奖登记系统源码+数据库+运行说明(课程大作业).zip

    因此开发了这样一套抽奖报名系统。 开发前参考了一些本地抽奖工具,最终决定采用“用户主动报名”的站外抽奖方式,这样生来可避免站内的大量抽奖号和机器人参与,更做到了报名结果公开,方便广大Up主回馈自己真正的...

    powerbuilder

    参数printjobnumber:用PrintOpen()函数打开的打印作业号fontnumber:指定该打印作业使用字体的字体编号,该编号与PrintDefineFont()函数中定义的编号应该对应,字体编号的有效取值在1到8之间,0表示使用打印机的...

    论文研究 - 小型农业流域水文监测低成本无线传感器网络系统的开发与现场评估

    在最近的几十年中,数字技术,微机电系统,低功耗微传感技术以及改进的工业制造工艺的飞速发展已经导致通过无线传感器网络(WSN)系统检索实时数据。 在这项研究中,开发了一种远程操作的低成本,强大的WSN系统,...

    最近把在用Delphi开发系统的过程中使用的一些经常用到的函数过程整理为一个工具集

    最近把在用Delphi开发系统的过程中使用的一些经常用到的函数过程整理为一个工具集,以便以后的使用。 这个工具集包括以下内容: 1. 小巧的公共函数,过程。如取得Delphi程序的版本号,文本替换。单元名为:...

    Delphi5.X ADO/MTS/COM+高级程序设计篇

    3-l 处理多个数据表Join的数据 3-2 使用ADO处理BLOB信息 3-3 调用存储过程 3-4 使用ADO的异步执行能力 3-5 处理错误 3-6 使用ADO存取Excel 3-7 使用ADOx 3-8 RDS 3-9 使用ADO开发分布式多层应用系统 3-10 ADO和...

    论文研究 - 使用物联网的车辆燃油活动监测系统

    物联网广泛用于日常物品中,其普及程度正日益提高。 本文包括物联网的设计和开发以及基于移动的车辆加油活动,例如实时加油监控和GPS跟踪系统。... 拟议的系统使用GPS跟踪来显示车辆的当前位置并找到最近的泵位置。

    2014最新AI创作系统ChatGPT网站源码V6.4.0+Midjourney绘画网站源码+GPT4-All联网搜索模型

    SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。支持GPTs应用、GPT语音对话、GPT-4模型、DALL-E3文生图、图片对话能力上传图片,GPT4-All联网搜索...

    基于SIP开发软件电话的一些资源(转自YOUTOO)

    虽然oSIP的开发人员也说明了,oSIP只使用了标准C开发库,但许多人在Windows下使用oSIP时,第一步就被卡住了,得不到oSIP的LIB库和DLL库,也就没有办法将oSIP使用到自己的程序中...

Global site tag (gtag.js) - Google Analytics