2016-10-10 77 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