文章目录

  • 一、安卓应用构建简介
  • 二、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 文件编译 )相关推荐

  1. 查看java源码时出现class文件而不是java文件,可能是因为java的安装路径下没有src.zip文件而是javafx-src.zip文件

    情况说明: 不是maven项目下的源码,就是普通java工程,比如查看System.arraycopy()源码,跳转的时是class文件,并且会提示Decompiled .class file, by ...

  2. windows 批处理把所有java源码导入一个txt文件中

    首先在src下搜*.java,把搜到的文件全拷出来放在allsrc目录下, 然后在allsrc目录下建个run.bat,键入以下内容for %%i in (*.java)  do type %%i&g ...

  3. 什么是java源码文件,什么是字节码文件,初程序的编译和运行

    java源文件就是源代码文件,是指我们编写好的代码文件,即 当我们开始运行的时候系统会执行javac命令先把java源文件编译成字节码文件即: 这里科普一下java为什么会有字节码文件. 字节码产生的 ...

  4. java写脸萌_FaceLovely 本项目是一个仿安卓脸萌app应用的源码, 款非常有趣的拼脸软件,即使你不会画 android 259万源代码下载- www.pudn.com...

    文件名称: FaceLovely下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 6940 KB 上传时间: 2016-05-25 下载次数: 0 详细说明:本项 ...

  5. 【Android 内存优化】Android 原生 API 图片压缩原理 ( 图片质量压缩方法 | 查找 Java 源码中的 native 方法对应的 C++ 源码 )

    文章目录 一. 图片质量压缩方法 二. 查找对应的 Native 方法源码 三. 分析 Bitmap.cpp 中动态注册 Native 方法 在博客 [Android 内存优化]图片文件压缩 ( An ...

  6. 【朝花夕拾】Android自定义View之(一)手把手教你看懂View绘制流程——向源码要答案

    前言 原文:Android自定义View之(一)手把手教你看懂View绘制流程--向源码要答案 View作为整个app的颜值担当,在Android体系中占有重要的地位.深入理解Android View ...

  7. Android 8.1/9.0 MTK Camera源码分析之录像快门声音控制流程

    前面已经针对拍照快门声音控制流程进行了分析,接下来分析一下录像快门声音的控制流程. Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程 这两篇文章其实都是相对于手机系统RO ...

  8. Android 8.1/9.0 MTK Camera源码分析之快门声音控制流程

    Android 8.1/9.0 MTK Camera源码分析之快门声音控制 在Android 8.1上mtk camera有控制快门声音的接口,但是并没有了控制录像快门声音的接口.之所以会有这个现象, ...

  9. 【附源码】计算机毕业设计Python安卓基于Android的多功能备忘录csj99(源码+程序+LW+调试部署)

    [附源码]计算机毕业设计Python安卓基于Android的多功能备忘录csj99(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: P ...

最新文章

  1. 深度学习--TensorFlow(7)拟合(过拟合处理)(数据增强、提前停止训练、dropout、正则化、标签平滑)
  2. php-cgi占用cpu资源过高的解决方法
  3. shell下 使用心得
  4. EndNote使用技巧之一--参考文献的导入
  5. JQuery中淡出和淡入动画效果
  6. Spring简化Java开发_第1章—Spring之旅—简化Spring的java开发
  7. 前端实习生实习第一天
  8. 787. K 站中转内最便宜的航班
  9. Linux OOM killer(转)
  10. 安卓统一推送联盟成立!不卡顿的安卓系统终于来了!
  11. Excel怎样设置标题行,Excel工作表中标题行的处理
  12. 190822——喜欢
  13. 2016 NIPS众神降临,苹果破天荒要对外发布AI论文丨AI科技评论周刊
  14. 庆祝《征信业管理条例》颁布十周年
  15. java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码、数据库)
  16. 如何构建一套有效的量化系统
  17. Excel将一列数据分隔成多列
  18. python suds 获取webService封装的数据
  19. count(*) 和 count(1) 有什么区别?哪个性能最好?
  20. 嵌入式计算机系统与普通台式机的区别,嵌入式工控机主板和普通电脑主板有什么区别...

热门文章

  1. 动态链接库的编写与调用
  2. ubuntu16.04上安装valgrind
  3. C及C++中typedef的简单使用指南
  4. Mysql优化原则_小表驱动大表IN和EXISTS的合理利用
  5. Error: pgraster_wkb_reader: grayscale band type 10 unsupported
  6. shareSDK 微信分享的时候只能分享jpg格式的图片大于32k时为什么分享不出去?
  7. iOS开发——高级技术地图功能的实现
  8. TCP,IP,HTTP,SOCKET区别和联系
  9. jQuery 1.3 for Asp.Net、 CSLA.Net 3.6 for Windows 及 MOSS/WSS 一步一步从入门到精通三个系列的目录...
  10. SQL Azure(十) SQL Azure Data Sync数据同步功能(上)