Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android CI Specification #460

Open
nickpdemarco opened this issue Jun 27, 2022 · 0 comments
Open

Android CI Specification #460

nickpdemarco opened this issue Jun 27, 2022 · 0 comments

Comments

@nickpdemarco
Copy link
Member

Android CI for STLab

Goal: Fast, reliable, and simply-configured continuous integration for a STLab compiled for Android ABI(s).

STLab will be linked into an executable with our testing framework (presently, Boost.Test) which should be executed in an environment analogous to an Android Phone.

Configuration

Android has a significant number of configurations one may wish to support:

Android supports four ABIs, with a total of 14 instruction sets among them.

  • armeabi-v7a (32 bit ARM) (3 instruction sets)
  • arm64-v8a (64 bit ARM) (1 instruction set)
  • x86 (32 bit x86) (4 instruction sets)
  • x86_64 (64 bit x86) (6 instruction sets)

Building & Testing

To reduce setup and maintenance costs, any solution proposed should integrate with cmake and be invokable from the command line.

We allow installing dependencies (including libraries, compilers, emulators, and system images) but these must be installable from the command line.

Our workflow should look very close to this:

$ cd /path/to/stlab
$ mkdir android_build && cd android_build
$ cmake -t android .. 
$ cmake --build .
$ ctest

Open Questions

What ABIs do we need to support for Adobe? What instruction sets do we need to support?

Is it possible to transpile an executable Android binary which is not an APK?

  • This might look like installing an emulator shell environment that can run the executable.

What is the minimum set of dependencies necessary to accomplish this?

Are there exemplar projects in this space? (C++ library with efficient Android CI support)

This Stack Overflow post suggests that .mk (makefile) files are used on Android to specify build configurations for executables. It contains fields like LOCAL_SRC_FILES := a.cpp b.cpp c.cpp etc.cpp.

Reference

Native Executable on Android
Add C and C++ code to your [Android] project
Start the [Android] emulator from the command line
C++ Android Project in Android Emulator | Visual Studio 2019

To Read

http://www.hoseinjamshidi.com/compile-c-c-for-android-and-make-a-native-executable/

https://community.rti.com/static/documentation/connext-dds/5.2.0/doc/manuals/connext_dds/getting_started_extras/html_files/RTI_ConnextDDS_CoreLibraries_GettingStarted_AndroidAddendum/Content/AndroidAddendum/Building_and_Running_a__C_C___Applicatio.htm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant