当前位置:首页 » 编程软件 » 安卓预编译

安卓预编译

发布时间: 2022-01-18 11:21:47

⑴ 如何预编译 Android 模拟器专用内核

Android源码编译之后生成的是ramdisk.img、system.img和userdata.img。而内核源码编译完成之后生成的是ZImage。在一般情况下Android源码是不带有内核源码的,但是带有一个镜像,这样在编译完Android源码之后就可以模拟器启动了,如果要更换系统的内核,此时将高版本的内核源码进行编译生成ZImage然后替换Android系统的的镜像。这样使用模拟器启动之后就可以查看内核是否已经被刷新。

⑵ 安卓怎样产生 build art android

ART是一个AOT编译器。所谓AOT (Ahead of Time)是指在运行以前就把中间代码静态编译成本地代码,而JIT (Just
inTime)则是在运行时动态编译。

AOT和JIT比各有长处,这里不详细展开,只简单列举几个最主要的:

AOT的主要编译过程发生于开发用机,因此编译得慢一点没关系,可以充分的做各种耗时的优化;JIT在运行时动态编译,通常不能做太耗时的优化,否则影响启动和运行速度

更具体一点,以Sun的JVM为例,JIT大体上划分为client和server两种模式。Client模式下VM是一边解释执行,一边识别热点
区域进行JIT编译,以免明显影响启动速度;考虑到内存占用,也不会把所有java字节码都编译成本地代码。Server模式下则会进行全面的JIT编
译,因为server启动慢一点没关系,一旦跑起来就会运行很长时间,所以花一点点时间全面优化是值得的。

因为受优化程度限制,JIT编译出来的本地代码体积通常比较大,5到10倍于bytecode都是正常的。AOT编译出来的本地代码体积更小。Android的JIT
code cache也是内存占用的重要角色。

因为是预编译好的机器代码,AOT产生的代码和加载执行过程和普通的本地代码没有太大分别。不过仍然需要运行时的GC支持。

虽然AOT可以有更多的时间和空间做编译优化,但并不等于性能上就一定胜过JIT。JVM有不少东西只能在运行时动态决定是否可以采用编译优化(如
识别可以inline的虚方法),以及运行时动态反优化(例如inline了一个虚方法,后来发现遇到新的派生类的实例,就需要取消原来的
inline)。这些事情AOT就不容易做到。

AOT的编译器一般会分两个版本,一个在开发机上编译整个系统和预装应用,另一个是一个精简版,在设备上运行,负责编译连接新安装的应用。

AOT编译出来的代码仍然需要运行时的支持,特别是GC。

如果ART确实是用AOT compiler替换JIT,性能先不谈,Android的内存占用应该会因此获益。现在dex代码经过 dex =>
optimized dex => JIT cache这个过程,内存中需要同时容纳odex和JIT cache两份代码;换成ART以后,就变成dex
=> oat,内存里只放oat就可以。不过考虑到ART的解释器代码里有提到deoptimization,也有可能在特定情况下还需要load
dex代码解释执行。重要的是oat应该是可以直接mmap执行的代码(其实就是一个真·ELF格式的文件),加载/换页重加载的速度都会比从odex动
态编译来得快。

简单的说就是以更高的执行效率来运行软件art应该利用了LLVM

性能就提升了,另一方面预载的私有软件也可以凭此做好保密工作,留在机器上的程序本体是机器码了,没有deoat了。

其实Google也在Chrome做了类似的事情。

目前的Chrome支持pNACL,也是一种以(LLVM)字节码发布,到本地再编译的模式。如此能获得接近那些直接被编译为原生代码的软件的性能。

Mozilla给出的替代品是asm.js,则是用javascript引擎执行C++本机代码。

⑶ Android 中的 LLVM 主要做什么

LLVM,全称为Low Level Virtual Machine,其实它就是底层编译框架,其执行效率要比Gcc等以速度快见长的编译器要快上很多。Google将它用于Android中也是因为它超高的效率。现在Android因为开始采用ART,所以用它做预编译(AOT),从而提高了程序的执行效率,其代价就是需要更大的空间,安装时间的增加。因此,LLVM现在基本上参与了Android应用的的编译工作,而在ART之前,Android3.0之后,LLVM主要用来进行3D渲染(RenderScript)

