官方“Boost库”为Android和iOS的支持? [关闭](Official “Boost

2019-07-17 14:11发布

这个问题是在延续我应该选择升压短耳或Aysnc套接字线程的Android? 问:

Boost库的目的是广泛有用的,可在广泛的应用,但尚未有针对Android和iOS不提供官方支持

  1. 有同样喜欢没有优化的嵌入式设备后面的任何具体的原因是什么? 或任何其他原因?
  2. 是否有任何应用程序的任何身体知道使用Android或iOS上加速建造?
  3. 它是建议使用升压库,其派生multple线程网络及通讯应用激烈?

FYI..I已使用以下链接创建示例Android应用程序,但尚未成功:(

https://github.com/MysticTreeGames/Boost-for-Android

http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

包括升压C ++中的Android库

如何与Android NDK和STLport的使用升压库(包括shared_ptr的)

https://sites.google.com/site/fourdollars/android/android-mk

https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho

http://www.crystax.net/trac/ndk/ticket/6

Android的NDK R5和支持的C ++异常

提前致谢。

Answer 1:

得到了提升社区有答复。 这些平台都没有正式支持,因为没有人主动定期为它们运行回归测试。

这是不可能的加速开发,以测试在所有平台上。 因此,开发人员依赖于由志愿者运行回归测试的测试结果。 例如,看到http://beta.boost.org/development/tests/trunk/developer/summary.html

如果没有人自愿来运行特定平台的测试,该平台没有正式支持。

所以,如果你关心Android或iOS设备变得正式支持,开始运行定期(最好是每天)回归测试的推动作用。 见http://beta.boost.org/development/running_regression_tests.html



Answer 2:

看看在github上我的跨平台教程。 它表明你如何设置升压和使用它的iOS和Android之间。 我有这样一个可怕的时间,这一点,我想我会记录它所以没有其他人只好看着办吧。 你会发现,这个项目也拉动了两个平台,如的CoreFoundation和SQLite之间使用其他一些常见的物品。

https://github.com/markshiz/cross-platform-tutorial

注:我的教程中不显示如何构建编译库的提振。 我这样做,是使用您提供的说明成功之前:

http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

之后,你有被Android工具链编译静态库,你可以很容易地在它通过类似的下一个模块链接include/[NAME OF NEW SUBMODULE]上述项目的目录。 使用类似如下的东西Android.mk在该目录的根文件。

include $(CLEAR_VARS)
LOCAL_MODULE:= boost_regex
LOCAL_SRC_FILES:= ./path/to/built/static/library/libboost_regex-gcc-mt-s.a
LOCAL_EXPORT_C_INCLUDES := ./path/to/the/directory/that/has/the/boost/headers
include $(PREBUILT_STATIC_LIBRARY)

最后,导入模块,在本例中,内

$(call import-module,[NAME OF NEW SUBMODULE])

至于你的其他问题--do你知道,在iOS和Android使用加速的应用程序? 是的,我已经成功多次,做到了与发行工作的应用程序到应用程序商店。

你的另一个问题,是建议使用升压用于网络通信? 我不知道你的意思在这里。 从什么角度? 你的意思是,在哲学上,技术上等?

从哲学,你要问自己,什么是您导入此库,并使用它的Android和iOS之间的推理。 它是节省时间的代码,维护负担。 如果是的话,我会说这是做一个很好的方法。 显然,还有一些障碍和疼痛得到这个不大不小的设立工作的。 此外,对于C ++ IDE的功能并不像对Java在Eclipse作为真棒。 我尽量在该PDF演示公平和平衡的doc/目录。 给一个曾经过。

从技术角度来看,我想我会担心的唯一的事情是确保我清理活动时停止短耳正确的对象。 如果你需要做的事情的背景下,用服务代替:

http://developer.android.com/reference/android/app/Service.html



Answer 3:

更新:似乎有性病的问题::在Android原子,由于Boost.Asio的是使用它(默认情况下),结合线程,一个偶然得到了僵持。 幸运Boost.Asio的可以很容易地从Std.Atomic切换到Boost.Atomic,这已经在被照顾的升压换的Android项目在这次提交 。

有关错误的详细信息,请参见这里


我们正在开发使用Android升压ASIO,到目前为止,我们没有任何问题,一个简单的多人游戏(尚未公布)。 这对问题#2。

什么样的问题,你看见了什么?

如果问题涉及到编译和链接,也许这些提示会非常有用。

添加以下到您的AndroidManifest.xml文件:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

有这个在您的Application.mk文件:

APP_STL := gnustl_static
APP_CPPFLAGS += -frtti -fexceptions

并以此作为你的Android.mk文件的模板:

LOCAL_PATH := $(call my-dir)
BOOST_VERSION      := 1_49
PROJECT_ROOT       := $(LOCAL_PATH)/../../../..
BOOST_INCLUDE_PATH := /path/to/boost/headers
BOOST_LIB_PATH     := /path/to/boost/libraries

# Path and name of the STL library. Add this to the *end* of LOCAL_LDLIBS.
# Note this is a hack/workaround to prevent linker errors when compiling with 
# boost. 
STL_LIBS := -L$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi \
                    -lgnustl_static

include $(CLEAR_VARS)

LOCAL_MODULE    := native-activity
LOCAL_C_INCLUDES:= $(BOOST_INCLUDE_PATH) \
                   $(PROJECT_ROOT)/src \
                   $(PROJECT_ROOT)/platform/android/jni

LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS    := -llog -landroid

# The order of these libraries is often important.
LOCAL_LDLIBS += -L$(BOOST_LIB_PATH)     \
                -lboost_system-gcc-mt-$(BOOST_VERSION)  \
                -lboost_thread-gcc-mt-$(BOOST_VERSION)  \
                $(STL_LIBS)

LOCAL_STATIC_LIBRARIES := android_native_app_glue

include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)

编辑:我们如何为Android打造提升。 这是我们在我们的Makefile:

git clone git://github.com/madadam/Boost-for-Android.git
./build-android.sh --boost=1.49.0 --with-libraries=chrono,program_options,system,thread /path/to/ndk

请注意,我们使用我们自己的升压换安卓的前叉,这仅仅是因为一个拥有最新版本NDK一个R 8d中的补丁。 它也可以从我们使用的是1.49版本提升的命令行看出,这是目前最高的升压换Android的支持。

如果您想了解所支持的加速和Android NDK的组合,看看了Boost换的Android项目中。 它包含目录称为补丁/助推<X> / NDK-机器人<Y>,其中X对应于支持升压版本和Y的支持NDK版本(无耻插头:我们2美分,至项目:-))。



