Включите .so-файл в проект Android Studio [дубликат]

Если все остальное не удается, перекомпилируйте.

Недавно я смог избавиться от нерешенной внешней ошибки в Visual Studio 2012, просто перекомпилировав нарушивший файл. Когда я перестроил, ошибка исчезла.

Это обычно происходит, когда две (или более) библиотеки имеют циклическую зависимость. Библиотека A пытается использовать символы в B.lib и библиотеке B пытается использовать символы из A.lib. Ничего не существует для начала. Когда вы пытаетесь скомпилировать A, шаг ссылки завершится неудачно, потому что он не может найти B.lib. A.lib будет сгенерирован, но не будет dll. Затем вы компилируете B, который будет успешным и сгенерирует B.lib. Повторная компиляция A теперь будет работать, потому что теперь найден B.lib.

30
задан Alec Holmes 21 January 2014 в 12:13
поделиться

4 ответа

В конце концов, мне не нужно было использовать вкусы продукта.

Для проекта библиотеки я добавил следующее:

android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }        
}

В папке libs была папка внутри под названием «armeabi -v7a ", и поскольку это моя единственная цель, она сработала.

Файлы ndk (.so) распространяются в проект андроида, который использует проект библиотеки андроида.

61
ответ дан Alec Holmes 28 August 2018 в 15:11
поделиться

Я работаю с Android Studio 2.1, и я обнаружил, что добавление источников или исходных записей в мой build.gradle не показало никакого эффекта. Вместо этого я обнаружил, что мне нужно следующее:

android {
    defaultConfig {
        ndk {
            moduleName "libmp3lame"
        }
    }
1
ответ дан Jerry Agin 28 August 2018 в 15:11
поделиться

Пример с новым плагином экспериментального градиента android .


Требования:

  • Android Studio 1.5 +
  • gradle-2.10
  • gradle-experimental: 0.6.0-alpha5

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"
                    }
                }
            }
        }
    }
}
11
ответ дан Maks 28 August 2018 в 15:11
поделиться

Согласно этой теме:

https://groups.google.com/forum/#!topic/adt-dev/nQobKd2Gl_8

неспособность добавлять файлы .so к библиотечным проектам была ошибкой, которая была исправлена ​​в v0.8 плагина.

0
ответ дан Scott Barta 28 August 2018 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: