Со всем новым обманом, поддерживающим встроенную поддержку расширения в 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 Java, который вызывается через среду выполнения 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, но я подумал, что попробую попробовать мозговой центр SO. Спасибо.