Importing the Face Capture SDK to a Project

To include the Face Capture SDK in your application requires the following steps:

  1. Copy files to the following directories in your Flutter project:
Table 1 Copy Files:
Source File (src=FaceCapture, installation) Destination Folder (dst)
   
/src/flutter/aw_face_capture/face_capture.dart /dst/lib/
/src/flutter/aw_face_capture/face_capture.cpp /dst/ios/Classes/
/src/flutter/aw_face_capture/face_capture.h /dst/ios/Classes/
/src/include/aw_face_capture/aw_face_capture_errors.h /dst/ios/Classes/
/src/include/aw_face_capture/aw_face_capture.h /dst/ios/Classes/
/src/include/awlib/aw_types.h /dst/ios/Classes/
   
/src/include/awlib/aw_types.h /dst/ios/Classes/awlib/
/src/Samples/Profiles/face_capture_foxtrot_client.xml /dst/example/assets/profiles
   
/src/lib/android-64-r20-api24/libaw_face_capture.so /dst/android/src/main/jniLibs/arm64-v8a/
/src/lib/android-64-r20-api24/libaw_preface7.so /dst/android/src/main/jniLibs/arm64-v8a/
   
/src/lib/ios-arm64/AwFaceCaptureFrameWork.framework /dst/example/ios/
  1. Create a CMakeLists.txt in /dst/android, similiar to the one in /src-demo/flutter/face_capture/android/
Listing 1 CMakeLists.txt
   cmake_minimum_required(VERSION 3.4.1)  # for example


   include_directories(../include)

   add_library(aw_face_capture SHARED IMPORTED)
   set_target_properties(aw_face_capture PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libaw_face_capture.so)

   add_library(aw_preface SHARED IMPORTED)
   set_target_properties(aw_preface PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libaw_preface7.so)

   add_library(face_capture SHARED ../ios/Classes/face_capture.cpp)

   find_library(log-lib log)
   target_link_libraries(face_capture aw_face_capture aw_preface ${log-lib})
  1. Add the following to /dst/android/build.gradle
Listing 2 build.gradle
                            ...

   defaultConfig {
       minSdkVersion 23

       multiDexEnabled true
       ndk {
            abiFilters 'arm64-v8a'
       }
   }

   defaultConfig {
       externalNativeBuild {
           cmake {
               // Enabling exceptions, RTTI
               // And setting C++ standard version
               cppFlags '-frtti -fexceptions -std=c++11'

               // Shared runtime for shared libraries
               arguments "-DANDROID_STL=c++_shared"
           }
       }
   }

   externalNativeBuild {
       // Encapsulates your CMake build configurations.
       cmake {
           // Provides a relative path to your CMake build script.
           path "CMakeLists.txt"
       }
   }

   sourceSets {
       main {
           jniLibs.srcDirs = ["libs"]
       }
   }
  1. Add the following to /dst/android/src/main/AndroidManifest.xml
Listing 3 AndroidManifest.xml
                           ...

   <uses-permission android:name="android.permission.INTERNET" />

   <!-- Permissions options for the `camera` group -->
   <uses-permission android:name="android.permission.CAMERA"/>

   <queries>
       <intent>
           <action android:name="android.intent.action.VIEW" />
           <data android:scheme="https" />
       </intent>
   </queries>
  1. Modify /dst/example/android/app/build.gradle to minSdkVersion 23
  2. Update /dst/pubspec.yaml to include the ffi: ^1.1.2 dependancy
  3. Run “pod install” in /dst/example/ios