Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / runtime / contrib / android / README.md
1 ## How to setup env
2
3 Install android studio
4 - android studio: https://developer.android.com/studio
5
6 Install `ndk 20.0.5594570`
7 ```
8 dragon@loki:~/Android/Sdk$ ./tools/bin/sdkmanager --install "ndk;20.0.5594570"
9 ```
10
11 ```
12 dragon@loki:~/Android/Sdk/ndk$ ls
13 20.0.5594570
14 ```
15
16 Set `ANDROID_SDK_ROOT` or `ANDROID_HOME` for SDK
17 ```
18 $ cat ~/.bashrc
19 ...
20 export ANDROID_SDK_ROOT=$HOME/Android/Sdk
21 export ANDROID_HOME=$HOME/Android/Sdk
22 ```
23
24 ## How to build
25
26 after building `onert`
27 ```
28 ONE/runtime/contrib/android $ ./gradlew build
29 ...
30
31 ONE/runtime/contrib/android$ find . -name "*.aar"
32 ./api/build/outputs/aar/com.samsung.onert-1.0-debug.aar
33 ./api/build/outputs/aar/com.samsung.onert-1.0-release.aar
34 ```
35
36 ## Example
37
38 ``` java
39 import com.samsung.onert.Session;
40 import com.samsung.onert.Tensor;
41
42 // for now, the only cpu backend has been supported
43 Session session = new Session("/sdcard/nnpkg/model/", "cpu");
44 session.prepare();
45
46 Tensor[] inputs, outputs;
47
48 // allocate inputs and outputs like below
49 //    int size = session.getInputSize();
50 //    inputs = new Tensor[size];
51 //    for (int i = 0; i < size; ++i){
52 //        TensorInfo ti = session.getInputTensorInfo(i);
53 //        inputs[i] = new Tensor(ti);
54 //    }
55 //    session.setInputs(inputs);
56
57 session.setInputs(inputs);
58 session.setOutputs(outputs);
59
60 // source inputs from outside
61 // inputs[i].buffer().put(outside_buffer);
62
63 session.run();
64
65 // sink outputs to inside
66 // outside_buffer.put(outputs[i].buffer());
67
68 session.close();
69 ```
70
71 ## How to add jni api
72 ```
73 ONE/runtime/contrib/android $ ./update_jni_header.sh
74 ```
75
76 and then follow code of `onert-native-api.h` on `onert-native-api.cpp`