Come preparo i miei file .ppp per il ndk per costruirli?

Al momento abbiamo un software di elaborazione delle immagini scritto in c ++ che viene utilizzato dalla nostra applicazione IOS. Sto cercando di integrare questo codice di elaborazione delle immagini nel progetto android che ho creato utilizzando l'Android NDK.

Ho il mio progetto android e il setup sdk tutto e pronto per andare. Ho anche il setup di ndk e pronto per andare.

  • I frammenti causano attività grassa?
  • Android 6.0 RuntimeException: Imansible connettersi al servizio della camera
  • Ottenere la dimensione della window SENZA barre di titolo / notifica
  • Facile modo per hide la barra di sistema su Android ICS
  • Come get tutti i contatti android ma senza quelli che sono sulla SIM
  • Ottenere tutti i MotionEvents con WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
  • Stavo seguendo attraverso questo tutorial (che è impressionante) e sono rimasto stompato per la parte che ha definito il codice per native.c perché aveva un nome di function come questo,

    void Java_com_mamlambo_sample_ndk1_AndroidNDK1SampleActivity_helloLog(JNIEnv * env, jobject this, jstring logThis) 

    Mi sembra quasi che devo passare attraverso tutte le mie funzioni esistenti c ++ e modificare il codice in modo che la NDK lo riconosca.

    Quindi qui sono le mie domande,

    1. Devo modificare il codice c ++ esistente per poter funzionare con il constructor ndk? E se è così, quali sono le cose che devo cambiare nel mio codice per questo lavoro?
    2. C'è un modo per creare un file Android.mk un'intera directory? Ho un sacco di file e non ho voluto disporre di tutti i singoli per poterli build.

  • Nella fatturazione App gestito e stato non gestito per il prodotto
  • Come distriggersre le date future nel selezionatore delle date di Android
  • Come get la posizione grossolana utilizzando Wifi o GSM o GPS, qualunque sia disponibile?
  • Invio di intenti multipli da una singola attività a un'altra attività
  • Invia notifica push da server a dispositivo Android in Java
  • Vista Android-Video a Fullscreen
  • One Solution collect form web for “Come preparo i miei file .ppp per il ndk per costruirli?”

    1) Dovresti essere in grado di build senza alterazioni, ma dovrai scrivere alcune di quelle funzioni Wrapper JNI per chiamarla da Java. Speriamo che tu abbia un piccolo numero di classi di livello superiore e dovrai solo avvolgerle. Ad esempio è quello che ho per un gioco che sto scrivendo lentamente:

     // android.cpp #include "game.h" #include <jni.h> namespace { Game* toGame(jlong gamePtr) { return reinterpret_cast<Game*>(gamePtr); } } extern "C" { jlong Java_com_rarepebble_game3_Game_create(JNIEnv* env, jobject jobj) { Game* g = new Game(); return reinterpret_cast<jlong>(g); } void Java_com_rarepebble_game3_Game_destroy(JNIEnv* env, jobject jobj, jlong gamePtr) { delete toGame(gamePtr); } void Java_com_rarepebble_game3_Game_update(JNIEnv* env, jobject jobj, jlong gamePtr, jboolean isTouching, jfloat touchX, jfloat touchY) { toGame(gamePtr)->update(isTouching, touchX, touchY); } void Java_com_rarepebble_game3_Game_render(JNIEnv* env, jobject jobj, jlong gamePtr) { toGame(gamePtr)->render(); } // ... and a few others. Only one class, though. } 

    Dal lato Java mi permette di dichiarare quelle funzioni nella mia class com.rarepebble.game3.Game e chiamarli nei momentjs appropriati nel ciclo di vita dell'applicazione. (Nota come il pacchetto Java, i nomi delle classi e delle funzioni corrispondono ai nomi delle funzioni in C + +):

     //Game.java package com.rarepebble.game3; // (imports) public class Game { static { System.loadLibrary("game3lib"); } // These are the functions you defined in C++ private native long create(); private native void destroy(long gamePtr); private native void update(long gamePtr, boolean isTouched, float x, float y); private native void render(long gamePtr); private long gamePtr = 0; Game() { gamePtr = create(); } @Override protected void finalize() throws Throwable { if (gamePtr != 0) { destroy(gamePtr); } super.finalize(); } // etc... } 

    2) È ansible utilizzare

    LOCAL_SRC_FILES: = $ (wildcard * .cpp) $ (sottocartella wildcard / *. Cpp) #etc …

    Modifica: come richiesto, la mia intestazione di class C ++, "game.h":

     // game.h #ifndef GAME_INCLUDED #define GAME_INCLUDED // Various game and standard library includes. // *NO* JNI or Android includes. namespace game { class Game { public: Game(); ~Game(); void update(bool isTouching, float touchX, float touchY); void render(); // other funcs... private: // etc... }; } #endif //def GAME_INCLUDED 

    Allo stesso modo, "game.cpp" non include nessuna roba JNI.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.