ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:26.81KB ,
资源ID:20633643      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20633643.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何定制android源码的编译选项后期安装文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何定制android源码的编译选项后期安装文档格式.docx

1、用户应当配置build_id.mk,而不应该改动version_defaults.mk文件。然后检查上述变量,如未定义则赋值默认值。关于调试功能(adb)的开启编译android源码之前总是要先运行build/envsetup.sh,以初始化一些常用命令(实际上是bash的函数,如add_lunch_combo)。其中也从以下文件中引入了一些编译设置:device/$CHIPSET_VENDOR/vendorsetup.sh我们这里使用的CHIPSET_VENDOR为amlogic。比如我们有文件device/amlogic/vendorsetup.sh,内容为产品名-编译类型(flavor)

2、列表(称为combo),如下:add_lunch_combom1ref-engm1ref-userm2ref-engm2ref-useradd_lunch_combo stvm3-engstvm3-user其中,m1ref和stvm3是产品名(作前缀),后面为编译类型。除此前缀外可选的combo值有: eng, user, userdebug, tests。(参考文件build/core/main.mk中对于变量TARGET_BUILD_VARIANT的筛查条件)我们可以修改vendorsetup.sh文件,来改变为特定设备编译的结果。以下是各个编译类型的特点:eng: 工程模式,用于平台级的

3、调试,是默认的编译类型。待安装的模块tag有: eng, debug, user, development.安装不带tag的非APK模块;所安装应用由产品定义文件给出;默认属性:ro.secure=0, ro.deuggable=1, ro.kernel.android.checkjni=1adbd默认开启,adb以root身份运行。user: 即最终用户版;待安装的应用tag有: user默认属性有ro.secure=1, ro.debuggable=0;默认关闭adbd服务(但可通过应用settings来打开,且adb以shell身份运行);userdebug: 与user类似,除了:支持

4、有限的调试功能;debug;默认属性有ro.secure=1, ro.debuggable=1;默认打开adbd服务,adb以shell身份运行;例如,由文件build/core/main.mk可以看出,当使用含有userdebug的combo值时,此文件中的临时变量enable_target_debugging会保持为true,相应地,编译过程会执行:ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1这意味着目标系统中根目录下的文件/default.prop文件(对应变量 INSTALLE

5、D_DEFAULT_PROP_TARGET )会含有以下行(参考文件build/core/Makefile):persist.service.adb.enable=1由此,目标系统会默认开启adbd服务,你就可以通过其它PC来连接目标系统了。所以,如要默认开启adbd服务,可在设备(如stvm3)定制文件device/amlogic/vendorsetup.sh中增加以下行:stvm3-userdebug这样在执行bash的lunch函数时,选择此combo就可以默认打开adbd服务(adb以shell身份运行)。但是,即使adbd已经开启,你仍可能无法通过网络连接到Android进行调试,这

6、涉及到Android的二个属性:service.adb.tcp.port(优先级高)persist.adb.tcp.port(优先级低)注:可查看源码文件system/core/adb/adb.c。默认地,这两个属性值是5555。有两种方法来设置此变量:1)(永久性改变)在Android配置文件/init.rc或/init.$MANUFACTUROR.rc中添加一行:setpropservice.adb.tcp.port 55552)(临时性改变)在命令行上(你可能需要先通过串口开一个终端)执行如下命令:检查adbd是否支持通过网络链接Android:执行命令netstat -l -n|gre

7、p :5555如果有LISTEN状态的输出,则表示adbd支持网络模式)。具体地说,TARGET_PRODUCT是怎么定义的?在针对一个板子编译Android前总要先执行build/envsetup.sh(它会包含设备相关的环境设置,如device/amlogic/vendorsetup.sh),然后运行新获得的lunch函数来选择编译目标类型(即combo),如stvm3-userdebug查看文件build/envsetup.sh可知(line 519549),TARGET_PRODUCT就是combo在-前的部分(如stvm3),TARGET_BUILD_VARIANT为combo在-后

