Со всей новой шумихой, связанной с поддержкой собственных расширений в AIR 3, я не нашел ни одной вещи, которая подтверждает или отрицает возможность включения и использования внешнего JAR-файла в собственной реализации Android.
Все примеры в основном демонстрируют возможность подключения к встроенным API-интерфейсам Android. Но что, если кто-то захочет использовать одну из сотен библиотек, которые делают это проще? Конечно, кажется, что это должно быть возможно. Я постараюсь изложить, что я сделал, и, возможно, кто-то заметит недостаток:
- Успешно созданная собственная библиотека Android с использованием скомпилированного импорта из сторонней библиотеки Android XYZ.
- Экспортированный проект Android в виде файла JAR.
Примечание. Указанный сторонний JAR-файл находится в / lib внутри банки.
- Успешно созданная библиотека ActionScript (SWC) для взаимодействия с собственной библиотекой Android.
- Создан ANE-пакет из SWC, extension.xml, Android JAR и library.swc (для платформы Android-ARM, извлеченный из SWC).
Примечание: также попытался поместить стороннюю библиотеку в файловую структуру, описанную здесь: http://help.adobe.com/en_US/air/extensions/WSf268776665d7970d-24823354 12ffea65006-8000.html # WSf268776665d7970d-6be13ace1308aaebeca-7fff. Я думаю, что это больше связано с выполнением типов во время выполнения с JNI или чем-то еще, так что эта статья немного смутила меня.
- Использовал ANE в примере проекта Flex Mobile.
- Встроенный и установленный APK-файл на тестовом устройстве DroidX.
- Может успешно видеть загрузку приложения AIR (и инструкции трассировки) в LogCat
"ActivityManager: Displayed com.me.androidapp/.AppEntry"
- Может успешно видеть нативный Java-код Android, вызываемый во время выполнения приложением AIR для создания экземпляров расширения и контекста.
"mye_native: MyExtension.initialize", "mye_native: MyExtensionContext.createContext"
- Как только приложение AIR пытается вызвать нативную функцию, оно взрывается и не может найти классы из сторонней библиотеки Android:
E dalvikvm: Could not find class 'com.thirdparty.SomeClass', referenced from method com.me.nativeExtentions.MyExtensionFunction.call
Есть идеи? Кажется, это должно работать так.
Одна вещь, которую я заметил, это то, что, когда я разрываю APK и Dex из моего чистого приложения на Java для Android (у которого также есть сторонние библиотеки Android), кажется, что классы от стороннего производителя были включены в него (не просто ссылка на банку).
Когда я делаю то же самое с моим Flex APK, я нахожу только свои собственные классы Java плюс классы Adobe, и я не могу найти сторонние классы, которые я могу видеть.
Я разместил это на форумах Adobe, но думал, что попробую ТАКОЙ мозговой центр. Спасибо.