Android项目构建相关面试问题

移动开发 简书

一、Android构建流程

android apk构建详细流程图

打包步骤

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常用命令清单

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是什么

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

简书稿源:简书 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 移动开发 » Android项目构建相关面试问题

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录