我是靠谱客的博主 勤恳八宝粥,最近开发中收集的这篇文章主要介绍【Android】Android项目构建深度、高质量学习1. AS目录结构2. android项目构建3. Git版本空值4. gradle5. Proguard,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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构建流程:

  1. 把java文件编译成class字节码文件
  2. 把字节码文件,和依赖的第三方jar文件,打包成classes.dex文件(安卓可执行的文件)
  3. 打包资源文件
  4. 把dex文件和resource文件,合并成未签名的包
  5. 通过签名,打包成完整的包
    在这里插入图片描述

更详细的步骤:

  1. 通过aapt,将包中的资源文件,打包成R.java文件
  2. 通过aidl,将aidl文件转换成java接口
  3. 通过Java compiler,将R.java、java源代码、java接口转换成class字节码文件
  4. 通过dex工具,将字节码文件和第三方库打包成dex文件(android虚拟机可执行)
  5. 通过apkbuilder工具,将dex文件,和资源文件,打包成apk文件(此时未签名)
  6. 通过jarsigner工具,对apk进行签名,得到签名后的apk文件
  7. 通过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文件:

  1. app下的build.gradle:可以覆盖顶层的build.gradle中定义的任何属性
  2. 整个工程下的build.gradle:主要包含buildscript和allprojects两个代码块,定义了整个工程依赖的代码库和android插件
  3. 整个工程下的settings.gradle:包含所有的模块,定义了这些模块在构建范围内

5. Proguard

  1. Proguard是什么?
    ProGuard工具是用于压缩、优化、混淆我们的代码,主要作用是可以移出代码中的无用类,字段,方法和属性,同时可以混淆。
    可以让打包后的apk体积更小,也更难被别人反编译。

  2. Proguard技术的功能
    压缩:检查并移出代码中无用的类
    优化:对字节码优化,移出无用的字节码命令,移出无用的字段和方法
    混淆:将我们定义的有意义名称,换成无意义名称,就算被反编译,也很难读懂
    预检测:在java平台对处理后的代码,再次进行检测

  3. 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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部