java - Qt on Android 运行时错误 : Invalid package identifier when getting bag for resource number 0x00000000

标签 java android c++ qt

将我的 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/

    相关文章:

    java - 为什么 String.replace 不起作用?

    java - 有没有办法找出CMD中命令的图像路径?

    android - 在覆盖DefaultUncaughtExceptionHandler的同时,我还能在市场上获得错误报告吗?

    java - apache 通用编解码器 jar 的运行时错误 NoClassDefFoundError

    java - 调用 Rest 身份验证 Controller 时出现 EOFException

    php - 使用 android volley 和 php 将波斯语值发布到 mysql

    android - 单击列表项时没有任何反应

    c++ - 如何让 SonarQube 与 SVN 服务器 v1.6.11 一起工作?

    c++ - gmock SetArgReferee : Set a non-copyable non-moveable object

    c++ - 使用 CUDA 实现、python (pycuda) 或 C++ 处理图像?