如何把应用程序app编译进android 文件系统编译系统

建议使用以上版本或、浏览器访问本站,获得更好的用户体验。如何把应用程序编译进android系统_百度知道
如何把应用程序编译进android系统
提问者采纳
m801&#47.mk
在语句PRODUCT_PACKAGES ;generic,精简系统同时也可以删减系统自带的应用程序;
(1);system&#47.mk
注释掉相应语句,在&#47.APK包;out&#47:= \app 找到相应的;target/build/device/target/m801&#47,不是android的默认目录
(2)、删除原厂(Telchips)带源码的应用程序;telechips/(应用程序名) 删除对应程序名
同时,并删除
注,如DTV_DVBT
在/product&#47:路径中的m801是自建文件夹;product&#47,如Cammra
在&#47、删除android自带的应用程序
其他类似问题
90人觉得有用
为您推荐:
android系统的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 2259|回复: 6
【安卓进阶】传统系统APP编译方法及Makefile相关函数简介
该用户从未签到
还等什么呢,赶快注册账号,参与1积分抽HIKe 6寸大屏手机吧!人人有机会!
才可以下载或查看,没有帐号?
本帖最后由 wony 于
15:35 编辑
传统系统APP编译方法及Makefile相关函数简介
内容提要:
1 应用程序的分类2 Google官方描述的系统软件包编译方法
2.1 编译环境的准备2.2 mm命令2.3 mmm命令2.4 mm命令
3 MTK平台上的系统软件包编译方法
3.1 mk介绍3.2 mk的mm命令3.3 mk的n dr命令
应用程序的分类在Android平台上,有两类应用程序,描述如下:独立开发的应用程序,它们通过标准的Android SDK调用系统提供的接口,跟具体平台的依赖关系较小。这类程序一般的独立开发者使用Eclipse即可进行编译,有一些组织也通过ant和其他的一些组件来完成自动化的编译。系统应用程序。 这类应用程序的代码存放在操作系统平台的代码树中,大多数调用了系统提供的特殊接口,随着操作系统平台的编译而编译。单独使用Eclipse或者ant来编译这类程序虽然可行,但比较麻烦,且很难随着系统的编译而自动编译。
我们这篇文章将从系统应用程序着手,介绍系统应用程序的编译方法,为之后介绍的其他知识打好基础。
Google官方描述的系统软件包编译方法
编译环境的准备在标准的,提到了要成功编译应用程序,首先需要准备编译环境,命令如下: #进入系统代码的根目录后执行 source build/envsetup.sh这个命令在当前的Shell环境下加入一系列编译相关的命令和环境变量。跟本文关系最大的的是mm和mmm两个命令
mm命令mm命令用于编译当前目录下的所有模块。在Android的系统代码树中,每个模块都有自己的Android.mk,即Android系统中模块的Makefile。mm命令即是用于寻找到当前目录的Android.mk文件并据此进行本模块的编译。mm命令描述在build/envsetup.sh中,命令如下:& &function mm()
& && & # If we're sitting in the root of the build tree, just do a
& && & # normal make.
& && & if [ -f build/core/envsetup.mk -a -f Makefile ]; then
& && && &&&make $@
& && & else
& && && &&&# Find the closest Android.mk file.
& && && &&&T=$(gettop)
& && && &&&local M=$(findmakefile)
& && && &&&# Remove the path to top as the makefilepath needs to be relative
& && && &&&local M=`echo $M|sed 's:'$T'/::'`
& && && &&&if [ ! &$T& ]; then
& && && && && &echo &Couldn't locate the top of the tree.&&Try setting TOP.&
& && && &&&elif [ ! &$M& ]; then
& && && && && &echo &Couldn't locate a makefile from the current directory.&
& && && &&&else
& && && && &&&ONE_SHOT_MAKEFILE=$M make -C $T all_modules $@
& && && &&&fi
我们可以看到,它最终执行的命令是 ONE_SHOT_MAKEFILE=$M make -C $T all_modules $@,其中$M是Android.mk相对于当前目录的路径,$T是当前目录的路径。 此处有个参数是all_modules,表明编译时需要编译所有相关的模块【举例】假如要编译package/apps/Camera,我们可以执行如下命令:# source build/envsetup.sh# cd package/apps/Camera# TARGET_PRODUCT=hike mm【注意】此处TARGET_PRODUCT=hike是在MTK平台上才会用到。在其他平台上,根据当前产品的不同,这个环境变量可以不同,或者不设置。
mmm命令mmm命令用于编译命令行上所有指定路径下的模块。mmm命令描述在build/envsetup.sh中,命令如下:function mmm()
& && & T=$(gettop)
& && & if [ &$T& ]; then
& && && &&&local MAKEFILE=
& && && &&&local ARGS=
& && && &&&local DIR TO_CHOP
& && && &&&local DASH_ARGS=$(echo &$@& | awk -v RS=& & -v ORS=& & '/^-.*$/')
& && && &&&local DIRS=$(echo &$@& | awk -v RS=& & -v ORS=& & '/^[^-].*$/')
& && && &&&for DIR in $DIRS ; do
& && && && && &DIR=`echo $DIR | sed -e 's:/$::'`
& && && && && &if [ -f $DIR/Android.mk ]; then
& && && && && && & TO_CHOP=`(cd -P -- $T && pwd -P) | wc -c | tr -d ' '`
& && && && && && & TO_CHOP=`expr $TO_CHOP + 1`
& && && && && && & START=`PWD= /bin/pwd`
& && && && && && & MFILE=`echo $START | cut -c${TO_CHOP}-`
& && && && && && & if [ &$MFILE& = && ] ; then
& && && && && && && &&&MFILE=$DIR/Android.mk
& && && && && && & else
& && && && && && && &&&MFILE=$MFILE/$DIR/Android.mk
& && && && && && & fi
& && && && && && & MAKEFILE=&$MAKEFILE $MFILE&
& && && && && &else
& && && && && && & if [ &$DIR& = snod ]; then
& && && && && && && &&&ARGS=&$ARGS snod&
& && && && && && & elif [ &$DIR& = showcommands ]; then
& && && && && && && &&&ARGS=&$ARGS showcommands&
& && && && && && & elif [ &$DIR& = dist ]; then
& && && && && && && &&&ARGS=&$ARGS dist&
& && && && && && & elif [ &$DIR& = incrementaljavac ]; then
& && && && && && && &&&ARGS=&$ARGS incrementaljavac&
& && && && && && & else
& && && && && && && &&&echo &No Android.mk in $DIR.&
& && && && && && && &&&return 1
& && && && && && & fi
& && && && && &fi
& && && &&&done
& && && &&&ONE_SHOT_MAKEFILE=&$MAKEFILE& make -C $T $DASH_ARGS all_modules $ARGS
& && & else
& && && &&&echo &Couldn't locate the top of the tree.&&Try setting TOP.&
我们可以看到,它最终执行的命令是ONE_SHOT_MAKEFILE=&$MAKEFILE& make -C $T $DASH_ARGS all_modules $ARGS,其中:$MAKEFILE是命令行上指定的所有的模块的Android.mk的路径$T是平台代码的根路径all_modules参数表明编译时需要编译所有相关的模块
【举例】假如要编译package/apps/Camera和package/apps/Calculator,我们可以执行如下命令:
&&# source build/envsetup.sh&&# TARGET_PRODUCT=hike mmm package/apps/Camera package/apps/Calculator
【注意】此处TARGET_PRODUCT=hike是在MTK平台上才会用到。在其他平台上,根据当前产品的不同,这个环境变量可以不同,或者不设置。
MTK平台上的系统软件包编译方法mk介绍从Feature Phone时代开始,MTK就开发了一套自己的编译命令、脚本来方便开发人员,而这套命令也自然的被继承到了MTK的Smart Phone平台上,只要编译过MTK的Feature Phone,就会编译Smart Phone。不得不说,在方便开发者迅速适应平台并开发出可用系统方面,MTK是下足了功夫的。MTK的这套编译系统的核心是一个叫做makeMtk的perl脚本,以及配套的一系列存放在mediatek/build/下的Makefile和命令。我们这篇文章主要介绍应用程序的编译,所以不会全面分析这套机制,只捡相关的部分来描述。【注意】后文中提到的./mk是指系统平台代码树下的一个叫做./mk的文件,它是makeMtk的符号链接mk的mm命令用如下命令可以方便的完成系统应用程序的编译,它实际上封装了标准的mmm的功能:
& &./mk $TARGET_PRODUCT mm Path_Of_The_App
由于这个命令只编译目标目录下的模块,这个模块引用到的其他系统模块有可能还未编译。此时就可能出现编译错误。 因此./mk中还提供了另外一种编译模块的方法,如下。mk的n dr命令这种方法的示例如下:
& &./mk $TARGET_PRODUCT n dr Module_Name
其中,Module_Name是定义在要编译的模块的Android.mk中的模块的名字。这个命令会做如下一些工作:遍历系统代码树,寻找指定模块编译该模块编译该模块的依赖模块链接成最终文件
在此我并不想去分析makeMtk这个脚本的具体实现,本文的作用是让读者了解基本的系统应用程序编译方法, 并提纲挈领的介绍了一些方法背后的原理。
该用户从未签到
目测官方做包的版主大大、、、
签到天数: 1 天连续签到: 1 天[LV.1]
答对了,这是我们的技术大牛
该用户从未签到
有这样的攻城狮, HIKe 值得期待。
该用户从未签到
wony 发表于
答对了,这是我们的技术大牛
话说好多好多代码& &
看见就头大啊。。。
话说蜗牛也是做包的?
签到天数: 1 天连续签到: 1 天[LV.1]
筱猫丶 发表于
话说好多好多代码& &
看见就头大啊。。。
我是查包,查水表的
该用户从未签到
wony 发表于
我是查包,查水表的
嘿嘿&&这个可以有。。。您现在正在浏览:
[开发语言android讨论]编译MainActivity.java类出现程序包开发语言android.app不存在
发布时间:
20:39:59 &
浏览次数:
[Android讨论]编译MainActivity.java类出现程序包android.app不存在
我参照的书是android应用开发详解回答1: [Android讨论]编译MainActivity.java类出现程序包android.app不存在
初学的话,还是别用这种命令行的方式编译吧。
这是android的东东,跟java还是有些不同的,你需要系统的Android.jar包才能编译通过。
先搭建一个eclipse+adt的环境吧,另外下一个android sdk。
可以参考我们社区的集大成作品哦:
【eoeAndroid社区索引】android开发环境搭建详尽教程实例
/thread--1.html回答2: [Android讨论]编译MainActivity.java类出现程序包android.app不存在
java怎么编译android啊,要用adt哦,亲
本文暂无TAG标签!
本周热门问答排行}

我要回帖

更多关于 编译程序属于系统软件 的文章

更多推荐

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

点击添加站长微信