Building iOS/OS X

请注意,根据您的下载版本,以下路径可能需要调整。

设置

  1. [下载][downlod] 以下 iOS SDKs:

    • Core SDK (release)
    • Onboarding SDK
    • Configuration SDK
    • Notification SDK
    • Control Panel SDK
  2. 提取下载文件并设置目录结构:

mkdir alljoyn-ios
mkdir alljoyn-ios/core
unzip alljoyn-14.06.00-osx_ios-sdk.zip
mv alljoyn-14.06.00-osx_ios-sdk alljoyn-ios/core/alljoyn
unzip alljoyn-config-service-framework-14.06.00-ios-sdk-rel.zip
unzip alljoyn-controlpanel-service-framework-14.06.00-ios-sdk-rel.zip
unzip alljoyn-notification-service-framework-14.06.00-ios-sdk-rel.zip
unzip alljoyn-onboarding-service-framework-14.06.00-ios-sdk-rel.zip

设置 OpenSSL 附件

cd <parent directory of alljoyn-ios>
pushd alljoyn-ios
git clone git://git.openssl.org/openssl.git
git clone https://github.com/sqlcipher/openssl-xcode.git
cp -r openssl-xcode/openssl.xcodeproj openssl
pushd openssl
git checkout tags/OpenSSL_1_0_1f #replace this with a newer version as available
sed -ie 's/\(ONLY_ACTIVE_ARCH.*\)YES/\1NO/' openssl.xcodeproj/project.pbxproj
xcodebuild -configuration Release -sdk iphonesimulator
xcodebuild -configuration Release -sdk iphoneos
xcodebuild -configuration Release
xcodebuild -configuration Debug -sdk iphonesimulator
xcodebuild -configuration Debug -sdk iphoneos
xcodebuild -configuration Debug
launchctl setenv OPENSSL_ROOT `pwd`
popd
popd

定义环境变量

cd alljoyn-ios
launchctl setenv ALLJOYN_SDK_ROOT `pwd`
cd services
launchctl setenv ALLSEEN_BASE_SERVICES_ROOT `pwd`

搭建样例

在 Xcode 中打开下列每一个样例 iOS 应用程序,通过在 Xcode 中选择 Project > Build 来搭建这些应用程序。

在 iOS 设备上安装样例

请先确保您的 iOS 设备已经连接到电脑,然后使用 Xcode Run 所需的样例应用程序。这将会把应用程序安装到您的设备上。

TIP: 此命令同样适用于在一个终端上搭建一个样例应用程序。

向 iOS 应用程序添加 AllJoyn™ 框架。

  1. 请确保您知晓 AllJoyn SDK 所在的文件夹位置。AllJoyn SDK 文件夹包含您的搭建,服务以及 alljoyn_objc 文件夹。
  2. 打开 XCode, 然后打开您的项目,在项目导航(Project Navigator)中找到树的跟节点,然后在 Targets 下选择目标应用程序。

添加 AllJoyn 核心库和附件。

  1. 对应用程序目标选 Building Settings 标签, 点击在列表顶部的 All 选项。
  2. 在 Build Settings 列表的顶部, 点击 Architectures ,然后选择 Standard architectures (armv7, armv7s).
  3. Build Active Architecture only 设置为 Yes.
  4. 下滑到 linking 选项, 将 Other Linker Flags to the fol 按照如下所示调整:

-lalljoyn -lajrouter -lBundledRouter.o -lssl -lcrypto 5. 下滑设置列表,直到看到 Search Paths 小组。 6. 双击 Header Search Paths 字段并输入如下命令:

$(ALLJOYN_ROOT)/core/alljoyn/build/darwin/arm/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/inc $(ALLJOYN_ROOT)/core/alljoyn/alljoyn_objc/AllJoynFramework/AllJoynFramework/

  1. 双击 Library Search Paths 字段并输入如下命令:

$(ALLJOYN_ROOT)/core/alljoyn/build/darwin/$(CURRENT_ARCH)/$(PLATFORM_NAME)/$(CONFIGURATION)/dist/cpp/lib $(OPENSSL_ROOT)/build/$(CONFIGURATION)-$(PLATFORM_NAME)

  1. 查阅 Build Settings 表,直到发现 Apple LLVM 5.0 - Language - C++ 群组,并按照以下设置:
  2. Enable C++ Exceptions to No.
  3. Enable C++ Runtime Types to No.
  4. C++ Language Dialect to Compiler Default.

  5. 查阅 Build Settings 表,直到发现 Apple LLVM 5.0 - Custom 编译 Flags group 并作出如下设置:

  6. Enter the following in the Other C Flags field for Debug field:

    -DQCC_OS_GROUP_POSIX -DQCC_OS_DARWIN

  7. Other C Flags 字段中输入以下命令:

    -DNS_BLOCK_ASSERTIONS=1 -DQCC_OS_GROUP_POSIX -DQCC_OS_DARWIN

  8. 查阅 Build Settings 表,直到发现 Apple LLVM 5.0 - Language 群组,设置如下:

  9. C Language Dialect to Compiler Default.
  10. Compile Sources As to Objective-C++.
  11. 选择 Build Phases 标签。
  12. 展开 Link Binary With Libraries 群组,并点击在左下角的 + 符号。将会出现一个对话。
  13. 选择 SystemConfiguration.framework 文件。
  14. 再一次点击 '+' 按钮,将下列库添加到 link against, 如已被包括则忽略。
    • libstdc++.6.0.9.dylib
    • libstdc++.6.dylib
    • libstdc++.dylib
    • libc++abi.dylib
    • libc++.1.dylib
    • libc++.dylib

添加服务架构

  1. 在目标应用程序中选择 Build Phases 标签。点击在列表顶端的 All 选项。
  2. Link Binary with Libraries 库中, 点击 '+' 按钮, 选择 Add Other..., 并添加以下条目:

General libs (所有使用一个或多个服务框架的应用程序都要安装): * alljoyn-ios/services//cpp/lib/ * liballjoyn_services_common_cpp.a * liballjoyn_about_cpp.a * alljoyn-ios-directory/services//objc/lib/ * liballjoyn_services_common_objc.a * liballjoyn_about_objc.a * libAllJoynFramework_iOS.a

Config libs: * alljoyn-ios/services/alljoyn-config-14.06.00-rel/cpp/lib/ * liballjoyn_config_cpp.a * alljoyn-ios-directory/services/alljoyn-config-14.06.00-rel/objc/lib/ * liballjoyn_config_objc.a

Control Panel libs: * alljoyn-ios/services/alljoyn-controlpanel-14.06.00-rel/cpp/lib/ * liballjoyn_controlpanel_cpp.a * alljoyn-ios/services/alljoyn-controlpanel-14.06.00-rel/objc/lib/ * liballjoyn_controlpanel_objc.a

Notification libs: * alljoyn-ios/services/alljoyn-notification-14.06.00-rel/cpp/lib/ * liballjoyn_notification_cpp.a * alljoyn-ios/services/alljoyn-notification-14.06.00-rel/objc/lib/ * liballjoyn_notification_objc.a

Onboarding libs: * alljoyn-ios/services/alljoyn-onboarding-14.06.00-rel/cpp/lib/ * liballjoyn_onboarding_cpp.a * alljoyn-ios/services/alljoyn-onboarding-14.06.00-rel/objc/lib/ * liballjoyn_onboarding_objc.a