java是程序设计语言
2、编译阶段——程序处理语言
程序处理语言包含编译器,解释器。它的作用就是把程序设计语言翻译成目标语言。
以上两者的关系就是“语言”和“翻译者”的关系。在使用语言时,我们只能说,使用这种语言去书写一段程序。编译器则是能够将某种语言的源程序进行翻译,然后生成目标程序。
不同的设计语言有不同的编译器。我们通常会说,某个编译器支持了什么语言,正如一个翻译者只懂翻译英语,法语,但是不会日语,所以翻译不了日语一样,这个编译器只识别能识别得语言并翻译这种语言。
3、运行,调试 阶段
在程序的运行阶段则是在一个特定的平台上,由这个平台来执行编译生成的程序。编译器的作用就是沟通源程序和程序的运行平台。源程序相对于一个运行平台来说是不可识别的,但当编译器将源程序编译成为这个平台所能够识别的目标语言以后,程序就可以在这个平台上运行了。Java虚拟机是一个平台,DOS 和 Windows 也是平台。
jvm
上面三个概念中已经指出了程序从源代码到运行的三个必经阶段:编码——编译——运行,调试。
所有的高级语言都需要进过这三个阶段。
JAVA的特殊特殊在哪里?——在编译阶段。
一次编译是宏观的一次编译
1、JAVA的编译过程:
2、分解过程
第一步:Java源代码——.CLASS文件字节码,是java的第一次编译。生成的这个.class文件就是可以到处运行的文件。
第二步:Java字节码——到目标机器代码;执行是由JVM执行引擎来完成,JAVA的第二次编译。
2、到处运行的隐含条件——这里的“到处”的前提是“装有JVM”。
总结:
java编译器把我们编写的代码,编译成.class文件只要 *** 作系统里又jvm 就可以运行
把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;同时也可以删减系统自带的应用程序,精简系统;
1.\build\target\product 目录下generic.mk文件:
Java代码 收藏代码
PRODUCT_PACKAGES := \
AccountAndSyncSettings \
DeskClock \
AlarmProvider \
Bluetooth \
Calculator \
Calendar \
Camera \
testMid \
CertInstaller \
DrmProvider \
Email \
Gallery3D \
LatinIME \
Launcher2 \
Mms \
Music \
我们添加一个testMid \ 应用名称。
2.把testMid包放入
\packages\apps 目录下,修改android.mk文件。
Java代码 收藏代码
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := testMid
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
注:LOCAL_PACKAGE_NAME := testMid (包名必须和generic.mk中添加的相同)
编译源码,可以看到在
\out\target\product\smdkv210\system\app
目录下生存了testMid.apk了。这时system.img也包含了此应用。
-------------------------------------------------------------------
特殊情况:有时,应用需要包含jar包,这时的app导入源码时会出现问题:
MODULE.TARGET.JAVA_LIBRARIES.libarity already defined by ... stop
由于 LOCAL_STATIC_JAVA_LIBRARIES := libarity 会引发错误信息。
目前解决方法是:
\build\core 目录下修改base_rules.mk
注释掉错误信息:
ifdef $(module_id)
#$(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id)))
endif
$(module_id) := $(LOCAL_PATH)
--重新编译,这时可以通过了。
(2)、删除原厂(Telchips)带源码的应用程序,如DTV_DVBT
在/device/telechips/m801/device.mk
注释掉相应语句:
# PRODUCT_PACKAGES += \
# SampleDVBTPlayer \
同时,在/out/target/product/m801/system/app 找到相应的.APK包,并删除
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)