概述
1. AS目录结构
首先左上切换到Project目录下
.idea :系统自动生成的关于AS的配置目录(版权,jar包等)
gradle:Gradle目录(项目构建工具)
app:AS创建工程中的一个Module
External Libraries:依赖文件(版本号,SDK等)
app中:
build://构建目录,系统自动生成的编译目录
libs://依赖包存放目录
src://源码,资源目录
androidTest://系统自动生成的用于测试的目录
main://主目录
java://Java代码目录
res://资源文件
drawable: //存放各种位图文件(png,jpg等)
layout://App布局文件
values://储存一些引用文件(可以定义尺寸,字符串,样式,颜色等等)
AndroidManifest.xml://App基本信息(Android配置文件)
.gitgnore: //项目空间的同步忽略文件
build.gradle://Module的Gradle编译文件
2. android项目构建
2.1 Android构建流程
整个APP构建流程:
- 把java文件编译成class字节码文件
- 把字节码文件,和依赖的第三方jar文件,打包成classes.dex文件(安卓可执行的文件)
- 打包资源文件
- 把dex文件和resource文件,合并成未签名的包
- 通过签名,打包成完整的包
更详细的步骤:
- 通过aapt,将包中的资源文件,打包成R.java文件
- 通过aidl,将aidl文件转换成java接口
- 通过Java compiler,将R.java、java源代码、java接口转换成class字节码文件
- 通过dex工具,将字节码文件和第三方库打包成dex文件(android虚拟机可执行)
- 通过apkbuilder工具,将dex文件,和资源文件,打包成apk文件(此时未签名)
- 通过jarsigner工具,对apk进行签名,得到签名后的apk文件
- 通过zipalign工具,对apk瘦身,减少内存开销
2.2 jenkins持续集成构建
有待继续研究
https://www.liaoxuefeng.com/article/1083282007018592
https://www.cnblogs.com/along21/p/9724036.html
3. Git版本空值
3.1 git常用命令
git init
git status
git diff 文件名 展现这次和上次的对比
git add 放到暂存区
git commit -m "xxx" 放到代码区,往master分支存放
git clone git地址
git branch 查看当前分支
git checkout develop(或者其他名字的分支) 相当于拉出一个新的分支,在这个分支上工作
3.2 git主要工作流
方式1:
Fork Clone
方式2:
跳过Fork,直接Clone,缺少代码管理机制
一般大型项目开发采用方式1。
4. gradle
新项目创建出来,会有3个gradle文件:
- app下的build.gradle:可以覆盖顶层的build.gradle中定义的任何属性
- 整个工程下的build.gradle:主要包含buildscript和allprojects两个代码块,定义了整个工程依赖的代码库和android插件
- 整个工程下的settings.gradle:包含所有的模块,定义了这些模块在构建范围内
5. Proguard
-
Proguard是什么?
ProGuard工具是用于压缩、优化、混淆我们的代码,主要作用是可以移出代码中的无用类,字段,方法和属性,同时可以混淆。
可以让打包后的apk体积更小,也更难被别人反编译。 -
Proguard技术的功能
压缩:检查并移出代码中无用的类
优化:对字节码优化,移出无用的字节码命令,移出无用的字段和方法
混淆:将我们定义的有意义名称,换成无意义名称,就算被反编译,也很难读懂
预检测:在java平台对处理后的代码,再次进行检测 -
Proguard工作原理
EntryPoint:被标记为EntryPoint的类和方法,不会被混淆和丢弃
Proguard只会对非EntryPoint的类进行处理
为什么需要混淆?
java是一种跨平台的解释性语言,java的源代码会被编译成字节码,存放在.class文件中。由于跨平台的需要,在字节码中包括了很多源代码的信息,如变量名和方法名,并且通过名称来访问变量和方法,这些符号有很多语意信息其实是无用的,而且特别容易被反编译成java源代码,为了防止这种现象,就要通过Proguard对java的字节码进行混淆。
混淆就是对发布出去的程序,进行组织和处理。处理前后的代码,有相同的功能,但是处理后的代码不容易被反编译,即使被成功反编译,也很难读懂代码。
最后
以上就是勤恳八宝粥为你收集整理的【Android】Android项目构建深度、高质量学习1. AS目录结构2. android项目构建3. Git版本空值4. gradle5. Proguard的全部内容,希望文章能够帮你解决【Android】Android项目构建深度、高质量学习1. AS目录结构2. android项目构建3. Git版本空值4. gradle5. Proguard所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复