我的目标是能够使我的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平台构建的。
我该怎么办?
答案 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:=假