如何编译android源码 源码需要sdk环境吗

android sdk 编译--如何将源代码加入android.jar,以及make原理 - dai186的日志 -
电子工程世界-论坛
android sdk 编译--如何将源代码加入android.jar,以及make原理
已有 4640 次阅读 18:31
|个人分类:|
原文:/viewdiary..html首先是这个问题如何修改。&在/frameworks/base/Android.mk中,找到如下行:packages_to_document :=在该变量的赋值语句最后添加xxxxx (这里是你的包的名称,比如com/sina/ui,其实这里就是你的源代码在/frameworks/base/&你的模块&/java /下面的一部分路径,只要能够唯一的匹配到你的代码即可)即可。该添加的含义是使MAKE系统在制作OFF-LINE DOCUMENT时包含我们的package.以此类推,添加其他新的package也可以这样做。&下面简单把android make sdk的过程写一下来说明为什么做这样的修改。调查时是反过来调查的。说明还是按照MAKEFILE的生成的顺序来说明吧。首先在 /frameworks/base/Android.mk中定义了进行sdk building的基本目标对象。&包括对哪些.java文件需要 生成API文档,以及这些文档的路径。&然后在/build/core/droiddoc.mk中定义了最终进行build的规则和语句。&Android 使用javadoc这个工具来生成所有API文档。Javadoc这个工具可以带一个参数指定一个文件,该文件包含了所有要生成文档的源文件的名 字(全路径)。该文件的内容就是通过在/framework/base/android.mk里的变量生成的。当然在droiddoc.mk中还 添加了build过程中生成的intermediates目录下的文件。另外javadoc还可以指定定制的doclet(doclet 是基于javadoc特定的API开发的小程序,该程序负责实际的文档输出).android的编译系统就包含了这样一个doclet叫 DroidDoc。可以在/build/tools/DroidDoc目录下找到该工具的全部源代码。正是该工具在生成HTML的同时在 /out/target/common/obj/JAVA_LIBRARIES /android_stubs_current_intermediates下面copy(或者说重新生成了)所有将生成到android.jar中的所 有源代码(.java文件).该工具把所有生成document的源文件重新按Package组织生成在以上目录下。然后进行编译和打包 成android.jar。&根据以上分析,其实android.jar文件是各个公布出来的 API 的源文件经过javadoc重新组织以后再次编译产生的。 故,android.jar的内容实际上受到javadoc的notation控制和makefile的控制。 对于android中已存在的代码比如wifi native,可以通过修改源代码中javadoc的notation的方法重新build得到新的包含wifi native接口的android.jar(将源文件中的@hide这个notation换成别的,然后make update-make sdk)。而对于新加入的代码,则需要如上方法来修改makefile了。下面总结一下调查过程中涉及到的知识:1) javadoc和doclet,简单的看了一下工具的使用和参数,另外看了一下DriodDoc这个doclet的源代码,找出哪里生成的.java源文 件。2.makefile分析,android的make showcommands命令可以和任何其他目标一起使用来察看make过程中实际做了一些什么事情。(这点还需要调查这个showcommands如何 实现的,因为make -d这个命令给出的信息对于找到问题帮助不大)3.在跟踪makefile build过程时,使用$(warning xxxxx)和$(error xxxx)可以在除规则以外的地方打印出变量的值通过这个方法找出了实际建立要编译的文件列表的地方。
作者的其他最新日志
评论 ( 个评论)
Powered by> 怎么在Ubuntu编译Android2.3源代码以及制作自己的SDK
怎么在Ubuntu编译Android2.3源代码以及制作自己的SDK
twb741205 & &
发布时间: & &
浏览:22 & &
回复:0 & &
悬赏:0.0希赛币
如何在Ubuntu编译Android2.3源代码以及制作自己的SDK
  经过2两周断续的搜索网上编译的东西、得到了有用的编译之道
  要是不会装系统在此本人分享下心得
  网上下一个软碟通软通(UitraISO)工具、然后去官网上下载一个64位ubuntu.*.iso系统文件、然后软碟通工具自己制作一个USB启动盘(非常简单)不会用软碟通的百度一下一大把!、系统最好是10.40以上的版本
  使用的是ubuntu官网下载的ubuntu10.04 LTS 64位版本(ubuntu-10.04.2-desktop-amd64.iso)
  配置软件源:
  系统安装完毕以后应该首先换一个速度快的软件源
  一般用的是ubunt
  不然下载各种更新和软件包的时候非常的慢
  安装JDK:
  我要编译的是2.3姜饼的源代码 所以需要使用jdk6 (还需要是64位的系统)
  如果是32为系统藐视jdk要安装jdk5.0的吧!藐视说有个doc什么的不行!所以系统一般装64的、如果是32的小伙们赶快把jdk看看
  安装方法:
  打开终端
  sudo add-apt-repository "deb "
  sudo add-apt-repository "deb-src "
  sudo apt-get update
  sudo apt-get install sun-java6-jdk
  就安装好了 (ubuntu10.04 LTS版会自带那两个源)
  并且不需要配置环境变量
  这一步可以参考
  安装各种软件包:
  终端中输入
  sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos texinfo libsdl-dev libwxgtk2.6-dev
  最后三个是我补充的 其他都是官方文档提供的
  这一步可以参考
  下载源代码:
  打开终端并输入
  mkdir ~/bin
  PATH=~/bin:$PATH
  这两句是在你的个人文件夹下创建了一个名字叫bin的文件夹 并且把其加入到了环境变量中
  再输入
   ~/bin/repo
  chmod a+x ~/bin/repo
  这两句首先在bin目录下面下载了一个repo文件 repo简单来说就说用来版本控制的 我们就是用的它来同步代码
  然后建立一个用来存放源代码的文件夹 我的这个文件夹的名字是android2.3
  mkdir android2.3
  cd android2.3
  进入android2.3目录
  repo init -u git://androi/platform/manifest.git -b gingerbread
  在此说明一下:
  安卓总称:“机器人”
  1.5系统:“纸杯蛋糕”
  Android 1.6 Donut甜甜圈Android 2.0 Eclair松饼Android 2.1 Eclair松饼Android 2.2 Froyo冻酸奶Android 2.3 Gingerbread姜饼(以上系统都是用于手机的)官方消息说2.4准备出来了!至于3.0目前只用于平板电脑
  Android 4.0 Ice Cream Sandwich(简称ICS,冰淇淋三明治),      
  表示你需要的代码是姜饼的 所以最后是gingerbread 如果是2.2代码 就把gingerbread改成froyo
  然后你需要输入你的名字跟邮箱地址
  如果提示找不到repo命令的话 需要重新设置环境变量 就是之前的PATH=~/bin:$PATH
  repo sync
  开始同步代码 这个过程会根据你的网速来决定快慢
  这一步需要下载的数据有3g那么大
  可以续传 一次没下完也没关系
  如果之前就已经下过一次的话 只需要把源代码目录(我的是android2.3)下有一个叫.repo的隐藏文件夹里的projects文件夹备份出来就可以了
  以后还需要同步的时候再把projects文件夹拷贝回去
  ctrl+h查看隐藏文件
  这一步可以参考
  编译整个源代码:
  cd android2.3
  进入你的代码目录
  . build/envsetup.sh
  注意.和build中间有个空格
  lunch full-eng
  make -j2
  输入make就是开始编译代码了 加一个-j2参数就是开两个线程去编译 速度会快些 我花了两个小时的时间
  编译完毕以后马上输入
  emulator
  就可以运行模拟器了 系统能跑起来就说明编译成功了
  如果提示找不到emulator命令的话
  需要添加环境变量
  在android2.3目录下的out/target/product/generic文件夹下会看到system.img
  能看到的话应该算是成功了
  这一步可以参考
  编译SDK:
  这一步在官方网站上没有说明
  但是在源代码文件夹里面有文档提到了
  就是在android2.3/sdk/docs目录下有一个叫howto_build_SDK.txt的文件介绍了如何编译SDK
  Then once you have all the source, simply build the SDK using:
