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源码分析如下: ...
随机推荐
- 浅析CSS定位
position 属性指定了html元素的定位类型. position 属性有 4 种值:1. static(default)表示没有定位,元素出现在正常的文档流中.为静态定位的元素设置 top|bo ...
- 记离线缓存(manifest)一大坑,断定其只适用于静态网站或离线应用
今天看了离线缓存(manifest)方面的资料,兴冲冲地就想给自己的网站用上.待我把代码都写好部署上服务器,并测试过OK的时候,在SegmentFault刷了一把manifest方面的问答,才发现这个 ...
- html和css常见的一些问题总结
html 标签 一般在html有块级元素和行级元素,主要的块级元素有 div,p,h1-h6,ul,ol,li,dl,dt,dd,table,tr,th,td,有好记的办法,div,p,显示标题的,列 ...
- 正则、字符类Pattern、Matcher类
字符类 * [abc] a.b 或 c(简单类) * [^abc] 任何字符,除了 a.b 或 c(否定) * [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) * [0-9 ...
- js验证邮箱格式
function test() { var temp = document.getElementById("text1"); //对电子邮件的验证 var myreg = /^([ ...
- 使用Object.Defineproperties改变对象数据结构
此方法设置键的时候如果需要使键为变量则需要加中括号[] 如下 let addKeys = Number(keys[keys.length - 1]) + 1 Object.assign(this.t ...
- ICMP TYPE CODE 对应表
下载ping程序源代码等信息,可以在这里下载 [root@ht8 network-scripts]# ping -V ping utility, iputils-s20160308 //ping实用程 ...
- 某空间下的令牌访问产生过程--Kubernetes Dashboard(k8s-Dashboard)
在面试中发现,有些运维人员基本的令牌访问方式都不知道,下面介绍下令牌的产生过程 某个空间下的令牌访问产生过程(空间名称为cc) ###创建命名空间[root@vms61 ccadmin]# kubec ...
- WePY开发环境的安装和小程序生成WePY项目
相对于微信开发者工具而言,WePY的安装和生成项目稍显复杂.特记录下安装顺序: 1.安装Node.js 在Node官网(https://nodejs.org/)下载Node.js的安装包,此处我下载的 ...
- Git上传本地仓库文件到Gitee(Github同理)
前言:本来想把最近的代码更新到Github上,但是校园网打不开,于是决定暂时先更新到Gitee中,Github中的操作也同理. 1. 创建云仓库: 就是在Gitee/Github上创建仓库,这里不演示 ...