【问题标题】:Qt on Android Runtime error: Invalid package identifier when getting bag for resource number 0x00000000Qt on Android Runtime 错误:获取资源号 0x00000000 的包时包标识符无效
【发布时间】:2020-04-08 09:57:24
【问题描述】:

在将我的 Qt 版本从 5.13.1 更新到 5.14.2 后,我遇到了这个奇怪的错误,我不确定是什么原因(我还将我的 gradle 版本从 4.1.0 更新到了 5.5.1)。该错误给出以下输出消息:

W ResourceType:获取包时的包标识符无效 资源编号 0x00000000 E Qt : 无法创建主要活动 E Qt : android.content.res.Resources$NotFoundException: 字符串数组 资源 ID #0x0 E Qt : at android.content.res.Resources.getStringArray(Resources.java:525) E Qt : 在 org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:423) E Qt : 在 org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:166) E Qt : 在 org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) E Qt : 在 org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273)

我已经看到之前已经讨论过这个问题,但是给出的解决方案与 Qt 无关,并且需要修改 Java 代码(我认为这根本不是问题,因为我没有改变那)。

【问题讨论】:

    标签: java android c++ qt


    【解决方案1】:

    Qt 5.14 需要与 Qt 5.13 或更早版本不同的 AndroidManifest.xml 文件。我关注了Qt recommendations 并最终进行了以下更改以使其再次工作:

    1. AndroidManifest.xml 中,将属性android:extractNativeLibs="true" 添加到<application …> 元素中。

    2. 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" … />
      
    3. AndroidManifest.xml 中,在其他&lt;meta-data …/&gt; 行中插入以下行:

      <meta-data android:name="android.app.load_local_libs_resource_id" android:resource="@array/load_local_libs"/>
      
    4. 在您的 Android 配置目录的 res/values/libs.xml 中,将以下行插入到 &lt;resources&gt; … &lt;/resources&gt; 元素中:

      <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。)

    来源。源自@daljit97 在本页another answer 中提到的Qt examples diff。这仍然会导致部署时出现错误“AndroidManifest.xml:80: error: resource array/load_local_libs (aka com.example.qtws:array/load_local_libs) not found.”,但this comment 提示我找到了解决该问题的正确方向。

    【讨论】:

      【解决方案2】:

      好的,事实证明 Qt 5.14 需要更新版本的项目的 AndroidManifest.xml 文件。这里提到了Qt for Android known issues。可以在以下link找到所需的更改。

      更新清单文件后,我的项目运行正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-29
        • 1970-01-01
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多