У меня есть собственный плагин Android, который я использую в Unity3d, теперь необходимо создать 64-битный пакет Android. Я хочу включить как 32-битные, так и 64-битные в одном пакете.
Я изменил Application.mk для сборки 4 плагинов
Application.mk выглядит так:
APP_OPTIM := release
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_PLATFORM := android-8
APP_BUILD_SCRIPT := Android.mk
мой сборочный плагин.ш выглядит так:
#!/bin/sh
echo ""
echo "Compiling NativeCode.c..."
ANDROID_NDK_ROOT="/myapps/Android/android-ndk-r13b"
$ANDROID_NDK_ROOT/ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk $*
mv libs/armeabi-v7a/libnative.so ../libnative1.so
mv libs/arm64-v8a/libnative.so ../libnative2.so
mv libs/x86/libnative.so ../libnative3.so
mv libs/x86_64/libnative.so ../libnative4.so
echo ""
echo "Cleaning up / removing build folders..." #optional..
rm -rf libs
rm -rf obj
echo ""
echo "Done!"
Мой код плагина NativeCode.c очень прост и выглядит так:
#include <stdio.h>
#include <android/log.h>
#include <string.h>
void QDebug(const char *str)
{
__android_log_write(ANDROID_LOG_INFO, "QED", str);
}
Когда я запускаю файл .sh, он создает 4 файла zlibnative.so, предположительно по одному для каждой целевой платформы. У меня вопрос, как мне включить все 4 в каталог плагинов Unity3d, чтобы пакет Unity использовал правильную версию.
Я получаю ошибку:
DllNotFoundException: родной
06-07 18: 13: 07.617 29585 29608 E Unity: at (обертка, управляемая в нативный) D: QDebug (строка)
06-07 18: 13: 07.617 29585 29608 E Unity: в D.logx (формат System.String, System.Object [] paramList) [0x00000] в: 0
06-07 18: 13: 07.617 29585 29608 E Unity: at Sounds.Awake () [0x00000] in: 0
Когда я собираю только 32-битную версию и у меня есть только один Libnative.so в каталоге плагинов, все работает правильно.