Android项目构建相关面试问题

一、Android构建流程

android apk构建详细流程图


Android项目构建相关面试问题_第1张图片

打包步骤

1. 通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样) 。

2. 处理.aidl文件,生成对应的Java接口文件。

3. 通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件。

4. 通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex。

5. 通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk。

6. 通过Jarsigner工具,对上面的apk进行debug或release签名。

对apk文件进行签名。APK需要签名才能在设备上进行安装很多时候我们在逆向改完后,会因为没有签名文件导致最后的apk无法正常使用,又细分为本地验证和服务器验证。

7. 通过zipalign工具,将签名后的apk进行对齐处理。


二、Jarsigner集成构建



三、GIt使用

参考了解:

1、Git容易混淆的两个概念

工作区

gitignore文件

下面我们看看常用的规则:

1)/mtk/过滤整个文件夹

2)*.zip过滤所有.zip文件

3)/mtk/do.c过滤某个具体文件

2、一些常用的git命令

Git常用命令清单

Android项目构建相关面试问题_第2张图片

Workspace:工作区

Index / Stage:暂存区

Repository:仓库区(或本地仓库)

Remote:远程仓库


git init     在当前目录新建一个Git代码库

git status  显示有变更的文件

git diff  显示暂存区和工作区的差异

git add    添加指定文件到暂存区

git commit  提交暂存区到仓库区

git clone  下载一个项目和它的整个代码历史

git branch   列出所有本地分支

git checkout   切换到指定分支,并更新工作区

更多git命令参考

3、git两种工作流

fork/clone

clone


深入理解学习Git工作流


四、Proguard

1、proguard是什么

Android项目构建相关面试问题_第3张图片

Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种现象,我们可以使用 Java 混淆器对 Java 字节码进行混淆。

混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。

混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的缩短变量和函数名以及丢失部分信息的原因, 编译后 jar 文件体积大约能减少25% ,


Android混淆打包经验总结

android混淆傻瓜式教程,直接拿去用

android那些事--混淆语法

2、ProGuard技术功能

压缩 shrink :侦测并移除代码中无用的类、字段、方法和属性.

优化 optimize :对字节码进行优化,移除无用的指令.

混淆 obfuscator :使用a,b,c,d这样简短而无意义的名称,对类,字段和方法进行重命名.

预检测 preverifier :在Java平台上对处理后的代码进行校验.


3、proguard工作原理


EntryPoint

你可能感兴趣的:(Android项目构建相关面试问题)