Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 511|回复: 0

开发交流:android 移植笔记有感

[复制链接]

该用户从未签到

发表于 2011-10-24 09:26:34 | 显示全部楼层 |阅读模式
type:文字博文
topic:Android 应用程序开发经验

  
一.android 基础篇:
      1.配置Android编译环境
      Version:android froyo (2.2)   
      i.安装编译工具
           sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev              libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
      ii.在~/.bashrc添加以下环境变量,然后使用source ~/.bashrc生效
           #java 程序开发/运行的一些环境变量
           JAVA_HOME=/usr/lib/JVM/java-6-sun
           JRE_HOME=${JAVA_HOME}/jre
           export ANDROID_JAVA_HOME=$JAVA_HOME
           export CLASSPATH=.:JRE_HOME/libCLASSPATH
           export JAVA_PATH={JRE_HOME}/bin
           export JAVA_HOME;
           export JRE_HOME;
           export CLASSPATH;
           HOME_BIN=~/bin/
           export PATH={JAVA_PATH}:${HOME_BIN};
      iii.执行./build/envsetup.sh,安装环境变量
      iv.编译.根据场景不同,具体有以下命令.
      make ;//双核电脑加入-j2可以加快速度
      mm     ;//仅编译模块.
           附:成功编译标志,如下
           Install system fs image: out/target/product/generic/system.img
           Target ram disk: out/target/product/generic/ramdisk.img
           Target userdata fs image: out/target/product/generic/userdata.img
           Installed file list: out/target/product/generic/installed-files.txt
     
    2.配置Uboot烧写环境
      i.配置minicom串口:
      分别设置端口为ttyS0,波特率115200,无硬件数据流控制;
      PS:串口的检测:
           shell echo " ">/dev/ttyS0 ;//如果正常会显,说明串口0工作正常。

      ii.设置网络参数并检验.
      进入minicom后,为保证nfs畅通,设置以下参数ip,serverip等
      检验方法:
      ping serverip ;//返回alive就成功配置
   
      iii.设置bootargs,此乃传递给内核的参数
      样例:
      set bootargs console=ttyAS0,115200 nwhwconf=device:eth0,hwaddr:${ethaddr} stmmaceth=msglvl:0,watchdog:5000 ide0=noprobe nfsroot=${serverip}:/opt/STM/STLinux-2.4/devkit/sh4/target/root ,nfsvers=2,rsize=4096,wsize=8192,tcp root=/dev/nfs ip=${ipaddr}:${serverip}:192.168.1.1:255.255.255.0::eth0ff bigphysarea=2000\; &&saveenv
      扩展:
           为了支持android fs,要修改ntfroot
           为了自启动init,要添加init=/init
            为了让framebuffer工作,添加 video=vfb:
     
      iv.烧写uboot
      run uboot;//
     
      v.烧写kernel
      run kernel;//成功的烧写可以引导进入fs,否则就是kernel panic等错误

    3.搭建网络文件系统
      首先在pc端要启动服务,
      i.往/etc/export添加nfs目录:
      如:/opt/STM/STLinux-2.4/devkit/sh4/target *(rw,sync,no_root_squash)
      ii.在超级用户下,重启以下服务:
      service portmap restart ;
      service nfs-kernel-server restart
      iii.检验:输入以下命令showmount -e
          检验效果:
                 Export list for root:
                         /opt/STM/STLinux-2.4/devkit/sh4/target                 
      二.android 移植(持续中)

      1.关于 android init程序的调试
      其实这个可以归结为android native c的调试。
      以Android的init进程调试为例,
      i.拷贝可执行文件:修改后的init放到root下面
      ii.拷贝代码 :文件夹system/core/init
      iii.开启机器,进入android shell
      键入gdb init;
      PS:调试过程中请关注2个数据结构,
           service_list,action_list;init过程中最先执行的是sevice console.

      附注:直接将代码放到nfsroot下面,省去假设gdbserver。
           由于gcc对代码进行优化,所以会乱序执行,所以设置断点后请键入"step",小心调试。
           如果要让gcc不对代码进行优化,请找到build/core/combo/target-linux-sh.mk,
           修改编译标志为o0
回复

使用道具 举报

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

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 19:14 , Processed in 0.411050 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表