在Mac环境下配置dx终端指令
1、打开终端,进入HOME目录
cd $HOME
2、更新.bash_profile文件
touch .bash_profile
3、打开.bash_profile文件
open -e .bash_profile
4、加入dx文件所在路径,android sdk自带dx
export PATH=${PATH}:~/Library/Android/sdk/build-tools/29.0.3
5、保存并关闭.bash_profile文件
6、重启终端
7、验证配置结果
dx --version
8、结果
dx version 1.16
使用终端命令在Android中执行dex文件
0、创建Java源文件
public class HelloWorld {
public static void main(String[] args) {
print("Hello World!");
}
public static void print(String msg) {
System.out.println(msg);
}
}
1、编译Java源文件生成class文件
javac HelloWorld.java
2、编译class文件生成dex文件
dx --dex --output=HelloWorld.dex HelloWorld.class
使用Hex Fiend打开可以查看dex文件:
HelloWorld-dex.png
3、进入手机系统
adb shell
创建dex存储目录
generic_x86:/ $ mkdir /data/local/tmp/dalvik-cache
generic_x86:/ $ export ANDROID_DATA=/data/local/tmp
generic_x86:/ $ exit
4、将dex文件放进手机的dex存储目录
adb push HelloWorld.dex /data/local/tmp/dalvik-cache/
5、执行dex文件
adb shell dalvikvm -cp /data/local/tmp/dalvik-cache/HelloWorld.dex HelloWorld
6、输出结果
Hello World!
dex文件格式概览
dex文件格式主要组成:
名称
格式
说明
header
header_item
标头
string_ids
string_id_item[]
字符串标识符列表
type_ids
type_id_item[]
类型标识符列表
proto_ids
proto_id_item[]
方法原型标识符列表
field_ids
field_id_item[]
字段标识符列表
method_ids
method_id_item[]
方法标识符列表
class_defs
class_def_item[]
类定义列表
call_site_ids
call_site_id_item[]
调用点标识符列表
method_handles
method_handle_item[]
方法句柄列表
data
ubyte[]
数据区
link_data
ubyte[]
静态链接文件中使用的数据
dex文件格式实例图解析:
欢迎关注Android技术堆栈,专注于Android技术学习的公众号,致力于提高Android开发者们的专业技能!
qrcode_for_gh_11a43c85bc22_430.jpg