Android:由于找不到Java类而崩溃

时间:2019-04-01 15:33:14

标签: android loading dex

我的目标是能够使我的Android TV Mi Box S(Oreo 8.1)正确地将Dolby Digital +(EAC3)声音转码为Dolby Digital(AC3),然后通过SPDIF将其输出到我的AVR。

Kodi 18.1应用程序可以使用此transcodindg,但其他应用程序或Android 8.1设置未建议使用。由于Kodi能够做到,因此我对Android堆栈进行了反向工程。我的结论是:-Android Oreo嵌入了任何必要的编解码器以及其他东西来进行此转码,但没有提出配置此设置的建议-Android Pie提出了所需的环绕声设置(在SPDIF上输出Dolby Digital)

所以我的目标是将Android TvSettings应用程序从Pie移植到Oreo

我首先尝试使用Android Studio生成TvSettings。我入侵了应用程序资源,但是当我知道必须生成platfom依赖项(例如SettingsLib.jar)时便停止了操作

我的第二次试用是生成整个Android平台。构建完成,启动TvSettings应用程序时,我可以在x86电视模拟BUT上部署TvSettings应用程序,我会收到此错误:

---------崩溃开始

  

2019-04-01 12:21:04.976 3987-3987 / com.android.tv.settings   E / AndroidRuntime:致命异常:main       流程:com.android.tv.settings,PID:3987       java.lang.RuntimeException:无法获取提供程序android.support.v4.content.FileProvider:   java.lang.ClassNotFoundException:找不到类   路径上的“ android.support.v4.content.FileProvider”:DexPathList [[zip   文件   “ /data/app/com.android.tv.settings-2DkaCncwGQ874WP-kx3G4Q==/base.apk"],nativeLibraryDirectories=[/data/app/com.android.tv.settings-2DkaCncwGQ874WP-kx3G4Q==/lib/ x86,   / system / lib,/ vendor / lib]]

我在Internet上搜索了此错误,看来它处理了multidex功能。该multidex功能已针对干净开发的Android应用程序进行了充分的文档记录,但对于从Android平台提取并与adb一起部署的应用程序也没有实际记录。

此问题与Java库加载有关。 我发现线程引用了Android multidex功能,但仅适用于使用Android Studio / Gradle构建的应用程序,而我的应用程序是使用Android平台构建的。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

您是否已在清单中包含fileProvider?

答案 1 :(得分:0)

在我的TvSettings应用程序部署期间似乎存在根本错误。这是它的日志:

E / dex2oat:dex文件头中的版本号无效。文件:base.apk

我读了几页,发现这一页非常有趣:https://source.android.com/devices/tech/dalvik/configure

因此,由于不同的优化方式,平台应用程序生成的文件格式与平台API之上生成的应用程序相同

我的想法是生成包括TvSettings应用程序在内的整个平台,并使用adb部署TvSettings。因此apk格式可能是错误的。

下一步是在TvSettings / Settings / Android.mk中添加以下标志:

LOCAL_DEX_PREOPT:=假