⑷ android手机怎么会

根据第三方的调研数据显示,有77%的Android手机用户承认自己曾遭遇过手机变慢的影响,网络搜索“Android+卡慢”,也有超过460万条结果。在业内,Android手机一直有着“越用越慢”的口碑,这个现象甚至超出了硬件范畴——很多中高端Android手机在硬件参数上都优于同一代iPhone,但是它们仍然会在使用半年到一年的时间后进入“欠流畅”的状态——这无疑是一件令人困扰的事情。
Android手机,由于开源的公开条件,Google无法从代码这一端口约束第三方的应用程序,同时,由于linux核心设定应用在调取系统功能时一定 要取得ROOT权限,这也导致大量应用因为单一功能的实现需求而获得整个ROOT层面的支配,可以在Android手机的任意储存位置进行读写,这种高自 由度无异于开启了潘多拉魔盒,让Android手机无法对恶意App事先设防。这也是开源软件备受争议、且在商用领域遭到抵触的原因:它只关心是否授予了 用户自由——这个自由也包括逾越边界的自由——而没有从最坏的出发点去考虑如何规避被滥用的风险。尽管Google作为巨头,一直在尝试对产业链进行统一 管理,但是当这条产业链日益庞大、连Google也只能扮演其中之一的角色时,Android的失控也就在情理之中了。比如,Android的最新版本通 常需要花费超过一年半的时间,才能使激活它的Android手机占比超过50%,但是iOS 7只用了两个月,就让半数以上的iPhone都更新完毕。另外,一款应用程序如果被苹果从App Store中惩罚出去,它就再也无法被安装到任何一款合法的iPhone里面,但是如果一款应用程序被Google驱逐出Google Play,但是它还是可以登录各种第三方应用市场,提供正常的下载和安装。
所以,Android的这种天生短板,又催生出了一个“手机调校”的市场,并带动了新的产业链。
“手 机调校”的第一级,在于系统层。在Android 4.4以及之后的Android L的规划中,它将应用程序的运行模式由Dalvik换成了ART,其原理简单来说是“预编译”效果,即当一款应用程序在第一次被安装到Android时, 它的字节码就已经被编译成为了本地的机器码,减少后续运行应用程序时的启动和执行时间。
根据Google自己公布的结果,在不同的性能测试App中,ART的速度对比Dalvik的平均提升幅度达到了80%,在某些项目中,ART的提升幅度甚至超过了1.5倍,这个结果可谓非常喜人。
这 是Google希望从源头解决Android卡慢问题的努力,但是这只是对性能优化有着作用,无法解决因为应用程序违规调用资源而产生的问题。同时,由于 在安装应用程序时进行了“预编译”,整个安装时间将会变长,安装完毕后生成的文件也会变大,比如最新的Google+安装包只有6.9M,但是它安装后的 APK大小达到了28.3M,这对Android手机储存空间又存在过多占用的问题。

安卓手机运行环境art什么意思

Android运行环境ART

安卓之前的版本运行机制是Dalvik,这个导致安卓卡慢,安卓4.4之后推出了ART,在5.0上完全使用了ART模式。

ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。

通俗一点就是,ART增加APK安装容量,实现了流畅度。

⑹ Android 怎么简单实现预编译

可以巧妙地利用常量来实现类似的功能。编译的时候,一般会把常量进行硬编码,并把不能抵达的代码进行删减。因此,我们有了下面类似的代码:


[java]

public final static boolean IsDebug= false;

if(IsDebug){
Log.i(tag,msg);
}


可以对编译后的文件,进行反编译

⑺ 安卓ART模式的好处,用过的来回答下。有没有什么问题

ART模式英文全称为:Android runtime,谷歌Android 4.4系统新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验,对于大家来说,只要明白ART模式可让系统体验更加流畅。

  1. ART模式安装应用所占的ROM空间比Dalvik模式多了接近一倍。

  2. ART模式通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。

