将我的 Qt 版本从 5.13.1 更新到 5.14.2 后,我遇到了这个奇怪的错误,我不确定是什么原因(我还将我的 gradle 版本从 4.1.0 更新到了 5.5.1)。该错误给出以下输出消息:
W ResourceType: Invalid package identifier when getting bag for resource number 0x00000000 E Qt : Can't create main activity E Qt : android.content.res.Resources$NotFoundException: String array resource ID #0x0 E Qt : at android.content.res.Resources.getStringArray(Resources.java:525) E Qt : at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:423) E Qt : at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:166) E Qt : at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) E Qt : at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273)
我已经看到之前已经讨论过这个问题,但是给出的解决方案与 Qt 无关,并且需要修改 Java 代码(我认为这根本不是问题,因为我没有改变它)。
最佳答案
Qt 5.14 需要不同的 AndroidManifest.xml
文件比 Qt 5.13 或更早版本。我关注了Qt recommendations并最终进行了以下更改以使其再次工作:
AndroidManifest.xml
, 添加属性 android:extractNativeLibs="true"
进入<application …>
元素。AndroidManifest.xml
,删除以下三行(显示缩写):<meta-data android:name="android.app.bundled_in_lib_resource_id" … />
<meta-data android:name="android.app.bundled_in_assets_resource_id" … />
<meta-data android:name="android.app.load_local_libs" … />
AndroidManifest.xml
, 在其他 <meta-data …/>
中插入以下行行:<meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/>
res/values/libs.xml
在您的 Android 配置目录中,将以下行插入 <resources> … </resources>
元素:<array name="load_local_libs">
<!-- %%INSERT_LOCAL_LIBS%% -->
</array>
并行使用 Qt 5.13。 有关此问题的更多详细信息,请参阅问题 QTBUG-80444。 .从那里开始,不幸的是,所需的更改似乎与 Qt 5.13 或更早版本不向后兼容,这意味着您需要一个版本的
AndroidManifest.xml
使用 Qt 5.13 为 Android 构建以及使用 Qt 5.14 构建的另一个版本。 (当然,除非你不想回头看 Qt 5.13。)来源。 源自 Qt examples diff @daljit97 在 another answer 中提到在本页面。这仍然会导致部署时出现错误“
AndroidManifest.xml:80: error: resource array/load_local_libs (aka com.example.qtws:array/load_local_libs) not found.
”,但是 this comment提示我正确的方向来解决这个问题。
关于java - Qt on Android 运行时错误 : Invalid package identifier when getting bag for resource number 0x00000000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61097966/