Библиотеки, которые внутренне используются моей (не Android) библиотекой, не включаются в classes.dex - PullRequest
2 голосов
/ 08 ноября 2011

Это меня поставило в тупик. Я явно что-то упускаю, но не могу понять, что.

У меня есть библиотека (не библиотека Android - просто обычный проект библиотеки Java), которая в свою очередь использует другие библиотеки. Итак, настройка:

myApi.jar

   |
   +-- com/myapi/ ... (.class files here).
   | 
   +-- libs/
        |
        +-- lib1.jar
        +-- lib2.jar

Теперь, когда я включаю myApi.jar в проект в каталоге libs проекта Android, например MyAndroidProject/libs, в файл classes.dex включаются только классы com.myapi. .... Классы из lib1.jar и lib2.jar не включены в classes.dex

Очевидный обходной путь - удалить lib1.jar и lib2.jar из файла myApi.jar; и вместо этого поместите их в MyAndroidProject/libs тоже. Однако это означает, что пользователи myApi теперь должны знать, что есть дополнительные JAR-файлы, которые нужно поместить в путь сборки. Это то, чего я хочу избежать.

Итак, есть ли что-то особенное, что мне нужно сделать, чтобы включить файлы JAR, используемые внутри библиотеки JAR библиотеки, в файл classes.dex?

1 Ответ

1 голос
/ 08 ноября 2011

Однако это означает, что пользователи myApi теперь должны знать, что на пути сборки есть дополнительные файлы JAR. Это то, чего я хочу избежать.

Здесь поведение Android идентично обычному Java - если бы myApi.jar поддерживало приложение Swing, вам нужно было бы либо распределить все JAR-файлы, либо объединить все JAR-файлы в один. То же самое с Android. Вы можете сложить все классы из зависимых JAR-файлов в свои собственные, или же проекты, использующие ваш JAR-файл, также добавляют ваши зависимости в качестве собственных зависимостей.

Обратите внимание, что слияние содержимого JAR может иметь технические или лицензионные последствия, поэтому убедитесь, что вы действительно хотите это сделать.

...