This project has been on hold since 2016.
All the data on this site is still available (and will stay available) but not actual anymore.
CrystaX NDK 10.3.0 已发布!
2015.12.14 06:18

我们很高兴的宣布 CrystaX NDK 10.3.0 已发布!

这次发布的重大更新有:

  • 更新GCC和LLVM/clang工具链
  • Objective-C v2支持的重大优化
  • 初步支持 Android 平台 Python (2.7 和 3.5)

另外,我们修复大量缺陷并增加若干优化改进。详见下文。

更新GCC和LLVM/clang工具链

在该版本中,我们提供了最新的基于gcc-5.3llvm-3.7 的工具链。 考虑到兼容性,旧的gcc-4.9llvm-3.6工具链依然保留,但是预计会在下一个版本移除。

查看版本
$ $NDK/toolchains/arm-linux-androideabi-5/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --version
arm-linux-androideabi-gcc (GCC) 5.3 20151204
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ $NDK/toolchains/llvm-3.7/prebuilt/linux-x86_64/bin/clang -target armv7-none-linux-androideabi --version
clang version 3.7
Target: armv7-none-linux-android
Thread model: posix

Objective-C v2优化

我们对 Objective-C v2 runtime 进行了大量优化,使得所有 Objective-C v2 特性均可用,例如自动引用计数, Objective-C 字面量,等等。同时在该版本中,我们还添加支持了 CoreData, CoreText, CoreGraphics 和 CoreVideo frameworks。

我们创建了一个小工程 v2同时开发 iOS 和 Android。

请注意! 所有 Objective-C v2 特性仅支持 LLVM/clang 工具链构建。如果您使用 ndk-build,最简单的用法是添加如下内容到您的 Application.mk:

Application.mk
# Application.mk
NDK_TOOLCHAIN_VERSION := clang
# Or this one, if you want to be explicit regarding version:
#NDK_TOOLCHAIN_VERSION := clang3.7

Python for Android

我们提供了预编译的 python-2.7python-3.5 二进制文件(可执行文件,库和头文件),支持所有 Android ABI 。 与 CrystaX NDK 所有其他预编译库相同,Python 的二进制文件使用 官方源包编译,未经任何修改。这是我们的一贯做法:当某些模块无法通过编译,我们不会去修改那些特定模块或软件。 相反,我们修正CrystaX NDK,使自身的运行表现更加符合规范(POSIX和事实标准,如GNU/Linux的运行表现)。

Python 支持,到目前为止运行良好,但它仍处于实验阶段。尚未像其他模块一样经过全面测试,可能仍会有些许错误和遗漏部分。 如果您发现任何问题,请不要犹豫,向我们反馈

在此我们郑重感谢 Vitaly Murashev - CrystaX NDK能够支持Python, 主要是他的功劳。这也就是开源的优势:为了兴趣做事,并与他人分享成果。谢谢你,Vitaly!

预编译的Python二进制文件位于 $NDK/sources/python/2.7$NDK/sources/python/3.5 文件夹。 如果你使用ndk-build,以下是一个关于如何在项目中使用Python库的例子:

Android.mk
# Android.mk
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE           := mymodule
LOCAL_SRC_FILES        := ...
LOCAL_SHARED_LIBRARIES := python_shared
include $(BUILD_SHARED_LIBRARY)

# Replace 3.5 by 2.7 if needed
$(call import-module,python/3.5)

POSIX支持

我们进一步优化了CrystaX NDK中的POSIX支持。在该版本,我们在libcrystax.soCrystaX NDK的核心库) 中实现了更多POSIX接口,更少的依赖Google的libc库。事实上,目前唯一非常依赖Google的libc 的部分是POSIX线程;这也是我们打算在下一版本中重点解决的问题,使用libcrystax.so彻底替代Google的libc。

我们持续优化POSIX标准支持的成效之一,是我们已经集成 Open POSIX Test SuiteCrystaX NDK 自动化测试流程中, 确保libcrystax.so提供符合标准的输出实现。

Boost 1.59.0

我们添加了 Boost 1.59.0 预编译库,同时支持 GNU libstdc++LLVM libc++ C++标准库实现。 在之前版本,我们的Boost预编译库仅支持 GNU libstdc++,迫使开发者只能使用gnustl。 现在您可以自由选择:ndk-build会自动检测并使用恰当的Boost预编译库。

同时,既然我们已经支持了Android Python,那么我们也开始着手构建和测试 Boost.Python。这项工作尚未彻底完成,相信在我们的努力下, 计日可待。

CrystaX是 Boost 项目正式认可的测试团队。这意味着我们为 Boost 项目提供了持续常规测试, 并提交测试结果至 Boost 网站(master, develop)。 这项工作使得 CrystaX NDKBoost 项目双方均受益良多。Boost用户可以在Android平台上使用经过充 分测试的Boost库。同时CrystaX NDK得以证明自身拥有针对POSIX和C++标准的优秀兼容性。

其他

最后补充一点,我们还完成了若干缺陷修复和小改进,使CrystaX NDK表现更加出色。 这里是一份我们在10.3.0版本中关闭的任务清单

下载

从这里下载 使用CrystaX NDK 10.3.0 !

如果您使用 OS X 和 Homebrew, 直接键入:

brew install crystax-ndk

Back
Home
Map
Back
Home
Map

Our contributors: