Используя ADT 12, я выполнил это следующим образом:
1) Экспортируйте JAR из вашей библиотеки с помощью SO-файла, используя Eclipse. Убедитесь, что вы исключили AndroidManifest.xml. Это будет включать в себя исходный код и другие данные, поэтому, если вы распространяете, вы можете удалить эти ненужные биты с помощью любой утилиты ZIP.
2) Создайте каталог в исходном дереве вашего приложения (я использую каталог "lib") и скопируйте в него JAR библиотеки.
3) Щелкните правой кнопкой мыши проект в Eclipse и выберите «Настроить путь сборки». Добавьте JAR и наведите его на JAR внутри дерева исходного кода приложения.
4) В настройках Eclipse выберите раздел Android / Build и снимите флажок «Автоматически обновлять папку ресурсов и ресурсов при сборке». Ниже вы увидите параметр «Принудительная ошибка, когда внешние файлы jar содержат собственные библиотеки». Существует ошибка ADT, которая предположительно будет исправлена в R17, которая использует неправильные настройки. Как только он будет исправлен, вы будете использовать «Force error» (убедитесь, что он снят).
5) После того как вы создадите APK своего приложения, у вас будет файл libs / armeabi / libXXXX.so. Это не будет автоматически распаковано при установке. Вам нужно будет написать код, чтобы извлечь его из вашего APK-файла в ваш каталог данных, а затем использовать System.load для файла .so в вашем каталоге данных.
У меня двунаправленные вызовы JNI, идущие из динамически загруженного файла, и даже использую на нем dlopen () для выполнения своей процедуры регистрации пользовательских плагинов.