Мы рады сообщить, что новый выпуск CrystaX NDK 10.2.0 готов к использованию!
Мы работаем над проектом согласно обещаниям, и в этом выпуске мы исправили много ошибок и внесли большое
количество улучшений. Ниже вы можете ознакомиться с основными фичами этой версии.
Objective-C v2
Добавлена поддержка Objective-C v2
runtime (т.е. совместимого с Objective-C runtime от Apple) и начальных Cocoa-совместимых фреймворков
(Foundation and CoreFoundation).
Мы хотим сказать большое спасибо сообществам GNUstep и Cocotron -
без этих классных проектов добавление Objective-C v2 в CrystaX NDK было бы значительно более сложным.
Слава богу (и RMS), мы живем в окружении огромного количества
open source проектов, так или иначе помогающих друг другу, и общая эффективность в мире
FOSS от этого только возрастает.
Это только первый шаг по дороге в тысячу миль, но мы со всей серьезностью намерены продолжать работать над
полноценной поддержкой Objective-C для Android, и приглашаем всех заинтересованных участвовать в этом.
Мы будем признательны за любую помощь от заинтересованных лиц/организаций, что поможет нам превратить Objective-C в
полноценного игрока на арене разработки под Android.
Здесь
вы можете ознакомиться с простым примером, как можно начать использовать Objective-C v2 под Android.
Boost 1.58.0
В этот релиз мы включили две версии библиотек Boost - 1.57.0 и 1.58.0.
Просто используйте Boost для программирования под Android и забудьте о проблемах сборки!
Напоминаем, что у нас запущено регулярное тестирование библиотек Boost, так что любой желающий может
увидеть текущие результаты тестирования конкретных библиотек на Android:
master и
develop.
Clang 3.6
Добавлен новый набор инструментов (toolchain) на основе clang-3.6, с переносом всех исправлений, что мы делали в clang-3.4 и clang-3.5.
Теперь этот toolchain будет использоваться по умолчанию, в случае указания "NDK_TOOLCHAIN_VERSION := clang"
в вашем Application.mk.
Также мы обновили LLVM libc++ до ветки release_36 из основного репозитория LLVM, так что теперь это опять наиболее свежая версия.
PNG, JPEG и TIFF
Добавлены готовые к использованию
libpng-1.6.17,
libjpeg-9a и
libtiff-4.0.4beta,
так что больше нет нужды собирать их самостоятельно; просто укажите их в вашем Android.mk:
Android.mk
include $(CLEAR_VARS)
LOCAL_MODULE := test-static
LOCAL_SRC_FILES := $(SRCFILES)
LOCAL_STATIC_LIBRARIES := \
libpng_static \
libjpeg_static \
libtiff_static
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := test-shared
LOCAL_SRC_FILES := $(SRCFILES)
LOCAL_SHARED_LIBRARIES := \
libpng_shared \
libjpeg_shared \
libtiff_shared
include $(BUILD_SHARED_LIBRARY)
$(call import-module,libpng/1.6.17)
$(call import-module,libjpeg/9a)
$(call import-module,libtiff/4.0.4beta)
Эти библиотеки также включаются в генерируемый standalone toolchain, так что теперь легче использовать
его для сборки ориентированных на autotools проектов:
Пример
$ /opt/android/crystax-ndk-10.2.0/build/tools/make-standalone-toolchain.sh \
--toolchain=arm-linux-androideabi-4.9 --platform=android-9 \
--install-dir=$HOME/android-arm-toolchain
Auto-config: --arch=arm
Copying prebuilt binaries...
Copying sysroot headers and libraries...
Copying crystax headers and libraries...
Copying libpng headers and libraries...
Copying libjpeg headers and libraries...
Copying libtiff headers and libraries...
Copying libobjc headers and libraries...
Copying c++ runtime headers and libraries...
Copying files to: /Users/crystax/android-arm-toolchain
Cleaning up...
Done.
$ ls -FAl $HOME/android-arm-toolchain/arm-linux-androideabi/include
total 340
-rw-r--r-- 1 crystax wheel 1757 Jun 19 09:04 jconfig.h
-rw-r--r-- 1 crystax wheel 14580 Jun 19 09:04 jerror.h
-rw-r--r-- 1 crystax wheel 14925 Jun 19 09:04 jmorecfg.h
-rw-r--r-- 1 crystax wheel 49281 Jun 19 09:04 jpeglib.h
drwxr-xr-x 5 crystax wheel 170 Jun 19 03:40 libpng16/
drwxr-xr-x 12 crystax wheel 408 Jun 19 02:10 objc/
-rw-r--r-- 1 crystax wheel 146763 Jun 19 09:04 png.h
-rw-r--r-- 1 crystax wheel 22841 Jun 19 09:04 pngconf.h
-rw-r--r-- 1 crystax wheel 7256 Jun 19 09:04 pnglibconf.h
-rw-r--r-- 1 crystax wheel 35987 Jun 19 09:04 tiff.h
-rw-r--r-- 1 crystax wheel 3442 Jun 19 09:04 tiffconf.h
-rw-r--r-- 1 crystax wheel 23003 Jun 19 09:04 tiffio.h
-rw-r--r-- 1 crystax wheel 1702 Jun 19 09:04 tiffio.hxx
-rw-r--r-- 1 crystax wheel 414 Jun 19 09:04 tiffvers.h
-rw-r--r-- 1 crystax wheel 2923 Jun 19 09:04 unwind.h
$ ls -FAl $HOME/android-arm-toolchain/arm-linux-androideabi/lib/armv7-a
total 30684
drwxr-xr-x 20 crystax wheel 680 Jun 23 13:50 hard/
-rw-r--r-- 1 crystax wheel 411780 Jun 19 09:04 libatomic.a
-rw-r--r-- 1 crystax wheel 6053520 Jun 19 09:03 libcrystax.a
-rwxr-xr-x 1 crystax wheel 3296588 Jun 19 09:03 libcrystax.so*
-rwxr-xr-x 1 crystax wheel 289192 Jun 19 09:04 libgnuobjc_shared.so*
-rwxr-xr-x 1 crystax wheel 5951764 Jun 19 09:03 libgnustl_shared.so*
-rw-r--r-- 1 crystax wheel 515224 Jun 19 09:04 libgomp.a
-rw-r--r-- 1 crystax wheel 153 Jun 19 09:04 libgomp.spec
-rw-r--r-- 1 crystax wheel 288912 Jun 19 09:04 libjpeg.a
-rwxr-xr-x 1 crystax wheel 285780 Jun 19 09:04 libjpeg.so*
-rw-r--r-- 1 crystax wheel 375692 Jun 19 09:04 libobjc.a
-rw-r--r-- 1 crystax wheel 248606 Jun 19 09:04 libpng.a
-rwxr-xr-x 1 crystax wheel 246116 Jun 19 09:04 libpng.so*
-rw-r--r-- 1 crystax staff 11190794 Jun 19 09:03 libstdc++.a
-rw-r--r-- 1 crystax wheel 1171236 Jun 19 09:03 libsupc++.a
-rw-r--r-- 1 crystax wheel 546726 Jun 19 09:04 libtiff.a
-rwxr-xr-x 1 crystax wheel 485408 Jun 19 09:04 libtiff.so*
-rw-r--r-- 1 crystax wheel 14502 Jun 19 09:04 libtiffxx.a
-rwxr-xr-x 1 crystax wheel 12724 Jun 19 09:04 libtiffxx.so*
drwxr-xr-x 21 crystax wheel 714 Jun 23 13:50 thumb/
$ cat test.c
#include <stdio.h>
#include <png.h>
#include <jpeglib.h>
#include <tiffio.h>
void test_libjpeg()
{
printf("libjpeg version: %d.%d\n\n",
JPEG_LIB_VERSION_MAJOR,
JPEG_LIB_VERSION_MINOR);
}
void test_libpng()
{
printf("libpng version: (%lu):%s\n",
(unsigned long)png_access_version_number(),
png_get_header_version(NULL));
}
void test_libtiff()
{
printf("TIFF version: %s\n", TIFFGetVersion());
}
int main()
{
test_libpng();
test_libjpeg();
test_libtiff();
return 0;
}
$ $HOME/android-arm-toolchain/bin/arm-linux-androideabi-gcc \
-march=armv7-a -mthumb -mfloat-abi=softfp -mfpu=vfpv3-d16 \
-fPIE -pie -o test test.c \
-Wl,-Bstatic -lpng -ltiff -ljpeg -Wl,-Bdynamic -lz
$ adb push $HOME/android-arm-toolchain/arm-linux-androideabi/lib/armv7-a/libcrystax.so /data/local/tmp
6133 KB/s (3296588 bytes in 0.524s)
$ adb push test /data/local/tmp
6713 KB/s (243976 bytes in 0.035s)
$ adb shell chmod 0700 /data/local/tmp/test
$ adb shell 'cd /data/local/tmp && LD_LIBRARY_PATH=/data/local/tmp ./test'
libpng version: (10617): libpng version 1.6.17 - March 26, 2015
libjpeg version: 9.1
TIFF version: LIBTIFF, Version 4.0.4beta
Copyright (c) 1988-1996 Sam Leffler
Copyright (c) 1991-1996 Silicon Graphics, Inc.
Другое
А также большое количество исправлений и мелких улучшений, в сумме ведущих к более стандартному и
предсказуемому поведению CrystaX NDK.
Здесь вы можете ознакомиться с полным списком закрытых в этой версии тикетов.
Скачать
Здесь вы можете скачать CrystaX NDK 10.2.0.
Если же вы работаете под OS X и используете Homebrew, просто наберите в командной строке:
brew install crystax-ndk