2016-12-19 3 views
0

Je suis un peu un noob quand il s'agit de développement Android, et je suis habitué au développement Windows natif dans Visual Studio, et je tiens à porter sur une application de test basée sur la console stdout de Windows à Android. J'ai un projet APK Java qui fait référence à un projet d'objet partagé, qui lui-même fait référence à un autre objet partagé. Ce référencement objet partagé imbriqué provoque apparemment un accident avant que je puisse entrer dans un de mon code natif, comme ceci:Visual Studio 2015 natif Android C++ imbriqué objet partagé référence provoque des accidents

Exception lancée: java.lang.UnsatisfiedLinkError

pile d'appel:

> android.app.NativeActivity.onCreate(android.os.Bundle savedInstanceState) Line 182 Java 
    android.app.Activity.performCreate(android.os.Bundle icicle) Line 6679 Java 
    android.app.Instrumentation.callActivityOnCreate(android.app.Activity activity, android.os.Bundle icicle) Line 1118 Java 
    android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord r, android.content.Intent customIntent) Line 2618 Java 
    android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord r, android.content.Intent customIntent, java.lang.String reason) Line 2726 Java 
    android.app.ActivityThread.-wrap12(android.app.ActivityThread , android.app.ActivityThread$ActivityClientRecord r, android.content.Intent customIntent, java.lang.String reason) Java 
    android.app.ActivityThread$H.handleMessage(android.os.Message msg) Line 1477 Java 
    android.os.Handler.dispatchMessage(android.os.Message msg) Line 102 Java 
    android.os.Looper.loop Line 154 Java 
    android.app.ActivityThread.main(java.lang.String[] args) Line 6119 Java 
    java.lang.reflect.Method.invoke Java 
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() Line 886 Java 
    com.android.internal.os.ZygoteInit.main(java.lang.String[] argv) Line 776 Java 

Je avons mis en place une fonction ANativeActivity_onCreate dans ma section maternelle comme ceci:

void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize) 
{ 
    printf("hello?"); 
} 

Le crash se produit en Java avant que cette fonction native peut entrer éd. Cela dit, la fonction sera très bien entrée si je supprime sa référence de dépendance sur l'autre projet objet partagé dans la solution, mais bien sûr, le problème est que j'ai besoin d'utiliser ce projet d'objet partagé si je veux l'avoir quelque chose de plus utile que cela.

Je n'ai ajouté aucun code Java dans le projet APK, ce n'est donc qu'un modèle à part entière de Visual Studio.

+0

Je vous recommande fortement de vous attaquer à cela en tant qu'application Android, puis d'utiliser le langage C natif dans l'application Java, plutôt que de créer une application Android en mode natif la première fois. –

Répondre

0

Nous vous conseillons de vous familiariser avec Android avant d'essayer de créer des applications natives. Au moins, vous vous familiariserez avec le SDK, les frameworks, les états Android, les transitions et les événements de cycle de vie. Cela vous aidera également à déboguer les problèmes, que ce soit dans le SDK ou dans votre code natif.

Avez-vous fait un standard C#/C++/C vers Java? C'est un meilleur endroit pour démarrer qu'Android si vous ne l'avez pas encore fait, au moins vous comprendrez comment les connexions de méthode natives et la liaison sont effectuées. C'est quelque chose que je ne peux pas aider, mais je vous recommande fortement de créer un Hello World de base avec l'application de consignation de la console sous Android. Il vous faudra quelques heures pour faire et répondre à beaucoup de questions.