$ cd ~/my-android-git
$ . build/envsetup.sh
$ lunch sdk-eng
$ make sdk
  看来不需要先编译整个系统再编译SDK 可以直接上来就编译SDK
  按提示输入
  make到时候也可以加上-j参数 比如 make -j2 sdk
  但是不推荐 因为容易编译失败 而且编译SDK只需要二十多分钟到时间 不算很长
  当出现
  Package SDK: out/host/darwin-x86/sdk/android-sdk_eng.&build-id&_mac-x86.zip
  的时候 就表示编译成功了 其中&build-id&默认是系统的用户名
  howto_build_SDK.txt中还提到了编译ADT插件
  我发现自己编译到ADT插件竟然认不到platform 自己编译出来到SDK也一样
  原因不明
  只要使用官方的SDK和ADT就没有问题了
  具体就是把自己编译出来platform拷贝到官方SDK里到platforms文件夹下 搞过Android开发都懂的
  非常简单的一步
  就是直接修改源代码然后编译SDK就可以得到自己的SDK了
  我就示范一个简单的例子 抛砖引玉
  首先我找到TextView的代码
  在frameworks/base/core/java/android/widget 如图
  我在updateTextColors方法的开头添加了一句System.out.println
  打印了一句话"Source Code Changed"
  updateTextColors方法会在TextView的setTextColor方法中被调用
  好 保存
  然后使用这个platform
  新建一个项目
  调用一下TextView的setTextColor方法看看有什么效果
  一个很简单的例子
  Source Code Changed被打出来了
  SDK修改成功
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&Ubuntu 10.04 32-bit
sudo apt-get install git-core
sudo apt-get install curl
sudo apt-get install&zlib&-dev 变为&sudo apt-get install&zlib1g&-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install libncurses-dev (libncurses5-dev)
sudo apt-get install g++
sudo apt-get install libx11-dev
sudo apt-get install gperf
关于Java版本:Java6能够编译代码,但不能生成文档,最好准备两套Java环境
Ubuntu 10.04 64-bit
sudo apt-get install libc6-dev-i386sudo apt-get install lib32ncurses5-devsudo apt-get install libx11-devsudo apt-get install g++-multilibsudo apt-get install lib32z1-dev64-bit Java6
2. 下载Android SDK
curl http://android.git.kernel.org/repo & ~/bin/repo
chmod a+x ~/bin/repo
如果是想把Android当前主线上最新版本的所有的sourcecode拿下来,我们需要repo的帮助。先建立一个目录,比如~/android,进去以后用repo init命令即可。repo init -u git://android.git.kernel.org/platform/manifest.git
获取eclair代码:
repo init -u http://android.git.kernel.org/platform/manifest.git -b eclair
从Android 2.2开始,编译SDK需要64位系统,32位的,只好先编译Eclair了.
repo init -u http://android.git.kernel.org/platform/manifest.git -b eclair
. ./build/envsetup.sh
在模拟器上运行编译好的android编 译好android之后,emulator在~/android/out/host/linux-x86/bin 下,ramdisk.img,system.img和userdata.img则在~/android/out/target/product /generic下$ cd ~/android/out/host/linux-x86/bin增加环境变量$ emacs ~/.bashrc在.bashrc中新增环境变量,如下#java 程序开发/运行的一些环境变量export ANDROID_PRODUCT_OUT=~/android/out/target/product/genericANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/binexport PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};最后,同步这些变化:$ source ~/.bashrc$ cd ~/android/out/target/product/generic$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img最后进入android桌面,就说明成功了。
4. 编译模块
android中的一个应用程序可以单独编译,编译后要重新生成system.img在源码目录下执行$ . build/envsetup.sh (.后面有空格)就多出一些命令:- croot:&& Changes directory to the top of the tree.- m:&&&&&& Makes from the top of the tree.- mm:&&&&& Builds all of the modules in the current directory.- mmm:&&&& Builds all of the modules in the supplied directories.- cgrep:&& Greps on all local C/C++ files.- jgrep:&& Greps on all local Java files.- resgrep: Greps on all local res/*.xml files.- godir:&& Go to the directory containing a file.可以加&help查看用法我们可以使用mmm来编译指定目录的模块,如编译联系人:$ mmm packages/apps/Contacts/编完之后生成两个文件:out/target/product/generic/data/app/ContactsTests.apkout/target/product/generic/system/app/
直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发android
9)编译SDK
编译android sdk时需用make PRODUCT-sdk-sdk, 不能直接make sdk,
直接执行make是不包括make sdk的。make sdk用来生成SDK,这样,我们就可以用与源码同步的SDK来开发android了。a)修改/frameworks/base/include/utils/Asset.h&UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024& 改为 &UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024&原因是eclipse编译工程需要大于1.3M的buffer;b)编译ADT。由于本人不使用eclipse,所以没有进行这步;c)执行make sdk。注意,这里需要的javadoc版本为1.5,所以你需要在步骤1中同时安装sun-java5-jdk$ make sdk编 译很慢。编译后生成的SDK存放在out/host/linux-x86/sdk/,此目录下有android-sdk_eng.xxx_linux- x86.zip和android-sdk_eng.xxx_linux-x86目录。android-sdk_eng.xxx_linux-x86就是 SDK目录实际上,当用mmm命令编译模块时,一样会把SDK的输出文件清除,因此,最好把android-sdk_eng.xxx_linux-x86移出来此后的应用开发,就在该SDK上进行,所以把7)对于~/.bashrc的修改注释掉,增加如下一行:export PATH=${PATH}:~/android/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86/tools注意要把xxx换成真实的路径;# make PRODUCT-sdk-sdkd)关于环境变量、android工具的选择目前的android工具有:A、我们从网上下载的SDK,如果你下载过的话( tools下有许多android工具,lib/images下有img映像)B、我们用make sdk编译出来的SDK( tools下也有许多android工具,lib/images下有img映像)C、我们用make编译出来的out目录( tools下也有许多android工具,lib/images下有img映像)那么我们应该用那些工具和img呢?首 先,我们一般不会用A选项的工具和img,因为一般来说它比较旧,也源码不同步。其次,也不会用C选项的工具和img,因为这些工具和img没有经过 SDK的归类处理,会有工具和配置找不到的情况;事实上,make sdk产生的很多工具和img,在make编译出来out目录的时候,已经编译产生了,make sdk只是做了copy而已。e)安装、配置ADT略过;f)创建Android Virtual Device编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过android工具查看:$ android list创建AVD:$ android create avd -t 1 -n myavd可以android &help来查看上面命令选项的用法。创建中有一些选项,默认就行了再执行android list,可以看到AVD存放的位置以后每次运行emulator都要加-avd myavd或@myavd选项:$ emulator -avd myavd10)编译linux内核映像a)准备交叉编译工具链android代码树中有一个prebuilt项目,包含了我们编译内核所需的交叉编译工具。b)设定环境变量$ emacs ~/.bashrc增加如下两行:export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/binexport ARCH=arm保存后,同步变化:$ source ~/.bashrcc)获得合适的内核源代码$ cd ~/android获得内核源代码仓库$ git clone git://android.git.kernel.org/kernel/common.git&& kernel$ cd kernel$ git branch显示* android-2.6.27说明你现在在android-2.6.27这个分支上,也是kernel/common.git的默认主分支。显示所有head分支:$ git branch -a显示* android-2.6.27remotes/origin/HEAD -& origin/android-2.6.27remotes/origin/android-2.6.25remotes/origin/android-2.6.27remotes/origin/android-2.6.29remotes/origin/android-goldfish-2.6.27remotes/origin/android-goldfish-2.6.29我们选取最新的android-goldfish-2.6.29,其中goldfish是android的模拟器模拟的CPU。$ git checkout -b android-goldfish-2.6.29 origin/android-goldfish-2.6.29$ git branch显示android-2.6.27* android-goldfish-2.6.29我们已经工作在android-goldfish-2.6.29分支上了。d)设定交叉编译参数打开kernel目录下的Makefile文件,把CROSS_COMPILE指向刚才下载的prebuilt中的arm-eabi编译器CROSS_COMPILE ?= arm-eabi-把LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,/$(call ld-option, -Wl$(comma)&build-id,))这一行注释掉,并且添加一个空的LDFLAGS_BUILD_ID定义,如下:LDFLAGS_BUILD_ID =e)编译内核映像$ cd ~/android/kernel$ make goldfish_defconfig$ makef)测试生成的内核映像$ emulator -avd myavd -kernel ~/android/kernel/arch/arm/boot/zImage
Views(...) Comments()温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
分类:& 00:04&1054人阅读&(1)&&android编译环境的搭建和编译第一部分,平台说明&&&&1,编译平台:I7-4770+16G-DDR3-G-HD.& & 2,硬件平台:全志A20& & 3,软件平台:ubuntu12.04LTS+android4.2(全志SDK)第二部分,android编译环境的搭建一,开始构建Linux编译环境1,android官方推荐安装ubuntu12.04LTS。2,编译Gingerbread (2.3.x)以上android版本(包含主流版本),都应使用64位系统环境;安装ubuntu-12.04LTS-AMD64而不是ubuntu-12.04LTS-x86。3,在虚拟机上是可以编译android的,但是要编译android代码树,至少要保证16G的RAM或者SWAP和不少于30G的磁盘空间。4,还需要以下工具:Python 2.6-2.7,GNU Make 3.81-3.82,JDK 6(sun-java6-jdk),Git 1.7 or newer。二,安装sun-java6-jdk包1,下载bin文件下载oracle java 6 jdk 64-bit(即sun-java6-jdk)$ wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%%2F" /otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin$ chmod u+x jdk-6u45-linux-x64.bin2,安装的过程$ ./jdk-6u45-linux-x64.bin$ sudo mv jdk1.6.0_45 /opt$ sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.6.0_45/bin/java" 1$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/jdk1.6.0_45/bin/javac" 1$ sudo update-alternatives --install "/usr/lib/mozilla/plugins/libjavaplugin.so" "mozilla-javaplugin.so" "/opt/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so" 1$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/jdk1.6.0_45/bin/javaws" 3,ubuntu可能还有其他的jdk,下两行就是选择默认的JDK版本(sun-java6-jdk)&$ sudo update-alternatives --config java$ sudo update-alternatives --config javac4,设置JAVA_HOME环境变量$ export _JAVA_HOME=/opt/jdk1.6.0_45/&&&&& &&有个一点注意:由于ubuntu社区已经对sun-java6-jdk不提供支持了,所以,网上那些添加源的做法已经失效了。不用再尝试了。本方法通过wget命令从oracle下载bin文件,可以离线安装更加具有普遍效应。&&&&& &&& & & & 5,可能出现的问题:由于&sun-java6-jdk最终安装在/opt目录下面,在编译android过程中可能出现,找不到jar命令的情况,这时就应当为jar在/usr/bin下面创建一个链接文件。&&&&&&&&5.1解决未发现jar的方法&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$ cd /usr/bin&&&&&&&&&&&&&$ sudo&ln&-s&-f&/opt/jdk1.6.0_30/bin/jar&&
&&&&&&&&5.2解决未发现javadoc的方法
&&&&&&&&&&&&$ cd /usr/bin
&&&&&&&&&&&&$ sudo&ln&-s&-f&/opt/jdk1.6.0_30/bin/javadoc&三,安装依赖包&&& 在安装过程中可能出现依赖关系的问题;一旦出现了,可以尝试一个个的安装相应的依赖包。de style="line-height: 14 background-color: rgb(0, 255, 255); font-size: 18"
&$ sudo apt-get install git gnupg flex bison gperf build-essential \
& zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
& libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
& libgl1-mesa-dev g++-multilib mingw32 tofrodos \
& python-markdown libxml2-utils xsltproc zlib1g-dev:i386de&de style="line-height: 14 background-color: rgb(0, 255, 255); font-size: 18"
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.sode&四,搭建完成构建第三部分 SDK包的完全编译一,SDK代码说明&&&&SDK包包含2个部分,lichee部分代码树和android部分二,编译lichee部分代码树&&&&&如下代码:$ cd lichee$ ./build.sh -p sun7i_android& &&编译开始前,将mkimage复制到/usr/bin下面;并将文件的权限改为0777。三,编译android部分代码树& &&如下代码:$ cd ../android4.2.1$ source build/envsetup.sh$ lunch //选择wing_k70-eng$ extract-bsp&&&&//拷贝内核和模块到android中;&&$ make -j16$ pack&&&&//完全打包 //在lichee\tools\pack路径下生成了固件sun7i_android_wing-k70.img四,说明&&&&1,使用time命令组合编译,就可以得到编译所要的时间。& & 2,使用pack命令打包后,所有的img形成一个固件(sun7i_android_wing-k70.img),包括内核,uboot,文件系统和android。这个新的img的存放路径是:lichee\tools\pack\sun7i_android_wing-k70.img第四部分 固件的烧写(&烧写sun7i_android_wing-k70.img&)在预览中打开一,烧写boot.img的说明& & boot.img文件,包含内核与文件系统,但是未能将内核的模块加载进入boot.img,这点一定要注意。二,烧写过程1,编译代码树第一步,编译lichee$ cd lichee$ ./build.sh -p sun7i_android第二步,编译android$ cd ../android4.2.1$ source build/envsetup.sh$ lunch //选择wing_k70-eng$ extract-bsp$ make bootimage注意:“make -j16”和“pack”不用。在执行这些命令后,内核印象文件a20_wing4.2_to_chenwenjie/android4.2.1/out/target/product/wing-k70/boot.img时间戳会发生更新。然后,就可以使用adb推入平板电脑了。2,烧写boot.imgboot.img 镜像文件包括了安卓系统的内核和文件系统。单独烧录boot.img的方法如下:& adb push&Z:\to_chenwenjie\a20_wing4.2_to_chenwenjie\android4.2.1\out\target\product\wing-k70\boot.img /mnt/sdcard/& adb shell sync& adb shell dd if=/mnt/sdcard/boot.img of=/dev/block/nandc& adb shell sync& adb shell reboot图中命令是上面提及的命令。请注意boot.img的存放路径。在执行完毕上面的命令完毕后,平板电脑会发生重启,PC端android软件有个掉线到重新上线的过程。在推送boot.img过程中,并没有推送相关的驱动*.ko文件。三,注意的几个问题1,问题一:A20平台直接读写寄存器。下图就是读写寄存器的命令2,问题二:在升级内核与文件系统后,根据需要升级内核模块。(第六部分)第六部分 升级内核模块一,升级内核模块以CTP为例二,举例说明:烧录boot.img时发现的问题1,问题的解释和解决方法boot.img 镜像文件包括了安卓系统的内核和文件系统,但是并没有包含驱动模块,所以可能出现内核更新了,而模块不更新的现象。例如,本例中的gslX680.ko内核模块。在烧录boot.img时发现的出现一个问题,就是发现驱动模块没有被编译进入boot.img中。解决方法如下:&&&&& adb push Z:\to_chenwenjie\a20_wing4.2_to_chenwenjie\lichee\linux-3.3\drivers\input\touchscreen\gslX680.ko /system/vendor/modules&&&&& adb shell sync
&&&&& adb remount&&&&&//解决只读问题(可选)&&&&& adb shell reboot
如图示:2,问题的延伸如何是一个硬件失去驱动,例如删除了gslX680.ko这个文件,重启平板电脑后,机器的触摸屏不能工作。&&&&& adb shell&&&&# cd /system/vendor/modules
&&&&# rm gslX680.ko
&&&&# reboot
同样地,反向操作又是可以恢复驱动的。如果完全编译并且打包,那么就不会出现上述的问题。将最新的固件通过&&&&#insmod *.ko&&&&//加载模块到内核&&&&#rmmod *&&&&//将模块从内核中移除&&&&#lsmod &&&&&&&&//显示已加载的模块第七部分 监视内核调试信息目录中所有的文件复制到系统的system32的目录下。接着,就可以在cmd中使用adb命令就可以使用该调试工具。二,参看内核打印信息&&&&&adb shell cat /proc/kmsg & 1.txt //或者直接adb shell cat /proc/kmsg 在administrator的目录下就可以查看1.txt文件。1.txt文件内容如下:在打印信息可以提取到:在“lichee/linux-3.3/drivers/video/sun7i/disp/de_bsp/de/disp_tv.c”文件的第335行,有一行错误打印信息“DE_WRN("dac %d short to ground\n", i);”。接下来根据调试方法和调试需要,对代码进行修改。附录:参考资料1,2,
阅读(15052)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'android编译环境的搭建和编译(全志A20平台)',
blogAbstract:'&'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 编译android6.0.1源码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信