Jni项目生成的库文件需要调用硬件给的c++编写的so库,拿到so库跟头文件,jni通过CMakelist方式怎么调用c++写的so文件。。。
首先,创建项目,勾选support c/c++选项
接下来,就是配置CMakeList.text文件:
下面附上CMakeList的详细代码:
# Sets the minimum version of CMake required to build the native
# library. You should either keep the default value or only pass a
# value of 3.4.0 or lower.
cmake_minimum_required(VERSION 3.4.1)
#引用已经有的库
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log )
#资源文件夹的位置libs
set(distribution_DIR ${CMAKE_SOURCE_DIR}/../../../../libs)
#导入类库,只是作为引用,不编译
add_library( first
SHARED
IMPORTED )
#引用目标类库是本地类库位置在libs/armeabi-v7a/xxx.so
set_target_properties( first
PROPERTIES IMPORTED_LOCATION
../../../../libs/armeabi-v7a/libfirst.so )
#添加类库位置在src/main/cpp/xxx.cpp需要编译
add_library(native-lib
SHARED
src/main/cpp/native-lib.cpp )
#引入头文件目录位置
include_directories(libs/jpeg)
#将预构建库与你本地库相关联
target_link_libraries( # Specifies the target library.
native-lib first
# Links the target library to the log library
# included in the NDK.
${log-lib} )
然后点击MakeProject:
这时,如果没出什么意外的话,我们可以在 t\app\build\intermediates\cmake\debug\obj 下查看到生成的so文件
我们的Android项目即可调用此库做相应的操作了
但是要注意一点,因为我们的libnative-lib.so是依赖libfirst.so生成的,所以我们调用的时候需要将两个库都加载进去,不然会报错
public class MainActivity extends AppCompatActivity { // Used to load the 'native-lib' library on application startup. static { System.loadLibrary("first"); System.loadLibrary("native-lib"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Example of a call to a native method TextView tv = (TextView) findViewById(R.id.sample_text); tv.setText(helloString("hi kathy")); } /** * A native method that is implemented by the 'native-lib' native library, * which is packaged with this application. */ public native String stringFromJNI(); public native String helloString(String hello); }
效果如图:
ok,that is all
不懂的可以下载相应的demo自行查看
有关其他的jni问题可以提出来相互讨论,刚刚接触,共同学习,共同进步
thanks~
DEMO下载:http://download.csdn.net/download/qq_35532751/10138080