用dx生成dex时遇到class name does not match path

Posted QKSword

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用dx生成dex时遇到class name does not match path相关的知识,希望对你有一定的参考价值。

 

前言


用dx生成dex时遇到class name (Hello) does not match path这个问题还弄了挺久,这里就简单的记录一下。

 

步骤


  • 首先是dx工具是在android的SDK里面的,在SDK\\build-tools下可以找到dx.bat

  •  然后为了避免版本的问题,我们把java文件放到dx.dat的目录下,在当前目录打开dos然后输入命令生成class文件,这里会生成警告但是可以不管。 

    javac -source 1.6 -target 1.6 D:\\Android\\sdkme\\build-tools\\25.0.1\\Hello.java

 

  • 生成了class后就可以用dx.bat生成dex文件,这里可以看到当我的class文件是绝对路径的时候就会出错,但是很多人用的都是绝对路径才可以,然后我们回看到生成class时的警告:未设置引导类路径,所以我们生成dex时不能使用绝对路径

   .\\dx.bat --dex --output=Hello.dex .\\Hello.class

 

总结


如果我们使用javac -source 1.6 -target 1.6 D:\\Android\\sdkme\\build-tools\\25.0.1\\Hello.java生成class文件并且有警告未设置引导类路径时,生成dex时使用class的相对路径

 

如果我们是用Javac Hello.java生成的class文件,用dx.dat时就要用绝对路径来生成dex文件

 

以上是关于用dx生成dex时遇到class name does not match path的主要内容,如果未能解决你的问题,请参考以下文章

dex文件格式一

C++学习(四二四)dex文件结构

命令行生成编译Android工程

odex文件格式

android 打包流程

【理论知识】Dex文件结构分析