@@ -11,11 +11,77 @@ jobs:
1111 sudo apt update -qq
1212 sudo apt install -y default-jdk
1313 - uses : actions/checkout@v2
14- - uses : ros-tooling/setup-ros@master # using master, until a released version supports rolling
14+ - uses : ros-tooling/setup-ros@0.1.0
1515 with :
1616 required-ros-distributions : rolling
1717 - uses : ros-tooling/action-ros-ci@master
1818 with :
1919 package-name : rosidl_generator_java rcljava_common rcljava
2020 target-ros2-distro : rolling
2121 vcs-repo-file-url : ${{ github.workspace }}/ros2_java_desktop.repos
22+
23+ build_android :
24+ runs-on : ubuntu-18.04
25+ steps :
26+ - name : Install Java
27+ run : |
28+ sudo apt-get update -qq
29+ sudo apt-get install -y default-jdk gradle
30+ - uses : actions/checkout@v2
31+ - name : Setup locale for ROS 2
32+ run : |
33+ sudo locale-gen en_US en_US.UTF-8
34+ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
35+ export LANG=en_US.UTF-8
36+ - name : Setup sources for ROS 2
37+ run : |
38+ sudo apt-get update && sudo apt-get install -y curl gnupg2 lsb-release
39+ curl -sL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
40+ sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
41+ - name : Install ROS 2 dependencies
42+ run : |
43+ sudo apt-get update && sudo apt-get install -y python3-colcon-common-extensions python3-vcstool python3-lark-parser python3-dev
44+ - name : Install colcon extensions for Gradle
45+ run : |
46+ sudo pip3 install git+git://github.com/colcon/colcon-gradle.git
47+ sudo pip3 install git+git://github.com/colcon/colcon-ros-gradle.git
48+ - name : Install Android NDK
49+ run : |
50+ curl -LO https://dl.google.com/android/repository/android-ndk-r21d-linux-x86_64.zip
51+ unzip android-ndk-r21d-linux-x86_64.zip
52+ - name : Setup workspace with VCS repo file
53+ run : |
54+ mkdir -p ros2_java_ws/src
55+ cd ros2_java_ws
56+ curl -sL file://${{ github.workspace }}/ros2_java_android.repos | vcs import src
57+ # Use checked out version of ros2_java
58+ rm -rf src/ros2_java/ros2_java
59+ ln --symbolic ${{ github.workspace }} src/ros2_java
60+ - name : Build ros2_java for Android
61+ run : |
62+ export PYTHON3_EXEC="$( which python3 )"
63+ export PYTHON3_LIBRARY="$( ${PYTHON3_EXEC} -c 'import os.path; from distutils import sysconfig; print(os.path.realpath(os.path.join(sysconfig.get_config_var("LIBPL"), sysconfig.get_config_var("LDLIBRARY"))))' )"
64+ export PYTHON3_INCLUDE_DIR="$( ${PYTHON3_EXEC} -c 'from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))' )"
65+ export ANDROID_ABI=armeabi-v7a
66+ export ANDROID_NATIVE_API_LEVEL=android-21
67+ export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang
68+ export ANDROID_NDK=${PWD}/android-ndk-r21d
69+
70+ cd ros2_java_ws
71+ colcon build \
72+ --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \
73+ --packages-up-to rcljava \
74+ --cmake-args \
75+ -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \
76+ -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \
77+ -DPYTHON_INCLUDE_DIR=${PYTHON3_INCLUDE_DIR} \
78+ -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
79+ -DANDROID_FUNCTION_LEVEL_LINKING=OFF \
80+ -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \
81+ -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \
82+ -DANDROID_STL=c++_shared \
83+ -DANDROID_ABI=${ANDROID_ABI} \
84+ -DANDROID_NDK=${ANDROID_NDK} \
85+ -DTHIRDPARTY=ON \
86+ -DCOMPILE_EXAMPLES=OFF \
87+ -DCMAKE_FIND_ROOT_PATH="${PWD}/install"
0 commit comments