我正在构建一个应用程序,它启动一个使用位于的内部 android .jar 文件的服务
/system/framework
问题是每当我尝试从这个 .jar 文件访问一个类时,我都会得到一个 classDefNotFound 异常。
注意:我可以使用 .jar 文件的stub版本编译项目,但我不知道如何在应用程序(服务)类路径中包含内部库,以便摆脱这个异常。
(我没有使用日食)
添加到 AndroidManifest.xml
<uses-library android:name="com.android.library" />
来自 Android 文档:http: //developer.android.com/guide/topics/manifest/uses-library-element.html
该元素告诉系统将库的代码包含在包的类加载器中。
我解决了如下问题:
/system/framework 中的文件是 .jar 和 .odex,.jar 是空文件,代码存在于 .odex 文件中。
我使用smali将我需要的 .odex 文件转换为 .dex 文件(您首先需要将 .odex 转换为 .smali 文件,然后再转换为 .dex 文件)
然后我使用dex2jar将 dex 文件转换为 jar 文件
之后,我将生成的 jar 文件包含在应用程序的 apk 中,以便能够使用它们。
我写这篇文章是为了帮助任何需要这样做的人(这是几天工作的结论!)