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源码分析如下: ...
随机推荐
- input 弹起数字键盘的那些坑
input ios 踩的大坑 前言:最近有个需求要将全平台的交易密码由原来的 6-16位 复杂密码改为6位纯数字交易密码,涉及到非常多的业务场景,但修改起来也无非两种:设置交易密码,使用交易密码 设置 ...
- 浅谈Nodejs应用的主文件index.js的组成部分
前言 Node妹子的问世,着实让我们前端攻城狮兴奋了一把,尤其本屌听说Javascript可以写服务端后,兴奋的像是看到了二次元萝莉的胖子...(●'◡'●).呃哼...YY先到这里,原谅本屌是个二次 ...
- H5: 表单验证失败的提示语
前言 前端的童鞋在写页面时, 都不可避免的总会踩到表单验证这个坑. 这时候, 我们就要跪了, 因为要写一堆js来检查. 但是自从H5出现后, 很多常见的表达验证, 它都已经帮我们实现了, 让我 ...
- canvas 实现 github404动态效果
使用canvas来完成github404的动态效果 前几天使用css样式和js致敬了一下github404的类似界面,同时最近又接触了canvas,本着瞎折腾的想法,便借着之前的js的算法,使用can ...
- java中将科学技术发转为正常数据
import java.text.NumberFormat; public class test { public static void main(String[] args) { double d ...
- Ubuntu安装开发者平台Backstage
Ubuntu安装开发者平台Backstage 什么是Backstage? Backstage是一个构建开发者门户的开源平台.通过支持一个集中的软件分类,Backstage可以保存并发布你的微服务和基础 ...
- Visual Studio 2022 git error Unable to negotiate with xx.xxx.xxxx port 22: no matching host key type found. Their offer: ssh-rsa
前言 前两天因为升级了Git导致git提交拉取的时候都提示下面这个异常,然后经过一番折腾以后终于把这个问题解决了.但是今天我升级了下Visual Studio 2022将其升级到了17.1.3版本然后 ...
- 基于Spring接口,集成Caffeine+Redis两级缓存
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在上一篇文章Redis+Caffeine两级缓存,让访问速度纵享丝滑中,我们介绍了3种整合Caffeine和Redis作为两级缓存使用的方法,虽 ...
- 安装mysql ndb cluster二进制版本在linux上
Installing an NDB Cluster Binary Release on Linux (官方安装手册)手册地址:https://dev.mysql.com/doc/refman/5.7/ ...
- Codeforces Round #716 (Div. 2), problem: (B) AND 0, Sum Big位运算思维
& -- 位运算之一,有0则0 原题链接 Problem - 1514B - Codeforces 题目 Example input 2 2 2 100000 20 output 4 2267 ...