1

我正在构建一个应用程序,它启动一个使用位于的内部 android .jar 文件的服务

/system/framework

问题是每当我尝试从这个 .jar 文件访问一个类时,我都会得到一个 classDefNotFound 异常。

注意:我可以使用 .jar 文件的stub版本编译项目,但我不知道如何在应用程序(服务)类路径中包含内部库,以便摆脱这个异常。

(我没有使用日食)

4

2 回答 2

1

添加到 AndroidManifest.xml

<uses-library android:name="com.android.library" />

来自 Android 文档:http: //developer.android.com/guide/topics/manifest/uses-library-element.html

该元素告诉系统将库的代码包含在包的类加载器中。

于 2013-08-07T14:14:04.730 回答
1

我解决了如下问题:

/system/framework 中的文件是 .jar 和 .odex,.jar 是空文件,代码存在于 .odex 文件中。

我使用smali将我需要的 .odex 文件转换为 .dex 文件(您首先需要将 .odex 转换为 .smali 文件,然后再转换为 .dex 文件)

然后我使用dex2jar将 dex 文件转换为 jar 文件

之后,我将生成的 jar 文件包含在应用程序的 apk 中,以便能够使用它们。

我写这篇文章是为了帮助任何需要这样做的人(这是几天工作的结论!)

于 2013-08-08T22:33:50.040 回答