Comment construire un protocole de tampon par Android NDK
Je veux construit une version native de Google protocole de tampons de bibliothèque.
Comment dois-je procéder?
Juste une suggestion. D'abord le construire en Java, et puis si vous avez besoin de la poursuite de l'optimisation déplacer vers le NDK. Au moins en Java, vous obtiendrez le protocole de base vers le bas.
Avez-vous essayé de tout simplement en utilisant l'implémentation C++ fourni par google?
Voici ma réponse: stackoverflow.com/a/44773137/529442
Avez-vous essayé de tout simplement en utilisant l'implémentation C++ fourni par google?
Voici ma réponse: stackoverflow.com/a/44773137/529442
OriginalL'auteur papersnake | 2011-08-22
Vous devez vous connecter pour publier un commentaire.
- Je Utiliser cette Android.mk et mettre en
quand je fais les modifications que vous suggérez, la lib compile mais j'ai cette erreur quand j'essaie d'appeler ma méthode qui dépend de la protobuf libs: Causée par: java.lang.UnsatisfiedLinkError: Impossible de charger la bibliothèque: reloc_library[1306]: 37 ne peut pas localiser "strtof'... à l'aide de "nm" je remarque que le strtof méthode est répertorié, mais a un "U" figurant à côté d'elle. Est-il une bibliothèque, je ne suis pas y compris ce qui est nécessaire pour protobuf de travail?
strtof doit vivre dans la bibliothèque stl. libprotobuf utilise stlport; le fichier build est décrit dans la réponse liens comme une bibliothèque partagée plutôt que statique, de sorte que vous devriez être à chargement libstlport de la Java. Vous pouvez trouver un exemple qui fonctionne dans un projet que je suis en train de travailler sur ici: github.com/IDKJava/the-elements/blob/master/TheElements-dev/src/...
Comment avez-vous de ce build? je reçois une tonne d'erreurs. je suis en train de décoller de la balise 2.6.1. j'ai des erreurs comme
/src/google/protobuf/stubs/hash.h:172:55: error: expected '{' before '<' token
. pourquoi ne l'ordinaire C++ compiler, mais pour android il ne marche pas?bon, j'ai finalement réussi à le construire. utilisez ceci à la place: android.googlesource.com/platform/external/protobuf vous aurez à modifient fortement le ANdroid.mk fichier pour le faire fonctionner.
OriginalL'auteur papersnake
Android.mk mentionné ci-dessus fonctionne très bien, merci beaucoup.
Je tiens à vous décrire toutes les étapes pour la construction d'protobuf pour android.
Configurer les sources pour android.
Utilisez le script suivant (got ici: http://habrahabr.ru/post/119693/):
Prêts à l'emploi=/Users/utilisateur/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3
PLATE-forme=/Users/utilisateur/android-ndk-r7b/plates-formes/android-3/arch-bras/
export CC="/Users/utilisateur/android-ndk-r7b/toolchains/arm-linux-androideabi - 4.4.3/prédéfinis/darwin-x86/bin/arm-linux-androideabi-gcc"
export CFLAGS="-fPIC-DANDROID -nostdlib"
exportation ANDROID_ROOT="/Users/utilisateur/android-ndk-r7b"
exportation LDFLAGS="-Wl,-rpath-lien=$ANDROID_ROOT/plates-formes/android-3/arch-bras/usr/lib/-L$ANDROID_ROOT/plates-formes/android-3/arch-bras/usr/lib/"
exportation CPPFLAGS="-I$ANDROID_ROOT/plates-formes/android-3/arch-bras/usr/include/"
exportation LIBS="-lc "
./configure --host=arm-eabi
Supprimer les lignes suivantes à partir mentionné ci-dessus Android.mk fichier:
Il est nécessaire à la construction lite version de bibliothèque.
Malheureusement complet de la version de la lib fonctionne à partir d'Android 2.3.
J'ai testé la version lite pour Android 1.6, 2.1, 2.3.
Vous semblez avoir oublié de le mettre sysroot à CPPFLAGS:
export SYSROOT=$NDK_ROOT/platforms/android-9/arch-arm
export CPPFLAGS="--sysroot=$SYSROOT"
./configure options
OriginalL'auteur Evgeny Berkovich