一、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命令
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
git init 在当前目录新建一个Git代码库
git status 显示有变更的文件
git diff 显示暂存区和工作区的差异
git add 添加指定文件到暂存区
git commit 提交暂存区到仓库区
git clone 下载一个项目和它的整个代码历史
git branch 列出所有本地分支
git checkout 切换到指定分支,并更新工作区
3、git两种工作流
fork/clone
clone
四、Proguard
1、proguard是什么
Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种现象,我们可以使用 Java 混淆器对 Java 字节码进行混淆。
混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读。同时混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失使程序变得更加难以理解。
混淆器的作用不仅仅是保护代码,它也有精简编译后程序大小的作用。由于以上介绍的缩短变量和函数名以及丢失部分信息的原因, 编译后 jar 文件体积大约能减少25% ,
2、ProGuard技术功能
压缩 shrink :侦测并移除代码中无用的类、字段、方法和属性.
优化 optimize :对字节码进行优化,移除无用的指令.
混淆 obfuscator :使用a,b,c,d这样简短而无意义的名称,对类,字段和方法进行重命名.
预检测 preverifier :在Java平台上对处理后的代码进行校验.
3、proguard工作原理
EntryPoint
网友评论