Warum wird libgnustl_shared.so nicht von meinem APK kopiert?

9

Ich habe ein Android-Projekt mit einer libs Ordnerstruktur wie folgt:

%Vor%

foo und bar sind Bibliotheken von Drittanbietern, mystuff ist meine eigene Bibliothek von einem separaten Android JNI-Projekt, das gnustl_shared benötigt, das aus demselben JNI-Projekt stammt.

Wenn ich mein Projekt in Eclipse erstelle, kann ich den Inhalt der generierten APK mit unzip -l anzeigen und es zeigt tatsächlich, dass alle diese Bibliotheksdateien enthalten sind.

Nach der Installation der APK enthält der Ordner /data/data/com.myproject/lib jedoch keine libgnustl_shared.so , obwohl die anderen Bibliotheken vorhanden sind.

Dies führt unweigerlich zu folgendem Fehler:

%Vor%

Als eine Gesundheitsüberprüfung habe ich adb push ./libs/armeabi/libgnustl_shared.so /data/data/com.myproject/lib ausgeführt und sicher genug, die Anwendung startet wie erwartet.

Ich sehe im Buildprotokoll oder in der Eclipse-Konsole nichts, was darauf hindeutet, dass beim Erstellen oder Installieren der App Probleme aufgetreten sind.

  • Was könnte verhindern, dass libgnustl_shared.so mit meiner Anwendung installiert wird?
  • Wo kann ich erfahren, was passiert, wenn ein APK installiert wird?

Bitte lassen Sie mich in einem Kommentar wissen, ob es spezifische Informationen gibt, die mir helfen können.

    
namuol 22.04.2013, 12:38
quelle

3 Antworten

2
___ qstnhdr ___ Warum wird libgnustl_shared.so nicht von meinem APK kopiert? ___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ tag123androidndk ___ Das Android Native Development Kit (NDK) ist ein begleitendes Tool zum Android-SDK, mit dem Sie performance-kritische Teile Ihrer Apps in nativem Code erstellen oder vorhandene Bibliotheken in C / C ++ an Android portieren können. Es bietet Header und Bibliotheken, mit denen Sie Aktivitäten erstellen, Benutzereingaben verarbeiten, Hardwaresensoren verwenden, auf Anwendungsressourcen zugreifen und vieles mehr, wenn Sie in C / C ++ programmieren. ___ qstntxt ___

Ich habe ein Android-Projekt mit einer %code% Ordnerstruktur wie folgt:

%Vor%

%code% und %code% sind Bibliotheken von Drittanbietern, %code% ist meine eigene Bibliothek von einem separaten Android JNI-Projekt, das %code% benötigt, das aus demselben JNI-Projekt stammt.

Wenn ich mein Projekt in Eclipse erstelle, kann ich den Inhalt der generierten APK mit %code% anzeigen und es zeigt tatsächlich, dass alle diese Bibliotheksdateien enthalten sind.

Nach der Installation der APK enthält der Ordner %code% jedoch keine %code% , obwohl die anderen Bibliotheken vorhanden sind.

Dies führt unweigerlich zu folgendem Fehler:

%Vor%

Als eine Gesundheitsüberprüfung habe ich %code% ausgeführt und sicher genug, die Anwendung startet wie erwartet.

Ich sehe im Buildprotokoll oder in der Eclipse-Konsole nichts, was darauf hindeutet, dass beim Erstellen oder Installieren der App Probleme aufgetreten sind.

  • Was könnte verhindern, dass %code% mit meiner Anwendung installiert wird?
  • Wo kann ich erfahren, was passiert, wenn ein APK installiert wird?

Bitte lassen Sie mich in einem Kommentar wissen, ob es spezifische Informationen gibt, die mir helfen können.

    
___ answer16300643 ___

Ich denke, dass libgnustl_shared.so unter / armeabi-v7a nicht unter / armeabi

benötigt wird

Versuchen Sie, libgnustl_shared.so nach / armeabi-v7a

zu kopieren     
___ tag123jni ___ Das Java Native Interface (JNI) bietet JVM-Implementierungen die Möglichkeit, systemeigenen Code auszuführen, und nativen Code kann Java-Code ausführen (indem neue JVM-Instanzen erstellt werden). Die gebräuchlichsten Zielsprachen für JNI sind C und C ++, für die zumindest die Sun / Oracle JDK-Implementierungen Hilfsbefehle (javap, javah) bereitstellen. ___ answer16323199 ___

Sehen Sie sich die Antwort hier an: So verknüpfen Sie eine beliebige Bibliothek in ndk Anwendung Das Problem liegt höchstwahrscheinlich in Ihrer Android.mk-Datei. Sie sollten eine Linie wie die unten haben:

%Vor%

Wenn nicht, dann schließen Sie Ihre gemeinsame Bibliothek nicht ein.

    
___
jcm 24.11.2013 17:33
quelle
0

Ich denke, dass libgnustl_shared.so unter / armeabi-v7a nicht unter / armeabi

benötigt wird

Versuchen Sie, libgnustl_shared.so nach / armeabi-v7a

zu kopieren     
caopeng 30.04.2013 13:04
quelle
0

Sehen Sie sich die Antwort hier an: So verknüpfen Sie eine beliebige Bibliothek in ndk Anwendung Das Problem liegt höchstwahrscheinlich in Ihrer Android.mk-Datei. Sie sollten eine Linie wie die unten haben:

%Vor%

Wenn nicht, dann schließen Sie Ihre gemeinsame Bibliothek nicht ein.

    
SuperDave 01.05.2013 17:29
quelle

Tags und Links