如何將外部文件包含到'apk'中?Qt 5.2將外部文件包含到Android包中?
實施例:
有「123.txt」在pro文件存在主目錄。我應該添加到pro文件中以將「123.txt」放入apk中。
我試過了部署,部署FOLDERS。但是他們只能用於Symbian和Windows CE。
如何將外部文件包含到'apk'中?Qt 5.2將外部文件包含到Android包中?
實施例:
有「123.txt」在pro文件存在主目錄。我應該添加到pro文件中以將「123.txt」放入apk中。
我試過了部署,部署FOLDERS。但是他們只能用於Symbian和Windows CE。
有兩種方法可以做到這一點,就Qt 5.1 Documentation For Android.
#2:
的 「資產」 直銷tory將在您構建項目時創建。我發現最簡單的方法是使用「INSTALLS」qmake變量在打包到apk文件之前將文件複製到目錄中。以下是來自我製作的項目的qmake文件。請注意,對於INSTALLS,資產的路徑讀取「/ assets」,而不是您所期望的「assets」。 (它實際上結束於Android構建工作區的子目錄中。)
要從android中的代碼訪問目錄,請使用「assets:」。 (在該示例中,/assets/Samples
==>assets:/Samples
。)
# - setup the correct location to install to and load from
android {
# android platform
# From: http://community.kde.org/Necessitas/Assets
SAMPLES_INSTALL_PATH=/assets/Samples
} else {
# other platforms
SAMPLES_INSTALL_PATH=$$OUT_PWD/Samples
}
# - setup the 'make install' step
samples.path = $$SAMPLES_INSTALL_PATH
samples.files += $$SAMPLE_FILES
samples.depends += FORCE
INSTALLS += samples
可以使用Qt的資源系統。默認情況下,所有Qt應用程序都可以使用「:/」前綴或URL方案前綴「qrc:」來訪問qrc文件的內容。
另一種方法是將資源部署到軟件包的資產目錄中。如果您希望與Android API實現更好的互操作性,那麼這是最好的選擇。您可以使用「assets:」前綴訪問目錄中的所有資源。與qrc不同,這種方法不是跨平臺的解決方案。
當你建立你的項目時,在Build-Directory/android-build/
中創建一個名爲「assets」的文件夾。在資產目錄中複製文件後,可以將這些文件添加到您的專業版中:
deployment.files += MyFile1
deployment.files += MyFile2
...
deployment.path = /assets
INSTALLS += deployment
資產中的文件是隻讀的。所以,如果你想改變他們,你應該首先將其複製到其他位置:
QFile dfile("assets:/MyFile1");
if (dfile.exists())
{
dfile.copy("./MyFile1");
QFile::setPermissions("./MyFile1",QFile::WriteOwner | QFile::ReadOwner);
}
一種更簡單的方式來做到這一點:
1)添加此字符串到你。親
ANDROID_PACKAGE_SOURCE_DIR = $$ PWD/Android的源
2)創建Android的源在凸出文件夾中。把你需要的東西放到android-sources/assets /中。您還可以在其中放入任何其他文件,例如AndroidManifest.xml或android-sources/res/drawable/icon.png,以便將其複製並更新到目標軟件包中。
一種更簡單的方式來做到這一點:
ANDROID_PACKAGE_SOURCE_DIR = $$ PWD/Android的源
這只是從art926的答案中複製/粘貼的超過一年前發佈。 – RamenChef
1.我想它(沒有成功),但後來我才知道,Qt的不允許使用,即使在只讀模式QRC文件中捆綁的數據庫。 – user2400925
2. Qt 5.2不會生成「assets」目錄。我該怎麼辦? – user2400925
我已經用我如何使用assets:目錄的例子更新了答案。 – jwernerny