Android.mk与Android.bp都是用于Android源码系统管理编译的文件,一些基本的声明差异如下:
MK |
BP |
|
模块名 | LOCAL_PACKAGE_NAME := [PackageName] 编译出的模块名 |
name: [PackageName] 编译出的模块名 |
包含的Src文件范围 |
LOCAL_SRC_FILES := \ $(call all-java-files-under, src) \ $(call all-java-files-under, src_ui_overrides) \ $(call all-java-files-under, go/src) |
srcs: [ "src/**/*.java", "src_shortcuts_overrides/**/*.java", "src_ui_overrides/**/*.java", "ext_tests/src/**/*.java", ], |
包含的Res文件范围 |
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/quickstep/res |
resource_dirs: [ "ext_tests/res", ], |
导入静态JAVA库依赖 |
LOCAL_STATIC_JAVA_LIBRARIES := \ SystemUI-statsd \ SystemUISharedLib |
static_libs:[ "Launcher3ResLib", "SystemUISharedLib", "SystemUI-statsd", ], |
决定编译后生成文件是否放到priv-app(默认app) |
LOCAL_PRIVILEGED_MODULE := true |
privileged: true, |
决定编译后生成文件是否放到system-ext(默认system) |
LOCAL_SYSTEM_EXT_MODULE := true |
system_ext_specific: true, |
指定覆盖编译(被指定的模块会在整编时被编进去,而是由当前模块代替) |
LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 |
overrides: [ "Home", "Launcher2", ], |
Manifest文件 |
LOCAL_MANIFEST_FILE := quickstep/AndroidManifest.xml |
manifest: "quickstep/AndroidManifest.xml", |
附加Manifest文件 |
LOCAL_FULL_LIBS_MANIFEST_FILES := \ $(LOCAL_PATH)/quickstep/AndroidManifest-launcher.xml \ $(LOCAL_PATH)/AndroidManifest-common.xml |
additional_manifests: [ "go/AndroidManifest.xml", "AndroidManifest-common.xml", ], |
代码混淆控制 |
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_PROGUARD_FLAG_FILES:=proguard.flags LOCAL_PROGUARD_ENABLED:=full |
optimize: { proguard_flags_files: ["proguard.flags"], // Proguard is disable for testing. Derivarive prjects to keep proguard enabled enabled: false, }, |
生成静态java库 |
include$(CLEAR_VARS) … … … include$(BUILD_STATIC_JAVA_LIBRARY) |
java_library_static{ … … … } |
补充:
代码混淆控制参数
full:使用编译系统默认的配置:压缩但不混淆和优化,默认的混淆配置文件是build/core/proguard.flags
custom:和full一样,但不包括aapt生成的resource相关的混淆配置。
nosystem:不使用系统的默认配置,但使用aapt生成的resource相关的混淆配置,其他混淆由模块自己负责。
disabled:关闭混淆
obfuscation:和full一样,并且开启混淆
optimization:和full一样,并且开启优化
不设置时,如果是app,默认为full,如果是library,则默认为disabled
编译模块
MK以include结尾表示编译模块,BP则以类似json格式,在外部标明编译模块var moduleTypes = map[string]string{
"BUILD_SHARED_LIBRARY": "cc_library_shared",
"BUILD_STATIC_LIBRARY": "cc_library_static",
"BUILD_HOST_SHARED_LIBRARY": "cc_library_host_shared",
"BUILD_HOST_STATIC_LIBRARY": "cc_library_host_static",
"BUILD_HEADER_LIBRARY": "cc_library_headers",
"BUILD_EXECUTABLE": "cc_binary",
"BUILD_HOST_EXECUTABLE": "cc_binary_host",
"BUILD_NATIVE_TEST": "cc_test",
"BUILD_HOST_NATIVE_TEST": "cc_test_host",
"BUILD_NATIVE_BENCHMARK": "cc_benchmark",
"BUILD_HOST_NATIVE_BENCHMARK": "cc_benchmark_host",
"BUILD_JAVA_LIBRARY": "java_library",
"BUILD_STATIC_JAVA_LIBRARY": "java_library_static",
"BUILD_HOST_JAVA_LIBRARY": "java_library_host",
"BUILD_HOST_DALVIK_JAVA_LIBRARY": "java_library_host_dalvik",
"BUILD_PACKAGE": "android_app"
}
大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作。SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。SQLite由以下几个部分组成:SQL编译器、内核、后端以及附件。SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),是调试、修改和扩展SQLite的内..._sqlite数据库介绍
JSON.parse一般用于将JSON字符串转化为JSON对象语法JSON.parse(text[, reviver])text 要被解析成 JavaScript 值的字符串reviver 转换器, 如果传入该参数(函数),可以用来修改解析生成的原始值,调用时机在 parse 函数返回之前一般第二个参数为回调函数,用于在返回结果之前,操作一些东西实例注意当传入reviver参数的时候,遍历到顶层的时候的key是一个空字符串,所以一般会遍历到空字符串的时候将返回原值const res_js json.parse
Earlier before I have written an article about current best CSS hacks which you can see here And now here’s the list of today’s most used CSS tricks – tips. I have added image examples for most of the...
题目大意:一张有向图,求一个环的点权和除以边权和,使得那个环在所有环中点权和除以边权和最大。题目解析:最优比例环,令sigma(vi)/sigma(ei)=0,换句话说如果途中有负环,就不成立,上式成立需要所有换都不是负环,我们只需要二分ans即可;AC代码:#include#include#include#include#include#includeusing name
用Windows 的远程桌面连接 CentOS 6 我们购买远程的Linux CentosVPS主机如何远程登录操作? 如果手头的是windows电脑,远程的是centos系统,一般可以这么操作: 一般远程主机是最低安装,先用Putty工具使用SSH模式用命令行远程操作: 先为centos安装图形界面:#yum groupinstall "Desktop"#yum groupinstall "X ..._远程连接centos6
问题描述利用哈弗曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。基本要求(1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个..._选题二:哈夫曼(huffman)编/译码器 //【问题描述】 //利用哈夫曼编码进行通信可以
数据介绍数据来源于kaggle House Prices数据有以下几个维度,其中36个为特征,价格为标签特征定义SalePrice物业的销售价格以美元计算。这是您尝试预测的目标变量。MSSubClass建筑类MSZoning一般分区分类LotFrontage街道的线性脚连接到财产LotArea地块尺寸,平方英尺Street道路通道..._amepyplot
1. 短信验证码---60s倒计时// html<h2>短信验证码</h2><el-button :disabled="totalTime < 60" @click="getCountdown">{{content}}</el-button>// 定义常量totalTime: 60,content: '发送验证码', getCountdown() { const clock = window.setI_el-statistic
classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异在使用Oracle JDBC驱动时,有些问题你是不是通过替换不同版本的Oracle JDBC驱动来解决的?最常使用的ojdbc14.jar有多个版本,classes12.jar有多个版本你了解吗?连接类型:1、JDBC OCI: oci是oracle call interface的缩写..._ojdbc14jar是支持oracle的,mysql是哪个jar
问题现象使用Vue时需要加载初始化数据如果在created异步加载初始化数据,然后把请求到的数据赋值为this.data.此时,如果在mounted函数里获取this.data,是获取不到的,因为异步加载需要时间,如果延迟时间是可以获取到的,但是问题是不知道延迟时间,而且这个方法也不是太好那么如何获取到这个异步加载的数据呢,使用watch方法的数据监听1. wacth:..._怎么得到createapp 生成的组件的data
create index IX_TABLE1_C1 on table1(column1),create index IX_TABLE1_C2 on table1(column2)索引的三個問題索引( Index )是常见的数据库对象,它的设置好坏、使用是否得当,极大地影响数据库应用程序和Database 的性能。虽然有许多资料讲索引的用法, DBA 和 Develo per 们也经常与它打交道,但..._oracle 索引量过大怎么办
/** Copyright(c) 2017,烟台大学计算机学院* All rights reserved.* 作 者:李琳汐* 完成日期:2017 年 11 月 25日* 版 本 号:v1.0** 问题描述:拓扑排序*/#include #include #include "graph.h"void TopSort(ALGraph *G){ int i,j