WEB开发网
开发学院手机开发Android 开发 Android 开发基础知识 阅读

Android 开发基础知识

 2010-05-28 15:50:00 来源:WEB开发网   
核心提示:证有效,因为新的共享库中的符号信息、地址等很可能与原来的已经不同了,Android 开发基础知识(14),这就是为什么 android framework代码一改动,这时候就会导致相关的应用程序重新被编译,按照大小降序排序,解析 LOCAL_PRELINK_MODULE 变量build/core/dynamic_bin

证有效,因为新的共享库中的符号信息、地址等很可能与原来的已经不同了,这就是为什么 android framework代码一改动,

这时候就会导致相关的应用程序重新被编译。

这种代价对于嵌入式系统的开发者来说可能稍微带来一些复杂度,不过好在对用户来说几乎是可以忽略的。

--------------------

变量设置为false那么将不做prelink操作

LOCAL_PRELINK_MODULE := false

默认是需要prlink的,同时需要在 build/core/prelink-linux-arm.map 中加入

libhellod.so 0x96000000

这个map文件好像是制定动态库的地址的,在前面注释上面有一些地址范围的信息,注意库与库之间的间隔数,

如果指定不好的话编译的时候会提示说地址空间冲突的问题。另外,注意排序,这里要把数大的放到前面去,

按照大小降序排序。

解析 LOCAL_PRELINK_MODULE 变量

build/core/dynamic_binary.mk:94:ifeq ($(LOCAL_PRELINK_MODULE),true)

ifeq ($(LOCAL_PRELINK_MODULE),true)

$(prelink_output): $(prelink_input) $(TARGET_PRELINKER_MAP) $(APRIORI)

$(transform-to-prelinked)

transform-to-prelinked定义:

./build/core/definitions.mk:1002:define transform-to-prelinked

define transform-to-prelinked

@mkdir -p $(dir $@)

@echo "target Prelink: $(PRIVATE_MODULE) ($@)"

$(hide) $(APRIORI)

--prelinkmap $(TARGET_PRELINKER_MAP)

--locals-only

--quiet

$<

--output $@

endef

./build/core/config.mk:183:APRIORI := $(HOST_OUT_EXECUTABLES)/apriori$(HOST_EXECUTABLE_SUFFIX)

prelink工具不是常用的prelink而是apriori,其源代码位于” /build/tools/apriori”

参考文档:

动态库优化——Prelink(预连接)技术

http://www.eefocus.com/article/09-04/71629s.html

===============

LOCAL_ARM_MODE := arm

目前Android大部分都是基于Arm处理器的,Arm指令用两种模式Thumb(每条指令两个字节)和arm指令(每条指令四个字节)

上一页  9 10 11 12 13 14 15 16 17 18 19  下一页

Tags:Android 开发 基础知识

编辑录入:coldstar [复制链接] [打 印]
赞助商链接