⑻ 安卓手机怎么设置 手机系统设置 手机性能才能提到最高

可以通过开启发者选项,并对开发者选项相关项进行优化设置,提高手机的流畅性。

(以小米手机为例)MIUI有很多的这样的功能,具体是菜单跳转的渐进渐出,窗口关闭与打开时的过渡效果等,虽然过渡的不是很慢,这个功能是在开发者选项里面设置,默认MIUI是隐藏了开发者选项的,如何开启开发者选项以及如何设置过渡动画可以按以下教程:

1、在手机主屏找到设置->关于手机。

5、如果将上面的效果设置为2,再返回去操作就会发现,比如打开设置,再点开其它菜单就会显得慢,会有渐入的感觉,让人觉得不能忍受,改到0.5或者关闭就快多了,直接弹出下一级菜单。

⑼ anzhuo应用程序怎么反编译

让我们先来认识下APK文件. Android的应用程序包为扩展名为.apk文件, 无论你是从手机市场里下载, 还是电脑中下载. 都是这类APK文件. APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别.


android


一个APK文件解压开通常有这样的文件夹:


META-INF 目录:

MANIFEST.MF: manifest文件

CERT.RSA: 应用程序证书

CERT.SF: SHA-1资源签名列表. 例如:

Signature-Version: 1.0

Created-By: 1.0 (Android)

SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE=

...

Name: res/layout/exchange_component_back_bottom.xml

SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w=

...

Name: res/drawable-hdpi/icon.png

SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=


lib: 这个目录包含某些特定编译代码, 这个文件夹分成下面这些

armeabi: 只基于所有ARM处理器的编译代码.

armeabi-v7a: 所有ARMv7处理器的编译代码

x86: 仅针对x86处理器的编译代码

mips: 为MIPS处理器的编译代码

res: 包含资源的目录不编译到资源文件,看下面:

assets: 包含应用程序的资产,可以通过AssetManager进行检索.

AndroidManifest.xml: 包含应用程序的元数据文件,描述名称、版本、访问权限、引用应用程序的库文件。此文件在Android二进制格式, 可被工具转化为可读的纯文本XML工具,如 AXMLPrinter2,apktool,或Androguard。设置,可以通过AssetManager进行检索

classes.dex: Dalvik字节码

resources.arsc : 一个包含预编译资源文件,如二进制的XML.

有两种方法反编译APK, 如果是为了汉化程序, 可以使用apktool:


安装过程

1.下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-brut1.tar.bz2

2.把两个文件都解压放在同一个目录,共三个文件

aapt.exe

apktool.bat

apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。


在命令行执行:


apktool d d:xxx.apk d:xxx


xxx 为你的输出目录, 然后你就可以看一些xml的资源文件, 以及Smali文件. 如下图某APK文件反编译输出目录:

由此可见,Android应用程序反编译并不难, 加密与解密的斗争一直会持续.

⑽ android 怎么编译so文件

android NDK编译多个so文件

android编译系统的makefile文件Android.mk写法如下

(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下

Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:

LOCAL_PATH:=$(call my-dir)

上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。

(2)Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始

以include $(BUILD_XXX)结束。

include $(CLEAR_VARS)

CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除除LOCAL_PATH以外的所有LOCAL_XXX变量,

如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。

include $(BUILD_STATIC_LIBRARY)表示编译成静态库

include $(BUILD_SHARED_LIBRARY)表示编译成动态库。

include $(BUILD_EXECUTABLE)表示编译成可执行程序

(3)举例如下(frameworks/base/libs/audioflinger/Android.mk):

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS) 模块一

ifeq ($(AUDIO_POLICY_TEST),true)

ENABLE_AUDIO_DUMP := true

endif

LOCAL_SRC_FILES:= \

AudioHardwareGeneric.cpp \

AudioHardwareStub.cpp \

AudioHardwareInterface.cpp

ifeq ($(ENABLE_AUDIO_DUMP),true)

LOCAL_SRC_FILES += AudioDumpInterface.cpp

