Programação com OpenGL/Instalação/Android NDK: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 276:
Para instalar o GLM, você precisa extrair a ultima versão em em <code>/usr/src/glm</code> (de mode que o <code>/usr/src/glm/glm.hpp</code> exista).
Ela é apenas uma biblioteca-cabeçalho não é necessário uma compilação separada.
 
== FreeType ==
 
If you need FreeType (a library to render fonts), you'll need to cross-compile it.
Note: The Android system uses FreeType but internally it doesn't expose it to native apps.
 
First, prepare the cross-compiler from the NDK:
<source lang="bash">
/usr/src/android-ndk-r7c/build/tools/make-standalone-toolchain.sh --platform=android-9 \
--install-dir=/usr/src/ndk-standalone-9
PATH=/usr/src/ndk-standalone-9/bin:$PATH
</source>
 
Then use it to cross-compile freetype:
<source lang="bash">
tar xf freetype-2.4.10.tar.bz2
cd freetype-2.4.10/
./configure --host=arm-linux-androideabi --prefix=/freetype --without-zlib
make -j4
make install DESTDIR=$(pwd)
</source>
 
(Alternatively you can install it in --prefix=/usr/src/ndk-standalone-9/sysroot/usr if you don't plan to use the NDK build system.)
 
<code>--without-zlib</code> uses the internal copy of zlib inside freetype rather than one independently recompiled for Android. Otherwise you'd get errors such as:
./obj/local/armeabi/libfreetype.a(ftgzip.o): In function `ft_gzip_file_init':
ftgzip.c:(.text+0x3c4): undefined reference to `inflateInit2_'
./obj/local/armeabi/libfreetype.a(ftgzip.o): In function `ft_gzip_file_done':
ftgzip.c:(.text+0x43c): undefined reference to `inflateEnd'
./obj/local/armeabi/libfreetype.a(ftgzip.o): In function `ft_gzip_file_reset':
ftgzip.c:(.text+0x514): undefined reference to `inflateReset'
./obj/local/armeabi/libfreetype.a(ftgzip.o): In function `ft_gzip_file_fill_output':
ftgzip.c:(.text+0x780): undefined reference to `inflate'
 
Then write an <code>Android.mk</code> file in the new <code>freetype/</code> directory:
<source lang="make">
LOCAL_PATH:= $(call my-dir)
 
include $(CLEAR_VARS)
 
LOCAL_MODULE := freetype
LOCAL_SRC_FILES := lib/libfreetype.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include $(LOCAL_PATH)/include/freetype2
 
include $(PREBUILT_STATIC_LIBRARY)
</source>
 
See <code>docs/STANDALONE-TOOLCHAIN.html</code> and <code>docs/PREBUILTS.html</code> in the NDK for details.
The <code>CLEAR_VARS</code> bit is not documented, but is necessary to avoid mixed-up paths; it is used in the <code>native_app_glue</code> NDK module.
Para usar o FreeType em seus projetos edite o arquivo <code>Android.mk</code>:
<source lang="make">
...
LOCAL_STATIC_LIBRARIES := ... freetype
...
$(call import-module,freetype)
</source>
 
Para isto você especificara a pasta aonde o freetype esta, usando a variável <code>NDK_MODULE_PATH</code>.
Para instancia-lo, você precisa copiar o <code>freetype</code> na pasta do seu projeto e compilar usando o:
<source lang="bash">
ndk-build NDK_MODULE_PATH=. ...
</source>
 
Nosso empacotador já esta definido em <code>NDK_MODULE_PATH=$$NDK_MODULE_PATH:.</code>
 
Nota: Antes na versão 2.4.10, você precisava usar o <code>CFLAGS="-std=gnu99"</code> nas linhas do <code>./configure<code>, veja nesta [http://groups.google.com/group/android-ndk/browse_thread/thread/bc50ad2d4885d816 discussão].
Isto foi oficialmente comunicado e corrigido [https://savannah.nongnu.org/bugs/?35644 no canal do FreeType]
 
Veja também uma introdução sobre a compilação do Gnash para o Android:
* http://wiki.gnashdev.org/Building_for_Android
* http://wiki.gnashdev.org/AndroidDependencies#freetype
 
 
== Referências ==