【Android Gradle】安卓应用构建流程 ( Java 源码编译 和 AIDL 文件编译 )
文章目录
- 一、安卓应用构建简介
- 二、Java 源码编译
- 三、AIDL 源码编译
一、安卓应用构建简介
使用 Android Studio 开发 Android 应用时 , 编译应用后在 Module 的 build 目录下生成如下 , generated , intermediates , outputs , tmp 等目录 ;
build 目录主要是为了存放在编译 APK 安装包时产生的临时文件 ;
这些临时文件都是各种 Java JDK , Android SDK 工具执行产生的 , 如 : javac 执行产生 .class 字节码文件 , dx 工具打包字节码文件为 dex 文件 , aapt2 打包资源到 ap_generated_sources 中 , ndk 编译产生 .so 动态库 ;
intermediates 目录主要是处理与 Java 代码相关的临时文件 , 或缓存文件 ;
generated 主要是处理 配置信息 , Resources 资源文件 ;
output 目录主要是输出 打包 后的 APK 安装包文件 ;
这些文件是应用编译过程中 , 生成的文件 , 熟悉安卓应用编译流程 , 和这些生成文件 , 对排查 Android 编译时错误很有帮助 ;
编译构建 APK 安装包 , 需要将 Java 代码 , AIDL 文件 , Asset 资源 , Resources 资源 , SO 动态库 , 编译打包到最后的安装包中 ;
之前的博客 【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 ) 中 , 讲解过 AAPT2 资源编译工具 , 用于编译 Assets 和 Resources 资源 ;
二、Java 源码编译
Java 源代码编译 : 使用 javac 编译工具 , 编译成 .class 字节码文件 , 编译的过程中 , 就需要有目录来存储编译生成的临时文件 ,
javac 编译工具路径 : " D:\Program Files\Java\jdk1.8.0_221\bin\javac.exe " , 在 JDK 目录中 ;
编译后的 .class 字节码文件存放在 " app\build\intermediates\javac "目录下 ;
.class 字节码文件还需要使用 dx 工具 , 打包为 classes.dex 文件 ;
dx 工具的在 SDK 目录下 , " Y:\001_DevelopTools\002_Android_SDK\build-tools\30.0.3\dx.bat " ;
dx 工具将字节码打包成 classes.dex 文件 , 放在 " app\build\intermediates\dex\debug\mergeDexDebug\classes.dex " 路径中 ;
安卓 APK 安装包中的 classes.dex 文件就是这么编译生成的 ;
三、AIDL 源码编译
如果项目中使用了 AIDL 跨进程访问 , 编译时就需要编译 AIDL 文件 ;
编译结果输出到 " app\build\generated\aidl_source_output_dir " 目录中 ;
构建完整流程参考图 :
【Android Gradle】安卓应用构建流程 ( Java 源码编译 和 AIDL 文件编译 )相关推荐
- 查看java源码时出现class文件而不是java文件,可能是因为java的安装路径下没有src.zip文件而是javafx-src.zip文件
情况说明: 不是maven项目下的源码,就是普通java工程,比如查看System.arraycopy()源码,跳转的时是class文件,并且会提示Decompiled .class file, by ...
- windows 批处理把所有java源码导入一个txt文件中
首先在src下搜*.java,把搜到的文件全拷出来放在allsrc目录下, 然后在allsrc目录下建个run.bat,键入以下内容for %%i in (*.java) do type %%i&g ...
- 什么是java源码文件,什么是字节码文件,初程序的编译和运行
java源文件就是源代码文件,是指我们编写好的代码文件,即 当我们开始运行的时候系统会执行javac命令先把java源文件编译成字节码文件即: 这里科普一下java为什么会有字节码文件. 字节码产生的 ...
- java写脸萌_FaceLovely 本项目是一个仿安卓脸萌app应用的源码, 款非常有趣的拼脸软件,即使你不会画 android 259万源代码下载- www.pudn.com...
文件名称: FaceLovely下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 6940 KB 上传时间: 2016-05-25 下载次数: 0 详细说明:本项 ...
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )
文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...
- 【朝花夕拾】Android自定义View之(一)手把手教你看懂View绘制流程——向源码要答案
前言 原文:Android自定义View之(一)手把手教你看懂View绘制流程--向源码要答案 View作为整个app的颜值担当,在Android体系中占有重要的地位.深入理解Android View ...
- Android 8.1/9.0 MTK Camera源码分析之录像快门声音控制流程
前面已经针对拍照快门声音控制流程进行了分析,接下来分析一下录像快门声音的控制流程. Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程 这两篇文章其实都是相对于手机系统RO ...
- Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程
Android 8.1/9.0 MTK Camera源码分析之快门声音控制 在Android 8.1上mtk camera有控制快门声音的接口,但是并没有了控制录像快门声音的接口.之所以会有这个现象, ...
- 【附源码】计算机毕业设计Python安卓基于Android的多功能备忘录csj99(源码+程序+LW+调试部署)
[附源码]计算机毕业设计Python安卓基于Android的多功能备忘录csj99(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: P ...
最新文章
- 深度学习--TensorFlow(7)拟合(过拟合处理)(数据增强、提前停止训练、dropout、正则化、标签平滑)
- php-cgi占用cpu资源过高的解决方法
- shell下 使用心得
- EndNote使用技巧之一--参考文献的导入
- JQuery中淡出和淡入动画效果
- Spring简化Java开发_第1章—Spring之旅—简化Spring的java开发
- 前端实习生实习第一天
- 787. K 站中转内最便宜的航班
- Linux OOM killer(转)
- 安卓统一推送联盟成立!不卡顿的安卓系统终于来了!
- Excel怎样设置标题行,Excel工作表中标题行的处理
- 190822——喜欢
- 2016 NIPS众神降临,苹果破天荒要对外发布AI论文丨AI科技评论周刊
- 庆祝《征信业管理条例》颁布十周年
- java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码、数据库)
- 如何构建一套有效的量化系统
- Excel将一列数据分隔成多列
- python suds 获取webService封装的数据
- count(*) 和 count(1) 有什么区别?哪个性能最好?
- 嵌入式计算机系统与普通台式机的区别,嵌入式工控机主板和普通电脑主板有什么区别...
热门文章
- 动态链接库的编写与调用
- ubuntu16.04上安装valgrind
- C及C++中typedef的简单使用指南
- Mysql优化原则_小表驱动大表IN和EXISTS的合理利用
- Error: pgraster_wkb_reader: grayscale band type 10 unsupported
- shareSDK 微信分享的时候只能分享jpg格式的图片大于32k时为什么分享不出去?
- iOS开发——高级技术地图功能的实现
- TCP,IP,HTTP,SOCKET区别和联系
- jQuery 1.3 for Asp.Net、 CSLA.Net 3.6 for Windows 及 MOSS/WSS 一步一步从入门到精通三个系列的目录...
- SQL Azure(十) SQL Azure Data Sync数据同步功能(上)