Answer 4:

以下是提升社区收到一些(非常有用)的信息:

  1. 是否有背后的同任何具体原因(如不用于嵌入式设备进行了优化)? 或任何其他原因?

升压完美的作品在Android上。 因为有一个NDK(原生开发套件)与一个相当不错的gcc(4.6事),你只需要配置Boost构建使用权GCC。 虽然这一切的作品,它需要修修补补,以获得正确的设置一点点。 但同样,在原则上,没有建设加速Android或任何其他Linux发行版有很大的区别的。

  1. 是否有(全部),如果我们使用的网络和线程同步的智能手机应用程序开发的升压库中的任何已知问题? 这将是使用BOOST ASIO对于同一个好主意吗?

这是完全正常使用Boost.Thread或Boost.Asio的。 他们的工作在ARM设备完全正常。 甚至还有像boost.atomic和boost.context越平台的具体hackeries支持。

FYI是找到链接https://github.com/MysticTreeGames/Boost-for-Android http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/

与Android NDK构建升压比与boost.build直接更简单。 我编了一堆Android编译脚本,它可以在这里找到: https://github.com/STEllAR-GROUP/HPXAndroid/tree/master/modules寻找升压_ $ {}模块的各种Boost库。 这不是一个完整的列表。 只有我需要的东西。 此外,可能需要为1.53一些爱。 所有不同的库并不需要任何特殊的Android治疗(模的一些小错误在编译器不与其他版本的GCC同意)

我希望这将是对他人有用的! 谢谢!



文章来源: Official “Boost library” Support for Android and iOS? [closed]