Я использую arc4Random в моем проекте cocos2d-x (V 2.2.4).
В MacOS я могу просто использовать его, и для linux я включаю bsd-header (bsd/bsd.h), который я вручную установил в своей системе. Теперь я хочу скомпилировать его для андроида и получить ошибку:
jni/../../Classes/Scenes/GameScene.cpp: 29: 25: фатальная ошибка: bsd/bsd.h: такой компиляции файла или каталога не завершено.
Мне удалось улучшить существующий Makefile. Мой Android.mk выглядит так:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/Scenes/MainMenuScene.cpp \
../../Classes/Scenes/GameScene.cpp \
../../Classes/BackgroundLayer.cpp \
../../Classes/VisibleRect.cpp \
../../Classes/Utils.cpp \
../../Classes/ScoreLayer.cpp \
../../Classes/HudLayer.cpp \
../../Classes/Animations.cpp \
../../Classes/Entities/Monster.cpp \
../../Classes/Scenes/SettingsScene.cpp \
../../Classes/Entities/Kitty.cpp \
../../Classes/Utils/md5.cpp \
../../Classes/Utils/ScreenLog.cpp \
../../Classes/Entities/StaticKitty.cpp \
../../Classes/Entities/FatKitty.cpp \
../../Classes/Entities/RocketKitty.cpp \
../../Classes/Entities/MovingKitty.cpp \
../../Classes/Input/GestureDetector.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
/usr/incude/bsd/bsd.h \
$(LOCAL_PATH)/../../Classes/Scenes/ \
$(LOCAL_PATH)/../../Classes/Input/ \
$(LOCAL_PATH)/../../Classes/Utils/ \
$(LOCAL_PATH)/../../Classes/Entities/ \
$(LOCAL_PATH)/../../../../extensions/CocoStudio/Json/rapidjson/ \
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)
Я думаю, мне также пришлось бы скомпилировать материал bsd для андроида, не так ли?
Как я могу заставить это работать? Или есть ли другой способ решить это?
После большого количества поисковых запросов и ожидания ответов я пришел к выводу, что лучше всего просто обменять вызовы arc4random с помощью простых c++ rand-вызовов. Я не смог скомпилировать это для armeabi, хотя это должно быть возможно, потому что для него доступен весь проект BSD. Но это не стоит стресса;)