Getting source and destination must be different error while building project

你。 提交于 2020-06-27 11:49:10

问题


I am getting this error while building project. Trying to add a new library in android-studio. Is there anybody who has an idea basically I am trying to create a new library here.

Options tried:

  1. Manually deleted build

  2. Invaildate cache/restart

  3. Gradle clean build cache

  4. Build->Clean Project

    But build is failing.

    Source C:\Users\abc\AndroidStudioProjects\Events\app\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so and destination C:\Users\abc\AndroidStudioProjects\Events\app\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so must be different

CMakeLists.txt I am using for the same:

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             native-lib.cpp
        )

add_library (
        testLib
        SHARED
        TestClassesManager.cpp
)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

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 )

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.


target_link_libraries( # Specifies the target library.
                       native-lib

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

        )

target_link_libraries(
        testLib

        native-lib
)

The error goes away if I am replacing

target_link_libraries(
        testLib

        native-lib
)

by

target_link_libraries(
        testLib
    ${log-lib}

)

But I want to link both libraries. But it is giving above error. Please help.


回答1:


This is a weird bug, but thank you for the concise repro project. Actually had someone mention this to me the other day but I hadn't had any luck reproducing the failure.

I'm still investigating here, but for now it seems that a workaround is to run clean, then refresh linked c++ projects, then build. If you need to use the "refresh linked c++ projects" button, again, run clean first.

A fix has been cherry-picked and will be in 4.0.1.




回答2:


I am running into the same issue. The problem seems to be SHARED attribute. My guess is that all shared libraries are assume to be "final" libraries that are JNI libraries.

A workaround for developing is to mark the library that are dependencies STATIC instead.

Also doing a fresh build (remove the .cxx and all build directories) seems not have the issue but every rebuild after that.




回答3:


What I understand and feel is your plugins is not the right version for your current sdk version or in-compactible.

Try to lower the plugin version or apply newer version might also help. Make sure to use the lastest Android Studion and try checking again. If the further error log is available, kindly paste here.



来源:https://stackoverflow.com/questions/62168227/getting-source-and-destination-must-be-different-error-while-building-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!