2016-10-10 76 views
1

我已经使用一个库模块创建了一个支持C++的Android Studio项目。一个名为native-lib.cpp的C++文件被自动添加到我的项目中。当我现在构建项目时,* .so文件的输出名称是libnative-lib.soAndroid Studio重命名本机库

如果我将native-lib.cpp重命名为其他任何内容(使用重构/重命名功能),则C++文件会从我的项目中消失,直到我更改名称为止。

那么如何重命名我的本地库,或设置输出文件的名称?

+0

输出文件的名称有什么问题? –

+0

查看项目中的Android.mk文件。 – Moved

+0

如果您正在使用新的Android Studio C++支持功能,请向我们展示'build.gradle',或者如果您使用'CMake',则显示'CMakeLists.txt'文件。此外,确保在更改名称后,在加载库时在代码中更改它:'System.loadLibrary(“myname.so”)' –

回答

2

我很高兴你能弄明白。无论如何,我会在这里发布答案供参考。

的CMakeLists.txt < < =应该在你的应用程序模块的根目录(my_project/app/CMakeLists.txt

# https://developer.android.com/studio/projects/add-native-code.html#create-cmake-script 


# Minimum version of CMake 
cmake_minimum_required(VERSION 3.4.1) 


# adding CEC library 
# add_library structure: add_library(lib_name lib_type_STATIC_or_SHARED source_file_path) 
add_library(my_lib_name SHARED src/main/jni/my_cpp_file.cpp) 


# include_directories is to provide the path to you native lib code 
# include_directories structure: include_directories(native_lib_folder_path) 
include_directories(src/main/jni/) 


# adding Android log library 
# find_library is used to find NDK API libraries (built in NDK libs) 
# find_library structure: find_library(name_you_want_to_call_the_lib lib_name_in_ndk_api) 
find_library(log-lib log) 


# linking log lib to our native lib 
# once you find the library, you have to link that library with your native library 
# target_link_libraries structure: target_link_libraries(you_native_lib lib_found_using_find_library) 
target_link_libraries(my_lib_name ${log-lib}) 

然后在的build.gradle,请执行下列操作

externalNativeBuild { 
    cmake { 
     path 'CMakeLists.txt' 
    } 
} 

然后,做了充分的清洁,使用Build菜单中提供的选项刷新C++项目。

而像@bitwise发布,如果必须删除build.externalNativeBuild文件夹的内容并重建项目。

+0

我有同样的问题我的CMakeLists.txt是在cpp文件夹中,但在我重命名我的cpp文件名之前没有问题。 – david