-
Notifications
You must be signed in to change notification settings - Fork 12
Description
Hi,
I tried to use the toolchain for android-arm but I got this error:
Using toolchain: android-arm
* (1/1) Configuring qimessaging-jni
CMake Error at /home/nao/.local/share/qi/toolchains/android-arm/ndk/toolchain.cmake:773 (message):
Specified toolchain "arm-linux-androideabi-4.9" is missing in your NDK or
broken. Please verify that your NDK is working or select another compiler
toolchain.
To configure the toolchain set CMake variable ANDROID_TOOLCHAIN_NAME to one
of the following values:
* arm-linux-androideabi-4.4.3
* arm-linux-androideabi-4.6
* arm-linux-androideabi-4.7
* arm-linux-androideabi-clang3.1
* arm-linux-androideabi-clang3.2
* mipsel-linux-android-4.4.3
* mipsel-linux-android-4.6
* mipsel-linux-android-4.7
* mipsel-linux-android-clang3.1
* mipsel-linux-android-clang3.2
* x86-4.4.3
* x86-4.6
* x86-4.7
* x86-clang3.1
* x86-clang3.2
Call Stack (most recent call first):
/home/nao/.local/share/qi/toolchains/android-arm/toolchain-android-arm.cmake:5 (include)
/usr/share/cmake-3.5/Modules/CMakeDetermineSystem.cmake:98 (include)
CMakeLists.txt:2 (project)
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
So, one step after another...
I created a Ubuntu 16.04 virtual machine. I installed Python 2.7 and pip for Python 2.7. Then I installed the Python SDK. After that I installed the C++ SDK and qibuild. Then I downloaded the Java SDK and the JavaScript SDK. With all this I have written basic examples for a Pepper with NAOqi 2.5. Then I tried to use the Java SDK in my Android Project. Sadly this does not work. After that I have seen in libqi-java that there could be a possibility.
java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
I installed Android Studio by using the Ubuntu Software Center. At first I have installed NDK by going to Tools --> SDK Manager --> SDK Tools. But sadly this was NDK 24.x. Then I uninstalled this version. The oldest version I can find inside SDK Tools was 16.x. I then downloaded android-ndk-r8e. I unzipped it to the location where Android Studio normally would install Android NDK.
For better understandig... This are my enviroment variables:
export PYTHONPATH=$PYTHONPATH:/home/nao/naoqi/pynaoqi-python2.7-2.5.7.1-linux64/lib/python2.7/site-packages:/home/nao/naoqi/pynaoqi-python2.7-2.5.7.1-linux64/lib/python2.7/dist-packages:/home/nao/.local/lib/python2.7/site-packages
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/nao/.local/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/home/nao/Android/Sdk:/home/nao/Android/Sdk/ndk-bundle"
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ROS_HOSTNAME="$(hostname -f)"
ROS_MASTER_URI=http://$ROS_HOSTNAME:11311
ROS_IP="$(hostname -I | awk '{print $1;}')"
ANDROID_HOME=/home/nao/Android/Sdk
ANDROID_NDK_HOME=/home/nao/Android/Sdk/ndk-bundle
ANDROID_NDK_ROOT=/home/nao/Android/Sdk/ndk-bundle
You have written in your README.md that ANDROID_NDK_HOME should point to /path/to/android-ndk-r8e. If I run qibuild the ANDROID_NDK_ROOT should point to that location. I fixed it. But inside of the android-ndk-r8e there is no arm-linux-androideabi-4.9. I then edited /home/nao/.local/share/qi/toolchains/android-arm/ndk/toolchain.cmake by adding:
set(ANDROID_TOOLCHAIN_NAME "arm-linux-androideabi-4.4.3")
After that I run into the next error:
* (1/1) Configuring qimessaging-jni
-- Adjusting Android API level 'android-17' to 'android-14'
-- Using qibuild 3.17
-- Library: qimessagingjni
CMake Error at /home/nao/.local/share/cmake/qibuild/internal/uselib.cmake:80 (find_package):
By not providing "FindQI.cmake" in CMAKE_MODULE_PATH this project has asked
CMake to find a package configuration file provided by "QI", but CMake did
not find one.
Could not find a package configuration file provided by "QI" with any of
the following names:
QIConfig.cmake
qi-config.cmake
Add the installation prefix of "QI" to CMAKE_PREFIX_PATH or set "QI_DIR" to
a directory containing one of the above files. If "QI" provides a separate
development package or SDK, be sure it has been installed.
Call Stack (most recent call first):
/home/nao/.local/share/cmake/qibuild/internal/uselib.cmake:197 (_qi_use_lib_get_deps)
/home/nao/.local/share/cmake/qibuild/stage.cmake:247 (_qi_use_lib_internal)
/home/nao/.local/share/cmake/qibuild/target.cmake:277 (qi_use_lib)
CMakeLists.txt:59 (qi_create_lib)
-- Configuring incomplete, errors occurred!
See also "/home/nao/worktree/libqi-java/jni/build-android-arm/CMakeFiles/CMakeOutput.log".
I can locate it:
locate qi-config.cmake
/home/nao/naoqi/ctc-linux64-atom-2.5.10.7/libqi/share/cmake/qi/qi-config.cmake
/home/nao/naoqi/naoqi-sdk-2.5.7.1-linux64/share/cmake/qi/qi-config.cmake
Maybe you have a solution for this issue.
What I have done before was doing following steps:
qitoolchain create --feed-name android-arm android-arm https://github.com/aldebaran/toolchains.git
qitoolchain create --feed-name android-x86 android-x86 https://github.com/aldebaran/toolchains.git
qitoolchain create --feed-name android-x86_64 android-x86_64 https://github.com/aldebaran/toolchains.git
qitoolchain create --feed-name linux64 linux64 https://github.com/aldebaran/toolchains.git
qitoolchain create --feed-name mac64 mac64 https://github.com/aldebaran/toolchains.git
qitoolchain create --feed-name win32-vs2013 win32-vs2013 https://github.com/aldebaran/toolchains.git
qitoolchain list
Known toolchains:
* android-arm
* android-x86
* android-x86_64
* cross-atom
* linux64
* mac64
* mytoolchain
* win32-vs2013
qibuild add-config android-arm -t android-arm
qibuild add-config android-x86 -t android-x86
qibuild add-config android-x86_64 -t android-x86_64
qibuild add-config linux64 -t linux64
qibuild add-config mac64 -t mac64
qibuild add-config win32-vs2013 -t win32-vs2013
The next step would not work:
mkdir -p ~/work/aldebaran
cd ~/work/aldebaran
qisrc init git@github.com:aldebaran/manifest.git
You can find this issue here:
A workaround is to clone it from github directly.
I also does not use ~/work. I will use ~/worktree. Because this was described so in the installation guide for the C++ SDK.
The next steps would be:
cd /home/nao/worktree/libqi-java/jni
qibuild configure --release -c android-arm
qibuild make -j4 -c android-arm
mkdir -p ../qimessaging/lib/armeabi-v7a
mkdir -p /tmp/libqi-java/android-arm/
qibuild install --runtime -c android-arm
cd /tmp/libqi-java/android-arm/
for file in $(find -name [*](https://github.com/aldebaran/libqi-java#id1).so) do
cp $file ~/work/aldebaran/sdk/libqi-java/qimessaging/lib/armeabi-v7a
done
cd ~/work/aldebaran/sdk/libqi-java
rm -rf /tmp/libqi-java/android-arm/
cp -f jni/build-android-arm/sdk/lib/libgnustl_shared.so qimessaging/lib/armeabi-v7a
cd qimessaging
mvn install -DskipTests=true # use -f pom-android.xml version=$(cat pom-android.xml | grep -oPm1 "(?<=<version>)[^<]+")
zip -r target/libqi-java-$version.jar lib/
Perhaps in the further procedure would be even more errors that I become aware of.
Thanks in advance.