LOCAL_CFLAGS += -DENABLE_AUDIO_DUMP

endif

LOCAL_SHARED_LIBRARIES := \

libcutils \

libutils \

libbinder \

libmedia \

libhardware_legacy

ifeq ($(strip $(BOARD_USES_GENERIC_AUDIO)),true)

LOCAL_CFLAGS += -DGENERIC_AUDIO

endif

LOCAL_MODULE:= libaudiointerface

ifeq ($(BOARD_HAVE_BLUETOOTH),true)

LOCAL_SRC_FILES += A2dpAudioInterface.cpp

LOCAL_SHARED_LIBRARIES += liba2dp

LOCAL_CFLAGS += -DWITH_BLUETOOTH -DWITH_A2DP

LOCAL_C_INCLUDES += $(call include-path-for, bluez)

endif

include $(BUILD_STATIC_LIBRARY) 模块一编译成静态库

include $(CLEAR_VARS) 模块二

LOCAL_SRC_FILES:= \

AudioPolicyManagerBase.cpp

LOCAL_SHARED_LIBRARIES := \

libcutils \

libutils \

libmedia

ifeq ($(TARGET_SIMULATOR),true)

LOCAL_LDLIBS += -ldl

else

LOCAL_SHARED_LIBRARIES += libdl

endif

LOCAL_MODULE:= libaudiopolicybase

ifeq ($(BOARD_HAVE_BLUETOOTH),true)

LOCAL_CFLAGS += -DWITH_A2DP

endif

ifeq ($(AUDIO_POLICY_TEST),true)

LOCAL_CFLAGS += -DAUDIO_POLICY_TEST

endif

include $(BUILD_STATIC_LIBRARY) 模块二编译成静态库

include $(CLEAR_VARS) 模块三

LOCAL_SRC_FILES:= \

AudioFlinger.cpp \

AudioMixer.cpp.arm \

AudioResampler.cpp.arm \

AudioResamplerSinc.cpp.arm \

AudioResamplerCubic.cpp.arm \

AudioPolicyService.cpp

LOCAL_SHARED_LIBRARIES := \

libcutils \

libutils \

libbinder \

libmedia \

libhardware_legacy

ifeq ($(strip $(BOARD_USES_GENERIC_AUDIO)),true)

LOCAL_STATIC_LIBRARIES += libaudiointerface libaudiopolicybase

LOCAL_CFLAGS += -DGENERIC_AUDIO

else

LOCAL_SHARED_LIBRARIES += libaudio libaudiopolicy

endif

ifeq ($(TARGET_SIMULATOR),true)

LOCAL_LDLIBS += -ldl

else

LOCAL_SHARED_LIBRARIES += libdl

endif

LOCAL_MODULE:= libaudioflinger

ifeq ($(BOARD_HAVE_BLUETOOTH),true)

LOCAL_CFLAGS += -DWITH_BLUETOOTH -DWITH_A2DP

LOCAL_SHARED_LIBRARIES += liba2dp

endif

ifeq ($(AUDIO_POLICY_TEST),true)

LOCAL_CFLAGS += -DAUDIO_POLICY_TEST

endif

ifeq ($(TARGET_SIMULATOR),true)

ifeq ($(HOST_OS),linux)

LOCAL_LDLIBS += -lrt -lpthread

endif

endif

ifeq ($(BOARD_USE_LVMX),true)

LOCAL_CFLAGS += -DLVMX

LOCAL_C_INCLUDES += vendor/nxp

LOCAL_STATIC_LIBRARIES += liblifevibes

LOCAL_SHARED_LIBRARIES += liblvmxservice

# LOCAL_SHARED_LIBRARIES += liblvmxipc

endif

include $(BUILD_SHARED_LIBRARY) 模块三编译成动态库

(4)编译一个应用程序(APK)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Build all java files in the java subdirectory-->直译(建立在java子目录中的所有Java文件)

LOCAL_SRC_FILES := $(call all-subdir-java-files)

# Name of the APK to build-->直译(创建APK的名称)

LOCAL_PACKAGE_NAME := LocalPackage

