title: Using a prebuilt shared Library in Android Studio (cmake)
body: <p>I want to use a C++ shared library inside my Android App.
  I tried to follow along the <code>hello-libs</code> example from Google's NDK samples, but somehow it doesn't work out.</p>
  
  <p>It seems, that my library isn't packed into the APK. All tutorials i found are using <code>*.mk</code>-files, but I want to use <code>cmake</code>.</p>
  
  <p>This is my CMakeLists.txt:</p>
  
  <pre><code># Sets the minimum version of CMake required to build the native library.
  cmake_minimum_required(VERSION 3.4.1)
  
  # native lib
  add_library(native-lib SHARED
              native-lib.cpp)
  
  set(IMPORT_DIR ${CMAKE_SOURCE_DIR}/../jniLibs)
  
  # shared lib
  add_library(shared-lib SHARED IMPORTED)
  set_target_properties(shared-lib PROPERTIES IMPORTED_LOCATION
                        ${IMPORT_DIR}/dynamic/lib/${ANDROID_ABI}/libLibrary.so)
  target_include_directories(native-lib PRIVATE
                             ${IMPORT_DIR}/dynamic/include)
  
  # linking libs
  target_link_libraries(native-lib
                        android
                        shared-lib
                        log)
  </code></pre>
  
  <p>As soon as I link the <code>shared-lib</code> along with the others, I get the following error, when running the app:</p>
  
  <pre><code>E/art: dlopen("/data/app/my.package.name-1/lib/arm/libnative-lib.so", RTLD_LAZY) failed: dlopen failed: library "C:/projects/HelloLibs/app/src/main/cpp/../jniLibs/dynamic/lib/armeabi-v7a/libLibrary.so" not foun
  D/AndroidRuntime: Shutting down VM
  E/AndroidRuntime: FATAL EXCEPTION: main
                    Process: my.package.name, PID: 29266
                    java.lang.UnsatisfiedLinkError: dlopen failed: library "C:/projects/HelloLibs/app/src/main/cpp/../jniLibs/dynamic/lib/armeabi-v7a/libLibrary.so" not found
                        at java.lang.Runtime.loadLibrary(Runtime.java:371)
                        at java.lang.System.loadLibrary(System.java:988)
                        at my.package.name.MainActivity.&lt;clinit&gt;(MainActivity.java:11)
                        at java.lang.reflect.Constructor.newInstance(Native Method)
                        at java.lang.Class.newInstance(Class.java:1690)
                        at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2543)
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2771)
                        at android.app.ActivityThread.access$900(ActivityThread.java:177)
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)
                        at android.os.Handler.dispatchMessage(Handler.java:102)
                        at android.os.Looper.loop(Looper.java:135)
                        at android.app.ActivityThread.main(ActivityThread.java:5912)
                        at java.lang.reflect.Method.invoke(Native Method)
                        at java.lang.reflect.Method.invoke(Method.java:372)
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
  </code></pre>
  
  <p>It looks like the library is not found on the device. Otherwise it looks like the librarie's path is still the one on my local maschine.</p>