将额外文件添加到Android应用程序

时间:2014-05-12 22:38:53

标签: android c++ qt qt-creator qt5.2

我正在使用qt 5.2,我一直试图在安装时弄清楚如何在我的应用程序中添加额外的文件。我希望能够将adb shell然后cd用于data/data/org.qtproject.example.myProjectPath/。我希望能够在某个地方找到该文件。我已经发布了一个关于此的问题,但无法找到答案。有些人做了回复,提到了资产,但qt 5.2没有创建资产文件。我还被告知尝试按照

的方式行事
deployment.files += program
deployment.path = /assets
INSTALLS += deployment

以及

documentation.path = /usr/local/program/doc
documentation.files = docs/*
INSTALLS += documentation

这些都不能开始工作。我也被this link给了,但它似乎不是特定于Android的。

3 个答案:

答案 0 :(得分:5)

您可以使用Qt资源系统。默认情况下,所有Qt应用程序都可以使用":/"来访问qrc文件的内容。前缀或URL方案前缀," qrc:"。

另一种方法是将资源部署到软件包的资产目录中。如果您想要与Android API实现更好的互操作性,这是最佳选择。您可以使用" assets:"访问目录中的所有资源。字首。与qrc不同,此方法不是跨平台解决方案。

在构建项目时,会出现一个名为" assets"的文件夹。在Build-Directory/android-build/中创建。在资产目录中复制文件后,您可以将这些文件添加到您的专业人员:

deployment.files += MyFile1
deployment.files += MyFile2
...
deployment.path = /assets
INSTALLS += deployment

答案 1 :(得分:1)

我不熟悉qt,但是你将代码所在的计算机上的文件(如音乐或艺术或文本文件)添加到名为assets的目录中。

典型的目录结构可能包含libs,res,src和assets的目录。构建apk的过程将自动获取此文件夹及其中的所有文件并将其包含在apk中。你不能使用shell来查看这些文件。

要访问这些文件,可以通过调用getAssets()在java活动类中执行。如何从您的活动类 打开文件 的示例可能是....

InputStream is = getAssets().open("yourfile.mp3");

http://developer.android.com/reference/android/content/res/AssetManager.html

希望这能指出你正确的方向。

答案 2 :(得分:1)

适合我的解决方案(Qt 5.9.2):

  • 如果您还没有将以下行添加到.pro文件中,例如自定义清单文件(文件夹名称与pkg_src无关):

    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/pkg_src
    
  • 相对于.pro文件创建文件夹“pkg_src/assets

  • 手动或例如将您需要的文件复制到此文件夹使用QMAKE_POST_LINK命令在应用程序构建后复制文件。

这不是100%理想,因为QMAKE_POST_LINK仅在有内容需要时执行,但至少足以满足我的需求。