cmake方式はサードパーティに導入する.a静的ライブラリおよびライブラリのコンパイル中にninja:error:'...//.//....//../src/libs/armeabi-v7a/xxx.a', needed by '../../.


android studio 2.2+以降ndk開発を統合し、cmakeコンパイラを持参した.ndkを書くときは、構成が簡単です.もうandroidはいらないmkプロファイル.
サードパーティのxxを追加する場合.aリンクライブラリは通常、サードパーティが提供するhフォルダをcppのincludeに格納します.これは規範で、必要ではありません.私のは置いていませんが、xxx.aライブラリは/src/main/libs/armeabi-v 7 a/ディレクトリの下に配置されます.
この記事ではlibspeexを追加します.a接続ライブラリを例1とする.まず/src/main/jniディレクトリの下にincludeフォルダを作成し、speexが公式に提供したヘッダファイルフォルダをincludeにコピーします.
2.appのsrcディレクトリのmainの下で、フォルダ、Libsを作成し、jniLibsの中にarmeabi-v 7 a(個人構成による)フォルダを作成します.そしてlibspeexをaリンクライブラリをコピーします.
3.第3のステップでは、ダイナミックライブラリがヘッダファイルにコピーされる場合、コンパイラに関連付けるように伝える必要があります.appディレクトリのsrcフォルダの下にCMakeListsがあります.txtファイル、私達はそれを通じて構成情報を編纂してspeexヘッダファイルの所在するディレクトリをコンパイルに教えて、中で追加します
include_directories(#             ,     
            src/main/jni/include/speex
            src/main/jni/include/libspeex
            )

リンクライブラリが2つあるので、2つ追加します.
コンパイラに伝えてaどのディレクトリの下にあるか、リンクライブラリの名前を指定して追加します.
add_library(speex
            STATIC
            IMPORTED )  #        ,     CMAKE      

set_target_properties( speex
                      PROPERTIES IMPORTED_LOCATION
                      "${CMAKE_SOURCE_DIR}/src/main/libs/${ANDROID_ABI}/libspeex.a")

(この経路は必ずよくチェックして、書き間違えたら次のような間違いが出て、呆然とした顔をしています)
 
3.1 CMakeコンパイル時報エラーninja:error:......missing and no known rule to make itCMakeコンパイル時報エラーninja:error:......missing and no known rule to make it
Build command failed. Error while executing process D:\SDK\cmake\3.10.2.4988404\bin\cmake.exe with arguments  {--build C:\Users\DELL\Desktop\sample_0820_videook\sample\app\.externalNativeBuild\cmake\debug\armeabi-v7a --target native-lib} ninja: error: '../../../../src/libs/armeabi-v7a/libspeex.a',  needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libnative-lib.so',  missing and no known rule to make it
この問題は一般的にCMakeListsである.txtの構成パスが間違っています.ダイナミックライブラリ/静的ライブラリのパス、ヘッダファイルのパスをチェックしてください.
4.0 .ステップ4でtarget_を変更しますlink_libraries、jsoncppを1行追加
target_link_libraries( # Specifies the target library.
                       native-lib
                       speex

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )

4.1このような追加は複数あります:(ネット上のインスタンス、リンク:https://www.cnblogs.com/fnlingnzb-learner/p/7593488.html)  
#  json   
add_library(jsoncpp STATIC IMPORTED)  
set_target_properties(jsoncpp  
  PROPERTIES IMPORTED_LOCATION  
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libjsoncpp.a)  
  
#  curl      
add_library(curl STATIC IMPORTED)  
set_target_properties(curl  
  PROPERTIES IMPORTED_LOCATION  
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libcurl.a)  
  
#      (md5, base64, des, aes , asa) part-1  
add_library(crypto STATIC IMPORTED)  
set_target_properties(crypto  
  PROPERTIES IMPORTED_LOCATION  
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libcrypto.a)  
  
#      (md5, base64, des, aes , asa) des   part-2  
add_library(ssl STATIC IMPORTED)  
set_target_properties(ssl  
  PROPERTIES IMPORTED_LOCATION  
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libssl.a)  
target_link_libraries(native-lib  
                      jsoncpp  
                      curl  
                      crypto  
                      ssl  
                      ${log-lib}) 

そしてビルドはすぐに