8、的部分(如userdebug)。根据build/core/main.mk文件,tags_to_install会包含debug,所以firmware会默认打开adbd (见上一小节)。用于代替lunch进行类似定义的还有build/buildspec.mk或函数choosecombo().根据以下的包含或调用关系:build/envsetup.sh (in get_build_var():make -no-print-directory -C $T -f build/core/config.mk dumpvar-$1)- build/core/config.mk (include $(BUILD

9、_SYSTEM)/envsetup.mk) build/core/envsetup.mk (include $(BUILD_SYSTEM)/product_config.mk) build/core/product_config.mk (invoke get-all-product-makefiles() build/core/product.mk (define get-all-product-makefiles() stvm3/AndroidProducts.mk device/amlogic/stvm3/stvm3.mk可知,板子的编译过程会在device/amlogic/stvm3/s

10、tvm3.mk中重新定义以下变量:PRODUCT_NAME := stvm3PRODUCT_MANUFACTURER := my_manufacturer_namePRODUCT_DEVICE :PRODUCT_MODEL := M3 media box boardPRODUCT_LOCALES := en_US en_GB fr_FR zh_TW zh_CN另,device/amlogic/stvm3/stvm3.mk还会包含device/amlogic/common/mbx_amlogic.mk,后者也定义了PRODUCT_NAME、PRODUCT_BRAND等变量(但随后部分变量被stv

11、m3.mk覆盖),并且覆盖了所包含的device/amlogic/common/core_amlogic.mk文件的同名定义。由此可见,core_amlogic.mk优先级低于具体设备(如mbx_amlogic.mk)的配置文件。product的基本描述(或定义): 涉及以下几个变量:PRODUCT_NAME(预定以的值有: core, sim, sdk, generic_x86, full, generic)PRODUCT_BRAND(貌似与PRODUCT_NAME区别不大)PRODUCT_DEVICEPRODUCT_CHARACTERISTICS这些变量首先在文件build/target/

12、product/core.mk初始化,而后在build/target/product/sim,sdk,generic,full.mk中被覆盖。对于stvm3板子来说,它们在device/amlogic/common/core_amlogic.mk中预初始化,在文件device/amlogic/common/mid,tv,mbx_amlogic.mk的末尾它们的值被覆盖。另:/default.prop是如何生效的?文件system/core/init/init.c :main(argc, argv):snprintf(tmp, sizeof(tmp), /init.%s.rc, hardware

13、);parse_config_file(tmp);action_for_each_trigger(early-init, action_add_queue_tail);queue_builtin_action(wait_for_coldboot_done_action, wait_for_coldboot_done);queue_builtin_action(property_init_action, property_initqueue_builtin_action(keychord_init_action, keychord_initqueue_builtin_action(logo_in

14、it_action, logo_initqueue_builtin_action(console_init_action, console_initqueue_builtin_action(set_init_properties_action, set_init_properties.queue_builtin_action(property_service_init_action, property_service_initqueue_builtin_action(signal_init_action, signal_initqueue_builtin_action(check_startu

15、p_action, check_startupqueue_builtin_action(queue_property_triggers_action, queue_propety_triggersdevice_fd = device_init();property_init();/ - 在这里初始化各种属性。for(;) execute_one_command();/ 通过poll处理各种事件,包括基于通道/dev/socket/property_service的属性设置/事件:handle_property_set_fd();/由system/core/init/property_servi

16、ce.c:property_set()看出,无论属性的prefix是什么,如果它是个新属性(即代码中的pi=0),总是可以把它加到属性集中去的,不管是不是ro.属性。/ 比如frameworks/base/services/java/com/android/server/BootReceiver.java中对属性ro.runtime.firstboot的读取和设置。文件system/core/init/property_service.c :void property_init(void) load_properties_from_file(PROP_PATH_RAMDISK_DEFAULT)

17、;- 读取属性文件。这里,PROP_PATH_RAMDISK_DEFAULT就是文件“/default.prop”,参见bionic/libc/include/sys/_system_properties.h#definePROP_SERVICE_NAME property_servicePROP_PATH_RAMDISK_DEFAULT/default.propPROP_PATH_SYSTEM_BUILD/system/build.propPROP_PATH_SYSTEM_DEFAULT/system/default.propPROP_PATH_LOCAL_OVERRIDE/data/loc

18、al.propStatusBar的默认隐藏默认地,Android会显示statusbar。应用程序要想隐藏StatusBar,需要在Activityde 的onCreate()里写如下代码:/to remove title bar in Java code:MyActivity.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.myWind);/to remove status bar in Java code:getWindow().setFlags(WindowManager.LayoutParams

19、.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);或者在AndroidManifest.xml文件添加以下属性到相关Activity:/to remove title bar in Manifest.xml:android:theme=android:style/Theme.NoTitleBar/to remove title bar & status bar in Manifest.xml:style/Theme.NoTitleBar.Fullscreen有些清况下,我们需要在系统级别默认隐藏StatusBar。做法如下

20、:1) 建立一个属性,如“persist.service.statusbar”,用来表示StatusBar当前是否显示;在frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java文件的makeStatusBarView()和mBroadcastReceiver(例如针对事件android.statusbar.visibility.changed)里,根据此属性值来显示或隐藏StatusBar.2) 在Settings应用里,增加切换显示/隐藏StatusBar的控制UI(

21、如在文件packages/apps/Settings/src/com/android/settings/DisplaySettings.java中),当有变化发生时,先设置属性值“persist.service.statusbar”,然后发出广播android.statusbar.visibility.changed 属性名的选择:以“persistent.”开头的属性值在发生改变时会被自动保存在目标系统的/data/property/目录下,每一个属性有一个文件来记录器内容。文件system/core/include/arch/linux-arm/AndroidConfig.h含有很多预定义

22、来控制编译过程,如HAVE_LIBC_SYSTEM_PROPERTIES, HAVE_SYS_SOCKET_H。.apk包列表的定制:设备无关的公共的包的定制可以在以下文件中执行:build/target/product/core.mk 或build/target/product/generic.mk 或build/target/product/full.mk 等。对于特定product的包的定制,可以通过以下文件(product名为stvm3):device/amlogic/stvm3/stvm3.mk涉及到的makefile变量为PRODUCT_PACKAGES.另外,对于一个具体设备来说,有一些默认安装的包在其它的文件里设定,如Home 在 文件 device/amlogic/common/core_amlogic.mk中;Launcher2 在 文件 device/amlogic/common/mbx_amlogic.mk中;后期prebuild文件的安装:Android build system 主要有两大部分构成:1) 配置部分;2) 目标构建部分。Build system的主流程文件为build/core/main

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1