Android.mk编译App源码
在Andriod源码环境编译APP主要考虑如何引入第三方jar包和arr包的问题,初次尝试,步步是坑,这里给出一个模板:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_PACKAGE_NAME := TestApp
LOCAL_CERTIFICATE := platform
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_PRIVILEGED_MODULE := false
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_AAR_LIBRARIES := appcompat \
cardview
LOCAL_STATIC_JAVA_LIBRARIES := com.google.gson
LOCAL_DEX_PREOPT := false
LOCAL_AAPT_FLAGS := --auto-add-overlay \
--extra-packages android.support.v7.appcompat:android.support.v7.cardview
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := com.google.gson:libs/gson-2.8.0.jar \
appcompat:libs/appcompat-v7-23.0.0.aar \
cardview:libs/cardview-v7-23.0.0.aar
include $(BUILD_MULTI_PREBUILT)
LOCAL_PATH:用来获取当前所在的目录;CLEAR_VARS:每编译一个目标都会包含它来清除局部变量,避免上一个构建目标的局部变量对这个目标造成影响;LOCAL_MODULE_TAGS: 用来表明什么情形才编译这个目标,optional表示无论什么情况都编译;LOCAL_PACKAGE_NAME: 表示APP的名字,和当前目录名称一致;LOCAL_CERTIFICATE: 使用平台签名;LOCAL_MANIFEST_FILE: 指定APP的清单文件;LOCAL_PRIVILEGED_MODULE: 为true时APK会生成在/system/pri-app下,为false放在/system/app下;LOCAL_SRC_FILES: 指定需要编译的java源文件位置;LOCAL_STATIC_JAVA_AAR_LIBRARIES: 指定依赖的第三方aar包,这条很重要;这里只是指定名称(相当于别名),具体aar包的位置在最后定义;LOCAL_STATIC_JAVA_LIBRARIES: 指定依赖的jar包;LOCAL_DEX_PREOPT: 是否进行odex优化,odex优化会拆分apk,生成xx.odex文件,加快运行速度;不过拆分的apk不能直接安装,不便于调试,所以这里设为false;LOCAL_AAPT_FLAGS: 指定AAPT的运行参数,AAPT是Android Asset Packaging Tool,即Android的打包工具。Android的样式、字符串等可以看做是层层覆盖的,当基础包中有这个资源,上层的包中也有这个资源,则使用上层包中的这个资源;当基础包中有这个资源,上层的包中没有这个资源,--auto-add-overlay会为上层包添加这个缺失的资源。AAPT默认会将资源索引合成一个R.java文件,如:com.test.R.java,但这样会导致其它aar包找不到资源,因为它本来要可能要引用的是com.aar.R.java,--extra-packages参数可以根据包名生成多个R.java;include $(BUILD_PACKAGE):会引入编译APK所需要的规则,即如何编译一个APk。到这条为止,生成TestApp这个目标的规则已经定义好了,下面是它所需要的依赖,即jar包、arr包的定义;CLEAR_VARS:同样,清除一下局部变量;LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES: 指定jar包和aar包的别名和位置;BUILD_MULTI_PREBUILT: 引入构建jar包和aar包的详细构建规则;
Android.mk编译App源码的更多相关文章
- Android反编译调试源码
Android反编译调试源码 1. 反编译得到源码 直接在windows 命令行下输入命令java -jar apktool_2.0.0.jar d -d 小米运动_1.4.641_1058.apk ...
- 优化Recorder H5录音:可边录边转码上传服务器,支持微信提供Android IOS Hybrid App源码
Recorder H5 GitHub开源库随着支持功能的增多,音频转码处理效率渐渐的跟不上需求了,近期抽时间对音频转码部分进行了升级优化,以支持更多实用的功能. 另外IOS的Hybrid App也完成 ...
- Android反编译获取源码-android学习之旅(70)
上一讲我们介绍了如何获取资源文件,这一节讲解如何获取源码,其实获取源码真的很简单 首先还是要有工具,Dex2jar,这个工具用于将apk解压之后的dex文件转化为jar文件还有jd-gui的这个工具能 ...
- android反编译查看源码,apk解压后XML乱码解决
1:找了好几个软件都不能图形化的解决反编译,很不舒服,最后找了个还算顺手的,顺便保存下. 2:使用过程 <1> apk转jar apktoolkit工具 <2> 查看jar源码 ...
- Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程
Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程 在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...
- 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码
http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...
- 导入android源码中的APP源码到eclipse
导入android源码中的APP源码到eclipse 一般最简单的办法就是创建新的android工程,选择create project from existing source选项,直接导入源码就OK ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- android 在线升级借助开源中国App源码
android 在线升级借助开源中国App源码 http://www.cnblogs.com/luomingui/p/3949429.html android 在线升级借助开源中国App源码分析如下: ...
随机推荐
- 编译器警告c4996
由于编译器的原因(我用的是vs 2012),我们写程序时有时候会遇到编译器给出的警告,如: warning C4996: 'fopen': This function or variable may ...
- 让IE兼容background-size的方法_background-size ie下使用
ie6,ie7,ie8下对css background-size并不支持,那么如何在ie下兼容background-size呢?在ie下把图片完整的居中显示在一定范围内在css中添加如下代码: fil ...
- 一个chome的广告拦截小插件
先附上下载地址:https://chromecj.com/productivity/2015-03/391.html 可以屏蔽绝大多数广告啊,浏览器用起来神清气爽! 下载完成后有一个名字为这个的文件, ...
- 微信分享报错config:invalid url domain
错误类型:invalid url domain 调试返回参数: { "errMsg": "config:invalid url domain" } 截图: 环境 ...
- Make-learning
Make学习笔记 make是工具,Makefile是指导make工作的文件,而CMake则是生成Makefile的工具 要点: 终极目标是Makefile里面的第一个规则目标 目标下面的命令必须接的是 ...
- 使用Socket实现HttpServer(一)
使用Socket实现HttpServer(一) Socket 编程 socket 翻译过来叫插槽,一张图你就明白 socket 就插在 TCP 也就是传输层上,对用户的请求和服务器的响应进行处理. 下 ...
- /application/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
在启动/usr/local/zabbix/sbin/zabbix_server 时报错如下 此时需要配置一个软连接指向该位置. ln -s /usr/local/mysql/lib/libmysqlc ...
- HCIE笔记-第一节-网络的基本概念
R&S= 路由交换 Datacom =数通 =数据通信 某个设备产生了数据之后,借助整体的网络到达目的地的过程. 网络历史 -- 数通为什么产生? 1946年:世界上第一台计算机诞生.军事 科 ...
- Java语言学习day18--7月24日
###01get和set方法 * A.get和set方法 * 年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,这样还是不行,那肿么办呢?按照之前所学习的封装的原理,隐藏后,还需要提供访问方式. ...
- AOT和单文件发布对程序性能的影响
前言 这里先和大家介绍一下.NET一些发布的历史,以前的.NET框架原生并不支持最终编译结果的单文件发布(需要依赖第三方工具),我这里新建了一个简单的ASP.NET Core项目,发布以后的目录就会像 ...