2013-12-13 12 views
10

Come includere un file esterno in "apk"?Qt 5.2 Inclusi file esterni in un pacchetto Android?

Esempio:

C'è "123.txt" nella directory principale dove esiste .pro file. Cosa dovrei aggiungere al file pro per mettere "123.txt" in apk.

Ho provato il DEPLOYMENT, DEPLOYMENTFOLDERS. Ma funzionano solo con Symbian e Windows CE.

risposta

9

Ci sono due modi per farlo, sia specificato ne "porting di Qt applicazione esistente" a Qt 5.1 Documentation For Android.

  1. li Bundle in un file QRC (funziona cross platform)
  2. aggiungerli alla "attività :" directory (Android specifica)

Per # 2:

Le "attività" Direc sarà creato quando costruirai il progetto. Ho trovato più facile usare la variabile qmake "INSTALLS" per copiare i file nella directory prima che venga impacchettata in un apk. Quanto segue proviene da un file qmake per un progetto che ho realizzato. Nota che per INSTALLS, il percorso alle risorse legge "/ assets", non "asset" come ti aspetteresti. (In realtà finisce in una sottodirectory dell'area di lavoro di Android build.)

Per accedere alla directory dal codice in Android, si utilizzano "risorse:". (Nell'esempio, /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 
+0

1. Ho provato (non è successo), ma poi ho appreso che Qt non consente l'utilizzo di database in bundle con file qrc anche in modalità di sola lettura. – user2400925

+0

2. Qt 5.2 non genera una directory "assets". Cosa dovrei fare? – user2400925

+0

Ho aggiornato la risposta con un esempio di come ho usato le risorse: directory. – jwernerny

1

specifico per User2400925

in Qt 5.1 che avevo usato per copiare il database dalla cartella Assets nella cartella principale dell'utente, se il file non esiste. Quale può essere usato dall'app.

si può passare attraverso this link

4

È possibile utilizzare il sistema Qt risorse. Per impostazione predefinita, tutte le applicazioni Qt possono accedere ai contenuti di un file qrc utilizzando il prefisso ": /" o il prefisso dello schema URL, "qrc:".

L'altro approccio consiste nel distribuire le risorse nella directory delle risorse del pacchetto. È l'opzione migliore se si desidera ottenere una migliore interoperabilità con le API di Android. È possibile accedere a tutte le risorse nella directory utilizzando il prefisso "assets:". A differenza di qrc, questo approccio non è una soluzione multipiattaforma.

Quando si crea il progetto, viene creata una cartella denominata "risorse" nello Build-Directory/android-build/. Dopo aver copiato i file nella directory di risorse, è possibile aggiungere questi al vostro pro:

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

I file in attività sono di sola lettura. Così si dovrebbe prima copiarlo in un'altra posizione, se si vuole cambiarli:

QFile dfile("assets:/MyFile1"); 
if (dfile.exists()) 
{ 
    dfile.copy("./MyFile1"); 
    QFile::setPermissions("./MyFile1",QFile::WriteOwner | QFile::ReadOwner); 
} 
1

più Un modo semplice per farlo:

1) Aggiungere questa stringa nella vostra.pro

ANDROID_PACKAGE_SOURCE_DIR = $$ PWD/android-sources

2) Creare Android fonti cartella nella cartella proj. Metti tutto ciò che ti serve in android-sources/assets /. Puoi anche inserire altri file, come AndroidManifest.xml o android-sources/res/drawable/icon.png che vuoi copiare e aggiornare nel pacchetto di destinazione.

-1

più Un modo semplice per farlo:

  1. Aggiungi questa stringa nella vostra .pro

ANDROID_PACKAGE_SOURCE_DIR = $$ PWD/android-sources

  1. Crea la cartella Android-sources nella cartella proj. Metti tutto ciò che ti serve in android-sources/assets /. Puoi anche inserire altri file, come AndroidManifest.xml o android-sources/res/drawable/icon.png che vuoi copiare e aggiornare nel pacchetto di destinazione.
+0

Questa è solo copia/incolla dalla risposta di art926 che era pubblicato più di un anno fa. – RamenChef