sony / easyhttpcpp

A cross-platform HTTP client library with a focus on usability and speed
MIT License
163 stars 29 forks source link

Build easyhttpcpp for Android NDK #3

Closed MGasztold closed 6 years ago

MGasztold commented 6 years ago

Is there any way (existing documentation or script ?) to easily compile this project for Android platform? Is cross-compiling all dependencies one by one (Poco, openssl etc...) and then at the end easyhttpcpp itself manually the only option?

shekharhimanshu commented 6 years ago

Hi @MGasztold

Thank you for your interest in easyhttpcpp (EasyHttp).

I haven't tried cross compiling EasyHttp on Android platform yet but it should be possible. Yes, you will have to cross compile OpenSSL and Poco first and then use them to cross compile EasyHttp.

Some references I found online:

I am planning to write a cmake toolchain file to simplify the cross build but in the meantime you can start with the links above. I will try them myself as well.

Let me know if that helps.

shekharhimanshu commented 6 years ago

Hi @MGasztold

I was able to cross-build EasyHttp for Android from a Ubuntu 16.04 host. Here are my steps.

Setup Android NDK.

Build OpenSSL

Next to build Poco and EasyHttp, we will need Android cmake toolchain file. Here's mine:

set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_ANDROID_STANDALONE_TOOLCHAIN /path/to/android/standalone/toolchain/root)

set(OPENSSL_ROOT_DIR "/path/where/openssl/was/installed")
set(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include")

set(CMAKE_INCLUDE_PATH ${OPENSSL_INCLUDE_DIR})
set(CMAKE_LIBRARY_PATH "${OPENSSL_ROOT_DIR}/lib")

include_directories(
        "${OPENSSL_INCLUDE_DIR}"
)
link_directories(
        "${OPENSSL_ROOT_DIR}/lib"
)

Save this to a file AndroidToolchain.cmake. (Make sure you change the paths first)

Build Poco

make install

Poco is installed inside `poco-poco-1.9.0-release/_install`.

### Build EasyHttp
- [Download](https://github.com/sony/easyhttpcpp/releases). I used `easyhttpcpp 1.0.0 release` for this test.

cd easyhttpcpp-1.0.0 mkdir _build cd _build cmake \ -DPoco_DIR=/path/to/poco-poco-1.9.0-release/_install/lib/cmake/Poco \ -DCMAKE_TOOLCHAIN_FILE=/path/to/AndroidToolchain.cmake \ -DCMAKE_INSTALL_PREFIX=../_install ..

make install

EasyHttp is installed inside `easyhttpcpp-1.0.0/_install`.

### Build sample

cd easyhttpcpp-1.0.0/samples/SimpleHttpClient mkdir _build cd _build cmake \ -DPoco_DIR=/path/to/poco-poco-1.9.0-release/_install/lib/cmake/Poco \ -Deasyhttpcpp_DIR=/path/to/easyhttpcpp-1.0.0/_install/lib/cmake/easyhttpcpp \ -DCMAKE_TOOLCHAIN_FILE=/path/to/AndroidToolchain.cmake ..

make



Let me know it helps.
MGasztold commented 6 years ago

@shekharhimanshu Thanks a lot for this. I am going to try it asap and let you know if it works smoothly on OS X as this is a system i work on.

shekharhimanshu commented 6 years ago

Hi @MGasztold,

Were you able to build EasyHttp on your side? Let me know if you are having troubles at any step.

shekharhimanshu commented 6 years ago

@MGasztold

I am closing this issue due to inactivity. Please feel free to open a new one.

AnchoretBaladev commented 4 years ago

Hi Himanhu, I'm unable to build the poco, its giving an error when i ran "cmake -DCMAKE_BUILD_TYPE=Release -DPOCO_ANDROID=ON -DPOCO_UNBUNDLED=OFF -DENABLE_ENCODINGS=OFF -DENABLE_REDIS=OFF -DENABLE_XML=ON -DENABLE_JSON=ON -DENABLE_UTIL=ON -DENABLE_NET=ON -DENABLE_NETSSL=ON -DENABLE_CRYPTO=ON -DENABLE_DATA=ON -DENABLE_DATA_SQLITE=ON -DENABLE_ZIP=OFF -DENABLE_DATA_MYSQL=OFF -DENABLE_DATA_ODBC=OFF -DENABLE_MONGODB=OFF -DENABLE_PDF=OFF -DENABLE_SEVENZIP=OFF -DENABLE_PAGECOMPILER=OFF -DENABLE_PAGECOMPILER_FILE2PAGE=OFF -DENABLE_TESTS=OFF -DCMAKE_TOOLCHAIN_FILE=/home/animesh/Desktop/pocoandroid -DCMAKE_INSTALL_PREFIX=../_install" inside _build and the error was ""CMake Warning: No source or binary directory provided. Both will be assumed to be the same as the current working directory, but note that this warning will become a fatal error in future CMake releases.

CMake Error: The source directory "/home/animesh/Desktop/pocoandroid/poco-master/_build" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI.

Then I created a cmakelists.txt inside build but there was still there.

Can you please help me with if I'm missing something or if you can provide the exact steps to build poco for android.

shekharhimanshu commented 4 years ago

Hi @AnchoretBaladev

Thank you for your interest in EasyHttp. Since your problem is different than this issue, could you please open a new issue?

I will be happy to help you there. Thanks