xref: /aosp_15_r20/external/aws-crt-java/android/ANDROID.md (revision 3c7ae9de214676c52d19f01067dc1a404272dc11)
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```