1*3c7ae9deSAndroid Build Coastguard Worker# AWS CRT Android 2*3c7ae9deSAndroid Build Coastguard Worker 3*3c7ae9deSAndroid Build Coastguard WorkerThis document provides information about building and using the AWS CRT Java with Android. 4*3c7ae9deSAndroid Build Coastguard Worker 5*3c7ae9deSAndroid Build Coastguard WorkerIf you have any issues or feature requests, please file an issue or pull request. 6*3c7ae9deSAndroid Build Coastguard Worker 7*3c7ae9deSAndroid Build Coastguard WorkerAPI documentation: https://awslabs.github.io/aws-crt-java/ 8*3c7ae9deSAndroid Build Coastguard Worker 9*3c7ae9deSAndroid Build Coastguard WorkerThis SDK is built on the AWS Common Runtime, a collection of libraries 10*3c7ae9deSAndroid Build Coastguard Worker([aws-c-common](https://github.com/awslabs/aws-c-common), 11*3c7ae9deSAndroid Build Coastguard Worker[aws-c-io](https://github.com/awslabs/aws-c-io), 12*3c7ae9deSAndroid Build Coastguard Worker[aws-c-mqtt](https://github.com/awslabs/aws-c-mqtt), 13*3c7ae9deSAndroid Build Coastguard Worker[aws-c-http](https://github.com/awslabs/aws-c-http), 14*3c7ae9deSAndroid Build Coastguard Worker[aws-c-cal](https://github.com/awslabs/aws-c-cal), 15*3c7ae9deSAndroid Build Coastguard Worker[aws-c-auth](https://github.com/awslabs/aws-c-auth), 16*3c7ae9deSAndroid Build Coastguard Worker[s2n](https://github.com/awslabs/s2n)...) written in C to be 17*3c7ae9deSAndroid Build Coastguard Workercross-platform, high-performance, secure, and reliable. 18*3c7ae9deSAndroid Build Coastguard Worker 19*3c7ae9deSAndroid Build Coastguard Worker*__Jump To:__* 20*3c7ae9deSAndroid Build Coastguard Worker 21*3c7ae9deSAndroid Build Coastguard Worker* [Installation](#installation) 22*3c7ae9deSAndroid Build Coastguard Worker * [Minimum requirements](#minimum-requirements) 23*3c7ae9deSAndroid Build Coastguard Worker * [Build and install CRT from source](#build-and-install-crt-from-source) 24*3c7ae9deSAndroid Build Coastguard Worker* [Consuming AWS CRT Android](#consuming-aws-crt-android) 25*3c7ae9deSAndroid Build Coastguard Worker * [Consuming from Maven](#consuming-from-maven) 26*3c7ae9deSAndroid Build Coastguard Worker * [Consuming from locally installed](#consuming-from-locally-installed) 27*3c7ae9deSAndroid Build Coastguard Worker 28*3c7ae9deSAndroid Build Coastguard Worker## Installation 29*3c7ae9deSAndroid Build Coastguard Worker 30*3c7ae9deSAndroid Build Coastguard Worker### Minimum requirements 31*3c7ae9deSAndroid Build Coastguard Worker* Java 11+ ([Download and Install Java](https://www.java.com/en/download/help/download_options.html)) 32*3c7ae9deSAndroid Build Coastguard Worker * [Set JAVA_HOME](#set-java_home) 33*3c7ae9deSAndroid Build Coastguard Worker* Gradle 7.4.2 ([Download and Install Gradle](https://gradle.org/install/)) 34*3c7ae9deSAndroid Build Coastguard Worker* Android SDK 24 ([Doanload SDK Manager](https://developer.android.com/tools/releases/platform-tools#downloads)) 35*3c7ae9deSAndroid Build Coastguard Worker * [Set ANDROID_HOME](#set-android_home) 36*3c7ae9deSAndroid Build Coastguard Worker* Android NDK ([Download and install Android NDK](https://developer.android.com/ndk/downloads)) 37*3c7ae9deSAndroid Build Coastguard Worker 38*3c7ae9deSAndroid Build Coastguard Worker### Build and install CRT from source 39*3c7ae9deSAndroid Build Coastguard WorkerSupports API 24 or newer. 40*3c7ae9deSAndroid Build Coastguard Worker 41*3c7ae9deSAndroid Build Coastguard Worker``` sh 42*3c7ae9deSAndroid Build Coastguard Worker# Create a workspace directory to hold all the SDK files 43*3c7ae9deSAndroid Build Coastguard Workermkdir sdk-workspace 44*3c7ae9deSAndroid Build Coastguard Workercd sdk-workspace 45*3c7ae9deSAndroid Build Coastguard Worker# Clone the CRT repository 46*3c7ae9deSAndroid Build Coastguard Worker# (Use the latest version of the CRT here instead of "v0.27.6) 47*3c7ae9deSAndroid Build Coastguard Workergit clone --branch v0.27.6 --recurse-submodules https://github.com/awslabs/aws-crt-java.git 48*3c7ae9deSAndroid Build Coastguard Worker# Compile and install the CRT for Android 49*3c7ae9deSAndroid Build Coastguard Worker./gradlew :android:crt:build 50*3c7ae9deSAndroid Build Coastguard Worker# Install CRT locally 51*3c7ae9deSAndroid Build Coastguard Worker./gradlew :android:crt:publishToMavenLocal 52*3c7ae9deSAndroid Build Coastguard Worker``` 53*3c7ae9deSAndroid Build Coastguard Worker 54*3c7ae9deSAndroid Build Coastguard Worker## Consuming AWS CRT Android 55*3c7ae9deSAndroid Build Coastguard Worker 56*3c7ae9deSAndroid Build Coastguard Worker### Consuming from Maven 57*3c7ae9deSAndroid Build Coastguard WorkerConsuming this CRT via Maven is the preferred method of consuming it and using it within your application. To consume 58*3c7ae9deSAndroid Build Coastguard WorkerAWS CRT Android in your application, add the following to your `build.gradle` repositories and dependencies: 59*3c7ae9deSAndroid Build Coastguard Worker 60*3c7ae9deSAndroid Build Coastguard Worker``` groovy 61*3c7ae9deSAndroid Build Coastguard Workerrepositories { 62*3c7ae9deSAndroid Build Coastguard Worker mavenCentral() 63*3c7ae9deSAndroid Build Coastguard Worker} 64*3c7ae9deSAndroid Build Coastguard Worker 65*3c7ae9deSAndroid Build Coastguard Workerdependencies { 66*3c7ae9deSAndroid Build Coastguard Worker api 'software.amazon.awssdk.crt:aws-crt-android:0.27.6' 67*3c7ae9deSAndroid Build Coastguard Worker} 68*3c7ae9deSAndroid Build Coastguard Worker``` 69*3c7ae9deSAndroid Build Coastguard WorkerReplace `0.27.6` in `software.amazon.awssdk.crt:aws-crt-android:0.27.6` with the latest release version of the CRT library. 70*3c7ae9deSAndroid Build Coastguard WorkerLook up the latest SDK version here: https://github.com/awslabs/aws-crt-java/releases 71*3c7ae9deSAndroid Build Coastguard Worker 72*3c7ae9deSAndroid Build Coastguard Worker### Consuming from locally installed 73*3c7ae9deSAndroid Build Coastguard WorkerYou may also consume AWS CRT Android in your application using a locally installed version by adding the 74*3c7ae9deSAndroid Build Coastguard Workerfollowing to your `build.gradle` repositories and depenencies: 75*3c7ae9deSAndroid Build Coastguard Worker``` groovy 76*3c7ae9deSAndroid Build Coastguard Workerrepositories { 77*3c7ae9deSAndroid Build Coastguard Worker mavenLocal() 78*3c7ae9deSAndroid Build Coastguard Worker} 79*3c7ae9deSAndroid Build Coastguard Worker 80*3c7ae9deSAndroid Build Coastguard Workerdependencies { 81*3c7ae9deSAndroid Build Coastguard Worker api 'software.amazon.awssdk.crt:aws-crt-android:0.27.6' 82*3c7ae9deSAndroid Build Coastguard Worker} 83*3c7ae9deSAndroid Build Coastguard Worker``` 84*3c7ae9deSAndroid Build Coastguard WorkerReplace `0.27.6` in `software.amazon.awssdk.crt:aws-crt-android:0.27.6` with the latest release version for the SDK 85*3c7ae9deSAndroid Build Coastguard Workeror replace with `1.0.0-SNAPSHOT` to use the CRT built and installed from source. 86*3c7ae9deSAndroid Build Coastguard Worker 87*3c7ae9deSAndroid Build Coastguard Worker 88*3c7ae9deSAndroid Build Coastguard Worker## Set JAVA_HOME 89*3c7ae9deSAndroid Build Coastguard Worker 90*3c7ae9deSAndroid Build Coastguard WorkerBelow are instructions on how you can set `JAVA_HOME`, which varies from depending on whether you are on Windows or are on MacOS/Linux: 91*3c7ae9deSAndroid Build Coastguard Worker 92*3c7ae9deSAndroid Build Coastguard Worker### Windows 93*3c7ae9deSAndroid Build Coastguard Worker1. Open "Edit the system environment variable" 94*3c7ae9deSAndroid Build Coastguard Worker2. Click "New" to create new environment variable 95*3c7ae9deSAndroid Build Coastguard Worker - variable name: `JAVA_HOME` 96*3c7ae9deSAndroid Build Coastguard Worker - variable value: `<jdk_install_path>` (example: `C:\Program Files\Java\jdk-17.0.2`) 97*3c7ae9deSAndroid Build Coastguard Worker3. Press "Ok" to save the changes 98*3c7ae9deSAndroid Build Coastguard Worker4. re-open the command prompt for the environment variables to apply 99*3c7ae9deSAndroid Build Coastguard Worker 100*3c7ae9deSAndroid Build Coastguard Worker### MacOS and Linux 101*3c7ae9deSAndroid Build Coastguard WorkerRun the following command to set the JAVA_PATH 102*3c7ae9deSAndroid Build Coastguard Worker``` sh 103*3c7ae9deSAndroid Build Coastguard Worker# (example: "/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home") 104*3c7ae9deSAndroid Build Coastguard Workerexport JAVA_HOME=<jdk_install_path> 105*3c7ae9deSAndroid Build Coastguard Worker``` 106*3c7ae9deSAndroid Build Coastguard Worker 107*3c7ae9deSAndroid Build Coastguard Worker## Set ANDROID_HOME 108*3c7ae9deSAndroid Build Coastguard WorkerBelow are instructions on how you can set `ANDROID_HOME`, which varies from depending on whether you are on Windows or are on MacOS/Linux: 109*3c7ae9deSAndroid Build Coastguard Worker 110*3c7ae9deSAndroid Build Coastguard Worker### Windows 111*3c7ae9deSAndroid Build Coastguard Worker1. Open "Edit the system environment variable" 112*3c7ae9deSAndroid Build Coastguard Worker2. Click "New" to create new environment variable 113*3c7ae9deSAndroid Build Coastguard Worker - variable name: `ANDROID_HOME` 114*3c7ae9deSAndroid Build Coastguard Worker - variable value: `<android_sdk_path>` (example: `C:\Users\YourUsername\AppData\Local\Android\Sdk`) 115*3c7ae9deSAndroid Build Coastguard Worker3. Press "Ok" to save the changes 116*3c7ae9deSAndroid Build Coastguard Worker4. re-open the command prompt for the environment variables to apply 117*3c7ae9deSAndroid Build Coastguard Worker 118*3c7ae9deSAndroid Build Coastguard Worker### MacOS and Linux 119*3c7ae9deSAndroid Build Coastguard WorkerRun the following command to set the JAVA_PATH 120*3c7ae9deSAndroid Build Coastguard Worker``` sh 121*3c7ae9deSAndroid Build Coastguard Worker# (example: "/Users/YourUsername/Library/Android/sdk") 122*3c7ae9deSAndroid Build Coastguard Workerexport ANDROID_HOME=<android_sdk_path> 123*3c7ae9deSAndroid Build Coastguard Worker```