Я создаю мультиплатформенный SDK для 3D-приложений реального времени.Этот SDK запрограммирован на C ++ и работает под Windows, iOs от Apple, MacOS, Linux и Android.
Структура проекта сложная, она состоит из 3 собственных статических библиотек C ++, связанных с некоторыми внешними статическими библиотеками.общая библиотека.Это очень просто для всех управляемых ОС, кроме Android.
Основная проблема в Android - это двунаправленная связь / вызовы между собственным кодом и кодом Java.Я решил эту проблему некоторое время назад, используя SWIG, чтобы обернуть классы совместно используемой библиотеки.Чтобы добиться этого, я написал свои собственные сценарии сборки (Makefiles) для обработки нативной компиляции с помощью ndk r4, генерации кода swig, предварительной компиляции java и создания jar.
В последнее время мы добавили несколько классов обратного вызова / прослушивателя вСлой C ++, который мы хотели выводить / перегружать в Java, для этого мы использовали функцию директоров SWIG.Но, похоже, ему нужны функции JNI (слабые глобальные ссылки), которых не было в NDK r4b.Поэтому нам нужно переключиться на более новую Android NDK (r6b), которая обладает этими функциями.Но поскольку наши собственные сценарии сборки были написаны для NDK r4b, они больше не будут работать.
Меня беспокоит то, чтобы все было правильно построено с помощью Android NDK / SDK (в конечном итоге с помощью Eclipse) с файлами Android.mk, поэтому мы не будемНе нужно переписывать все с нуля каждый раз, когда мы переключаемся на новый NDK.
Я хотел бы знать, есть ли способ управления такой сложной структурой проекта с помощью стандартных Android.mk, ndk-build, ant и eclipse (включая часть SWIG).И если да, то как?
Не стесняйтесь спрашивать о точности, я не уверен, что я действительно ясен.
Любая помощь очень ценится.
Флоран Лагэй.