Android Studio переименовать родную библиотеку

#java #android #c #android-studio #java-native-interface

#java #Android #c #android-studio #java-native-interface

Вопрос:

Я создал проект Android Studio с поддержкой C с одним библиотечным модулем. Файл с именем C native-lib.cpp был автоматически добавлен в мой проект. Когда я создаю проект сейчас, выходное имя файла * .so libnative-lib.so равно .

Если я переименую native-lib.cpp что-нибудь еще (используя функцию рефакторинга / переименования), файл C просто исчезнет из моего проекта, пока я не изменю имя обратно.

Итак, как мне переименовать мою собственную библиотеку или задать имя выходного файла?

Комментарии:

1. Что не так с именем выходного файла?

2. Проверьте Android.mk файлы в вашем проекте.

3. Если вы используете новые функции поддержки Android Studio C , покажите нам build.gradle или, если вы используете CMake , покажите CMakeLists.txt файл. Кроме того, убедитесь, что после изменения имени вы меняете его в своем коде при загрузке библиотеки: System.loadLibrary("myname.so")

4. @NicolasFilotto Если я создаю несколько библиотек, их нельзя вызвать все «native-lib.so » верно? или это как-то сработает, если каждый из них находится в своем *.aar ? Я предполагаю, что это все еще одна «собственная библиотека» для каждого процесса.

5. @Перемещенные Android.mk файлы больше не используются в Android studio.

Ответ №1:

Я рад, что вы смогли это понять. Я все равно опубликую ответ здесь для справки.

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'
    }
}
  

Затем выполните полную очистку, обновите проект C , используя опцию, указанную в меню Сборки.

И, как @bitwise posted, если необходимо, удалите содержимое build .externalNativeBuild папки и и перестройте проект.

Комментарии:

1. У меня та же проблема, что и у моего CMakeLists.txt находится в папке cpp, но до того, как я переименовал свое имя файла cpp, проблем не было.