# Tell it to build an APK-->直译(告诉它来建立一个APK)

include $(BUILD_PACKAGE)

(5)编译一个依赖于静态Java库(static.jar)的应用程序

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# List of static libraries to include in the package

LOCAL_STATIC_JAVA_LIBRARIES := static-library

# Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

# Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage

# Tell it to build an APK

include $(BUILD_PACKAGE)

(6)编译一个需要用平台的key签名的应用程序

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

# Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage

LOCAL_CERTIFICATE := platform

# Tell it to build an APK

include $(BUILD_PACKAGE)

(7)编译一个需要用特定key前面的应用程序

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

# Name of the APK to build

LOCAL_PACKAGE_NAME := LocalPackage

LOCAL_CERTIFICATE := vendor/example/certs/app

# Tell it to build an APK

include $(BUILD_PACKAGE)

(8)添加一个预编译应用程序

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Mole name should match apk name to be installed.

LOCAL_MODULE := LocalMoleName

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

include $(BUILD_PREBUILT)

(9)添加一个静态JAVA库

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Build all java files in the java subdirectory

LOCAL_SRC_FILES := $(call all-subdir-java-files)

# Any libraries that this library depends on

LOCAL_JAVA_LIBRARIES := android.test.runner

# The name of the jar file to create

LOCAL_MODULE := sample

# Build a static jar file.

include $(BUILD_STATIC_JAVA_LIBRARY)

(10)Android.mk的编译模块中间可以定义相关的编译内容,也就是指定相关的变量如下:

LOCAL_AAPT_FLAGS

LOCAL_ACP_UNAVAILABLE

LOCAL_ADDITIONAL_JAVA_DIR

LOCAL_AIDL_INCLUDES

LOCAL_ALLOW_UNDEFINED_SYMBOLS

LOCAL_ARM_MODE

LOCAL_ASFLAGS

LOCAL_ASSET_DIR

LOCAL_ASSET_FILES 在Android.mk文件中编译应用程序(BUILD_PACKAGE)时设置此变量,表示资源文件,

通常会定义成LOCAL_ASSET_FILES += $(call find-subdir-assets)

LOCAL_BUILT_MODULE_STEM

LOCAL_C_INCLUDES 额外的C/C++编译头文件路径,用LOCAL_PATH表示本文件所在目录

举例如下:

LOCAL_C_INCLUDES += extlibs/zlib-1.2.3

LOCAL_C_INCLUDES += $(LOCAL_PATH)/src

LOCAL_CC 指定C编译器

LOCAL_CERTIFICATE 签名认证

LOCAL_CFLAGS 为C/C++编译器定义额外的标志(如宏定义),举例:LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1

LOCAL_CLASSPATH

LOCAL_COMPRESS_MODULE_SYMBOLS

LOCAL_COPY_HEADERS install应用程序时需要复制的头文件,必须同时定义LOCAL_COPY_HEADERS_TO

LOCAL_COPY_HEADERS_TO install应用程序时复制头文件的目的路径

LOCAL_CPP_EXTENSION 如果你的C++文件不是以cpp为文件后缀,你可以通过LOCAL_CPP_EXTENSION指定C++文件后缀名

如:LOCAL_CPP_EXTENSION := .cc

注意统一模块中C++文件后缀必须保持一致。

LOCAL_CPPFLAGS 传递额外的标志给C++编译器,如:LOCAL_CPPFLAGS += -ffriend-injection

LOCAL_CXX 指定C++编译器

LOCAL_DX_FLAGS

LOCAL_EXPORT_PACKAGE_RESOURCES

LOCAL_FORCE_STATIC_EXECUTABLE 如果编译的可执行程序要进行静态链接(执行时不依赖于任何动态库),则设置LOCAL_FORCE_STATIC_EXECUTABLE:=true

目前只有libc有静态库形式,这个只有文件系统中/sbin目录下的应用程序会用到,这个目录下的应用程序在运行时通常

文件系统的其它部分还没有加载,所以必须进行静态链接。

LOCAL_GENERATED_SOURCES

LOCAL_INSTRUMENTATION_FOR

LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME

LOCAL_INTERMEDIATE_SOURCES

LOCAL_INTERMEDIATE_TARGETS

LOCAL_IS_HOST_MODULE

LOCAL_JAR_MANIFEST

LOCAL_JARJAR_RULES

LOCAL_JAVA_LIBRARIES 编译java应用程序和库的时候指定包含的java类库,目前有core和framework两种

多数情况下定义成:LOCAL_JAVA_LIBRARIES := core framework

注意LOCAL_JAVA_LIBRARIES不是必须的,而且编译APK时不允许定义(系统会自动添加)

LOCAL_JAVA_RESOURCE_DIRS

LOCAL_JAVA_RESOURCE_FILES

LOCAL_JNI_SHARED_LIBRARIES

LOCAL_LDFLAGS 传递额外的参数给连接器(务必注意参数的顺序)

LOCAL_LDLIBS 为可执行程序或者库的编译指定额外的库,指定库以"-lxxx"格式,举例:

LOCAL_LDLIBS += -lcurses -lpthread

LOCAL_LDLIBS += -Wl,-z,origin

LOCAL_MODULE 生成的模块的名称(注意应用程序名称用LOCAL_PACKAGE_NAME而不是LOCAL_MODULE)

LOCAL_MODULE_PATH 生成模块的路径

LOCAL_MODULE_STEM

LOCAL_MODULE_TAGS 生成模块的标记

LOCAL_NO_DEFAULT_COMPILER_FLAGS

LOCAL_NO_EMMA_COMPILE

LOCAL_NO_EMMA_INSTRUMENT

LOCAL_NO_STANDARD_LIBRARIES

LOCAL_OVERRIDES_PACKAGES

LOCAL_PACKAGE_NAME APK应用程序的名称

LOCAL_POST_PROCESS_COMMAND

LOCAL_PREBUILT_EXECUTABLES 预编译including $(BUILD_PREBUILT)或者$(BUILD_HOST_PREBUILT)时所用,指定需要复制的可执行文件

LOCAL_PREBUILT_JAVA_LIBRARIES

LOCAL_PREBUILT_LIBS 预编译including $(BUILD_PREBUILT)或者$(BUILD_HOST_PREBUILT)时所用, 指定需要复制的库.

LOCAL_PREBUILT_OBJ_FILES

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES

LOCAL_PRELINK_MODULE 是否需要预连接处理(默认需要,用来做动态库优化)

LOCAL_REQUIRED_MODULES 指定模块运行所依赖的模块(模块安装时将会同步安装它所依赖的模块)

LOCAL_RESOURCE_DIR

LOCAL_SDK_VERSION

LOCAL_SHARED_LIBRARIES 可链接动态库

LOCAL_SRC_FILES 编译源文件

LOCAL_STATIC_JAVA_LIBRARIES

LOCAL_STATIC_LIBRARIES 可链接静态库

LOCAL_UNINSTALLABLE_MODULE

LOCAL_UNSTRIPPED_PATH

LOCAL_WHOLE_STATIC_LIBRARIES 指定模块所需要载入的完整静态库(这些精通库在链接是不允许链接器删除其中无用的代码)

LOCAL_YACCFLAGS

OVERRIDE_BUILT_MODULE_PATH

热点内容
java比较三个数 发布:2024-11-15 15:08:39 浏览:835
fml加密 发布:2024-11-15 15:05:56 浏览:882
存储上市龙头 发布:2024-11-15 14:52:14 浏览:37
我的世界服务器怎么重置教学 发布:2024-11-15 14:52:13 浏览:122
C语言tf 发布:2024-11-15 14:36:22 浏览:811
违反密码法是什么意思 发布:2024-11-15 14:36:20 浏览:920
androidmp3录音 发布:2024-11-15 14:32:50 浏览:493
英朗自动挡哪个配置最好 发布:2024-11-15 14:27:44 浏览:253
编译原理断言有哪几种 发布:2024-11-15 14:25:29 浏览:201
数据库数据重复 发布:2024-11-15 14:23:17 浏览:781