Cross-compile the AVS Device SDK for iOS | Alexa Voice Service
Nội Dung Chính
Cross-compile the AVS Device SDK for iOS
Warning: This documentation is for AVS Device SDK 1.26, which is an old version. For information about the latest version of the AVS Device SDK, see
This documentation is for AVS Device SDK 1.26, which is an old version. For information about the latest version of the AVS Device SDK, see Overview of the Alexa Voice Service Device SDK
The following step-by-step instructions teach you how to cross-compile and build the AVS Device SDK for iOS. If you encounter any errors or have questions, browse the SDK issue list before creating a new issue.
Warning
The AVS Device SDK sample app doesn’t run on iOS. This guide doesn’t walk through the cross-compilation of all required dependencies to launch the SDK on iOS.
After cross-compiling the SDK, you must create a custom iOS app to wrap the native AVS Device SDK code. This development requires you to integrate SDK features on your own – microphone, speaker, media player and more.
Prerequisites
To confirm that you have installed curl, Homebrew, and Xcode command line tools, run the following commands.
curl --version
brew --version
xcode-select --version
Step 1: Install dependencies
-
Install the required dependencies.
brew install cmake pkg-config
-
Create a build folder for your project.
cd ~ mkdir cross-compile cd cross-compile
-
Clone CMake for iOS into your build folder.
cd ~/cross-compile git clone https://github.com/leetal/ios-cmake.git
-
Download and cross-compile Google Test.
cd ~/cross-compile git clone https://github.com/google/googletest.git mkdir googletest_build cd googletest_build cmake ../googletest \ -DIOS_DEPLOYMENT_TARGET=10.0 \ -DCMAKE_TOOLCHAIN_FILE=../ios-cmake/ios.toolchain.cmake \ -DIOS_PLATFORM=OS \ make
-
Download and cross-compile OpenSSL and curl. Clone the repository from GitHub.
cd ~/cross-compile git clone https://github.com/jasonacox/Build-OpenSSL-cURL.git cd Build-OpenSSL-cURL/
-
Open
build.sh
and change the curl version to 7.55.1.######################################## # EDIT this section to Select Versions # ######################################## OPENSSL="1.0.2l" LIBCURL="7.55.1" NGHTTP2="1.24.0" ########################################
- Save the file.
-
Run the script.
./build.sh
Step 2: Download and configure the SDK
-
Clone the AVS Device SDK.
cd ~/cross-compile git clone -b v1.26.0 --single-branch https://github.com/alexa/avs-device-sdk.git cd avs-device-sdk/
-
Replace the source code in
/AVSCommon/Utils/src/LibcurlUtils/LibcurlUtils.cpp
-
Find this code
if (config.getString(CAPATH_CONFIG_KEY, &caPath) && !setopt(handle, CURLOPT_CAPATH, caPath.c_str(), "CURLOPT_CAPATH", caPath.c_str())) { return false; }
-
Replace it with this code
if (config.getString(CAPATH_CONFIG_KEY, &caPath) && !setopt(handle, CURLOPT_CAINFO, caPath.c_str(), "CURLOPT_CAINFO", caPath.c_str()) && !setopt(handle, CURLOPT_CAPATH, caPath.c_str(), "CURLOPT_CAPATH", caPath.c_str())) { return false; }
-
-
The SDK must run as a STATIC library. You must make it global in all subfolders.
cd ~/cross-compile/avs-device-sdk/ find . -type f -name '*.txt' -exec sed -i '' s/SHARED/STATIC/ {} +
Step 3: Build the SDK
Build the SDK with the following CMake parameters:
cd ~/cross-compile
mkdir avs_build
cd avs_build
cmake ../avs-device-sdk \
-DIOS_DEPLOYMENT_TARGET=10.0 \
-DCMAKE_TOOLCHAIN_FILE=../ios-cmake/ios.toolchain.cmake \
-DIOS_PLATFORM=OS \
-DGSTREAMER_MEDIA_PLAYER=OFF \
-DPKCS11=OFF \
-DCURL_LIBRARY=../Build-OpenSSL-cURL/archive/libcurl-7.54.1-openssl-1.0.2l-nghttp2-1.24.0/libcurl_iOS.a \
-DCURL_INCLUDE_DIR=../Build-OpenSSL-cURL/curl/curl-7.55.1/include \
-DGTEST_LIBRARY=../googletest_build/googlemock/libgmock.a \
-DGTEST_MAIN_LIBRARY=../googletest_build/googlemock/libgmock_main.a \
-DGTEST_INCLUDE_DIR=../googletest/googletest/include/ \
-DPKG_CONFIG_EXECUTABLE=/usr/local/bin/pkg-config
(Optional) Step 4: Build the SDK to run in the iOS simulator
cd ~/cross-compile
mkdir avs_build_sim
cd avs_build_sim
cmake ../avs-device-sdk
-DIOS_DEPLOYMENT_TARGET=10.0 \
-DCMAKE_TOOLCHAIN_FILE=../ios-cmake/ios.toolchain.cmake \
-DIOS_PLATFORM=SIMULATOR64 \
-DGSTREAMER_MEDIA_PLAYER=OFF \
-DCURL_LIBRARY=../Build-OpenSSL-cURL/archive/libcurl-7.54.1-openssl-1.0.2l-nghttp2-1.24.0/libcurl_iOS.a \
-DCURL_INCLUDE_DIR=../Build-OpenSSL-cURL/curl/curl-7.55.1/include \
-DGTEST_LIBRARY=../googletest_build/googlemock/libgmock.a \
-DGTEST_MAIN_LIBRARY=../googletest_build/googlemock/libgmock_main.a \
-DGTEST_INCLUDE_DIR=../googletest/googletest/include/ \
-DPKG_CONFIG_EXECUTABLE=/usr/local/bin/pkg-config
To build dependencies for the iOS proof of concept, run these commands
make CBLAuthDelegate
make DefaultClient
make KWD
make PlaylistParser
Make sure that each make
command reaches 100%
.
Last updated: Oct 25, 2022