2011-12-27 31 views
19

Ho scaricato il codice sorgente di Android PDF Viewer e sto cercando di compilarlo in Eclipse. Invece di fare scherzi con Cygwin e ricompilare le librerie native C, il mio amico ha detto che posso solo estrarre i file pre-compilati .so dal APK qui:Come importare una libreria nativa (file .so) in Eclipse?

http://code.google.com/p/apv/downloads/detail?name=apv-0.3.1dev13.apk&can=2&q=

Esattamente come faccio a importare questi file libpdfview2.so nel progetto Eclipse?

Aggiornato: Eclipse dà il seguente errore e non verrà eseguito:

Archivio per libreria richiesta: 'lib/armeabi/libpdfview2.so' nel progetto 'APV' non possono essere letti o non è un file ZIP valida

risposta

21

vedere come impostare le cose nel progetto di esempio: http://code.google.com/p/apv/source/browse/#hg%2Fpdfview

Questo tutorial NDK può anche essere utile in termini di aiutare voi a capire come funzionano le cose con l'NDK: http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/

Le basi sono questo:

  1. I file .so di libreria in genere vanno nella sottocartella PROJECT_ROOT_DIR/librerie. Inoltre, generalmente si trovano in ulteriori sottocartelle che descrivono la loro architettura (ad esempio project_root_dir/libs/armeabi/libpdfview2.so).

  2. Per utilizzare la libreria in un'attività si aggiunge una libreria di caricamento statica all'attività come illustrato di seguito:

    statico
    {
    System.loadLibrary ("pdfview2"); // Avviso mancanza prefisso lib
    }

  3. Quindi si definiscono le funzioni native che si stanno importando. Puoi riconoscere queste funzioni grazie alla parola chiave nativa. Guardate nel file qui sotto per vedere quali funzioni che importano nel campione:

http://code.google.com/p/apv/source/browse/pdfview/src/cx/hell/android/pdfview/PDF.java?r=560343d2dad904c5c925b6cadf97b90430fd25f4

Ecco alcuni esempi:

private native int parseBytes(byte[] bytes); 
private native int parseFile(String fileName); 
private native int parseFileDescriptor(FileDescriptor fd); 
+0

Questo è quello che sto cercando di fare ma non ho potuto compilare quel progetto dal codice sorgente C. Sono riuscito a estrarre i file della libreria compilati dall'APK, ma non so come includerli nel progetto Android in Eclipse. –

+0

Hai seguito le istruzioni di costruzione qui? http://code.google.com/p/apv/source/browse/pdfview/jni/build-instructions.txt – Theo

+0

Sì, non ha funzionato. Ho mollato. Queste istruzioni servono a costruire libpdfview2.so, e ho il file estratto dall'APK, quindi non ho bisogno di aiuto per costruire la sorgente C. Ho bisogno di aiuto per importarlo/collegarlo all'app per Android. –

5

Come accennato another Stack Overflow thread about this topic spegnimento "aggiornare automaticamente le risorse e attività folder on build "e" Forza errore quando i jar esterni contengono librerie native "sotto Aiuto finestra/Preferenze/Android/Build. Almeno mi ha aiutato nel mio caso!

E non dimenticare di inserire il file in "lib s/armeabi" per renderlo disponibile in fase di esecuzione.

Spero che questo abbia aiutato gli altri, anche se era troppo tardi per Li_W.

Problemi correlati