Table of Contents
THINGS YOU NEED FROM ME (i.e., essential files not included with git)
raw/ebc_configfiles for logging into ES (basically the ES API Key and also the EbC API Key). These go into the resource files of the example / test applications, or any other application that wants to use the ebclibrary (see the README for more details
local.propertiesfile with the bintray API key / username to upload the library to Bintray (might also want to change the account so anyone can log in, not just me)
Installing Android Studio
You'll want to install Android Studio (latest version) with Gradle and the SDK and NDK (support for jni).
There is a part of the ebclibrary module that still runs in C. This basically generates new DH keys (nonces) and does the crypto stuff for computing shared secrets. It also currently tracks which devices have been seen / encountered already, and determines when an encounter has ended (hysteresis stuff).
Hopefully this won't need to be modified at all. But to build the library, you will need to be able to use NDK (the
ndk-build command basically makes the .so files used by the Android code). To do so, you need to install the ndk packages (which you can do with Android Studio when you download the SDK, or download them by themselves) and also set the following environment variables (I put them in ./bashrc). You might need to set some variables for Java like I did, but I'm not sure if it's needed.
#for Android Encounter dev export ANDROID_HOME=/home/tslilyai/Android/Sdk export ANDROID_SDK_ROOT=/home/tslilyai/Android/Sdk export NDKROOT=/home/tslilyai/Android/Sdk/ndk-bundle export NDK_ROOT=/home/tslilyai/Android/Sdk/ndk-bundle export NDK_STANDALONE_46_ANDROID9="/home/tslilyai/Android/Sdk/ndk-bundle" export PATH=$PATH:$NDKROOT:$ANDROID_SDK_ROOT/emulator:$ANDROID_SDK_ROOT/tools export PATH=$PATH:/home/tslilyai/AndroidSource/prebuilts/jdk/jdk8/linux-x86/bin export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151 export PATH=$PATH:$JAVA_HOME/bin
After setting all these things, running
ndk-build in the folder
ebclibrary/src/main/jni should work. Unfortunately, gradle seems to want the .so files put in the jniLibs folder (and not libs, which is where
ndk-build puts them), which is why
ndk-build-script.sh copies the .so files to the right place.
Deploying the ebclibrary to Bintray
[root_folder]/build.gradle change the version number to something appropriate. You'll need to set local.properties correctly with the bintray username (right now tslilyai) and API key. I guess I can give it to you (email me or something)? Then run the command
./gradlew clean :ebcutils:build :ebclibrary:build :ebclibrary:bintrayUpload
from your root folder. This should upload the version to Bintray.
If we want the library to be accessible from JCenter, log into the Bintray account (I'll have to unlink this from my github repo or else I'll be the only one who can do this) and then click "Add to JCenter" on the package editing page. They should get back to you in a couple days and then it'll be published!
Also, you might need to set a line in the gradle.build file for ebclibrary to use the ebcutils jar rather than include it as another module:
// COMMENT THIS API LINE OUT api project(path: ':ebcutils') // UNCOMMENT THIS LINE implementation fileTree(include: ['*.jar'], dir: '../ebcutils/build/libs')