apk文件结构
assest文件
存在需打包到安卓程序的静态资源文件
res文件
程序的资源文件(每一个文件都会有资源ID)
lib文件
当前APP所用到的so文件(利用C/C++去实现的
META-INF
签名文件
MAINFEST.MF
记录哈希算法值
RSA
开发者私钥的签名文件 SF
AndroidManifest.xml
配置文件
classes.dex
可执行文件
resources.arsc
资源索引表 用来描述具有ID值的资源配置信息
apk打包流程
apk安装流程
解压到 data/app 中 解析apk的资源文件 解析AndroidManifest.xml文件 同时在data/data创建应用数据目录 在dalvik-cache中保存dex 将Manifest中的四大组件解析 发送广播
虚拟机
java虚拟机 java字节码 基于栈结构
Java虚拟机 - > Java字节码
JNI_GetDefaultJavaVMInitArgs 获取虚拟机初始化参数
JNI_GreatJavaVM 创建虚拟机实例
JNI_GetCreatedJavaVMs 获取创建的实例
Dalvik虚拟机
jit机制 /system/bin/dexopt
compiler
Art虚拟机
aot机制 /system/bin/dex2oat
系统启动 /sytem/app /data/app /sytem/framework
修改apk的名称和图标
AndroidManifest文件打开之后 “:
package 包名
permission 权限
第一个application 是程序入口
icon 图标
label 名字
name 入口界面
provider 发布者签名
activity 活动界面
搜索在original-签名文件夹 搜/icon.png /是精准搜索
修改包名实现分身
在AndroidManifest.xml中头部找到package在字符串尾部添加一个数组(如6)
然后搜索<provider在所有provider的字符串后加入数字一个
随后保存 编译 即可实现双开
去广告
删除user-permission中的NETWORK_STATE 和WIFI_STATE
只留下android.permission.INTERNET
Activity中看到 MAIN 和 LAUNCHER在一起 就断定 这个Activity就是程序入口活动
打开cmd 输入
adb devices (可以多几次)
adb shell dumpsys activity top 找到进入时活动名
然后找到广告的活动名
然后将主界面活动末尾替换为LAUNCHER
删除广告活动的 <intent-filter>
JAVA学习
JAVA变量和数据类型
变量:为了保存数据(全局变量也叫成员变量)
基本数据类型
整数型byte short int long
浮点型float double
字符型char
布尔型boolean
修饰符
访问修饰符
default 默认 在同一包内可见