Если все остальное не удается, перекомпилируйте.
Недавно я смог избавиться от нерешенной внешней ошибки в Visual Studio 2012, просто перекомпилировав нарушивший файл. Когда я перестроил, ошибка исчезла.
Это обычно происходит, когда две (или более) библиотеки имеют циклическую зависимость. Библиотека A пытается использовать символы в B.lib и библиотеке B пытается использовать символы из A.lib. Ничего не существует для начала. Когда вы пытаетесь скомпилировать A, шаг ссылки завершится неудачно, потому что он не может найти B.lib. A.lib будет сгенерирован, но не будет dll. Затем вы компилируете B, который будет успешным и сгенерирует B.lib. Повторная компиляция A теперь будет работать, потому что теперь найден B.lib.
В конце концов, мне не нужно было использовать вкусы продукта.
Для проекта библиотеки я добавил следующее:
android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
В папке libs была папка внутри под названием «armeabi -v7a ", и поскольку это моя единственная цель, она сработала.
Файлы ndk (.so) распространяются в проект андроида, который использует проект библиотеки андроида.
Я работаю с Android Studio 2.1, и я обнаружил, что добавление источников или исходных записей в мой build.gradle не показало никакого эффекта. Вместо этого я обнаружил, что мне нужно следующее:
android {
defaultConfig {
ndk {
moduleName "libmp3lame"
}
}
Пример с новым плагином экспериментального градиента android .
Требования:
1) Вы могли бы просто поместить все общие родные библиотеки в основной файл / jniLibs по умолчанию.
Структура проекта
файл корневой папки / андроида
корневая папка / android_project / app / src / main / jniLibs / x86
корневая папка / android_project / app / src / main / jniLibs / armeabi-v7a
корневая папка / android_project / app / src / main / jniLibs / ...
Gradle автоматически загрузит их на устройство.
Затем вы можете загрузить библиотеку в приложении.
static {
System.loadLibrary("mylibrary");
}
2) Вы также можете поместить все общие собственные библиотеки в настраиваемое местоположение.
Пример с указанием пути к каталогу bin / android / Debug .
В этом случае вы должны вручную установить библиотеки l ocation в файле build.gradle .
Структура проекта
файл корневой папки / андроида
Корневая папка / bin / android / Debug / jniLibs / x86
корневая папка / bin / android / Debug / jniLibs / armeabi-v7a
корневая папка / bin / android / Debug / jniLibs / ...
корневая папка / android_project / app / build.gradle
apply plugin: 'com.android.model.application'
model {
android {
sources {
main {
jni {
source {
srcDirs = []
}
}
jniLibs {
source {
srcDirs "/../../bin/android/Debug/jniLibs"
}
}
}
}
}
}
Согласно этой теме:
https://groups.google.com/forum/#!topic/adt-dev/nQobKd2Gl_8
неспособность добавлять файлы .so к библиотечным проектам была ошибкой, которая была исправлена в v0.8 плагина.