Как сгенерировать libpjsua2.so для x86 abi в jnilibs

Я хочу протестировать приложение с Android 10 в эмуляторе. Для этого у меня есть только «armeabi», «armeabi-v7a», «arm64-v8a» в jnilibs. Но для запуска приложения с устройством Android 10 (эмулятором) требуется x86 abi. Итак, для этого я сначала скачал ndk для x86. А во-вторых, я хочу сгенерировать libpjsua2.so для x86 abi. Я использую библиотеку pjsip. Я ссылался на https://trac.pjsip.org/repos/wiki/Getting-Started/Android. Что я пробовал: 1) Скачал последнюю версию pjsip и извлек в папку. 2) Выполните шаги, указанные на веб-сайте pjsip, как показано ниже,

$ cd /path/to/your/pjsip/dir
$ export ANDROID_NDK_ROOT=/path_to_android_ndk_dir 
$ ./configure-android
$ make dep && make clean && make
$ cd /path/to/your/pjsip/dir
$ make clean

# cleanup pjsua sample app
$ cd pjsip-apps/src/pjsua/android/jni
$ make clean

# also cleanup pjsua2 sample app (SWIG)
$ cd /path/to/your/pjsip/dir
$ cd pjsip-apps/src/swig
$ make clean
$ cd pjsip-apps/src/swig
$ make clean
TARGET_ABI=x86 ./configure-android --use-ndk-cflags

Получил ошибку при достижении кода выше,

LDFLAGS =  --sysroot= -L/libs/x86/
 LIBS = -lgnustl_static  -lc -lgcc -ldl
 AR = /home/Android/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
 RANLIB = /home/Android/android-ndk-r21b/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
 TARGET_HOST = llvm-linux-android
 TARGET_ABI = x86
checking build system type... x86_64-unknown-linux-gnu
checking host system type... Invalid configuration `llvm-linux-android': machine `llvm' not recognized
aconfigure: error: /bin/sh ./config.sub llvm-linux-android failed

В моей папке pjsip2.7 я нашел папку с именем llvm, но это пустая папка. Я не знаю, что это. Я использую Cent OS 7. Почему я получаю эту ошибку? Что мне нужно сделать, чтобы преодолеть это.


person Kousalya    schedule 07.05.2020    source источник
comment
Но это не удалось. - по крайней мере, процитируйте полное сообщение об ошибке, чтобы сделать какой-то минимально воспроизводимый пример .   -  person Peter Cordes    schedule 25.05.2020
comment
@PeterCordes Я добавил свой код ошибки.   -  person Kousalya    schedule 28.05.2020


Ответы (1)


Попробуйте скомпилировать с помощью этого компоновщика

замените в ./config.cong, который вы используете 2.10

# PJSIP Version to download
PJSIP_VERSION=2.10
./prepare-build-system

а потом

./build
person Евгений Куманин    schedule 29.05.2020
comment
Я использую pjsip версии 2.7 в своем проекте. Так что мне нужно загрузить zip-файл той же версии, чтобы сгенерировать libpjsua2.so для x86 - person Kousalya; 29.05.2020
comment
@Kousalya да, есть разные имена методов, и вы получите сбои в своем приложении. - person Евгений Куманин; 29.05.2020
comment
Спасибо. Я скачал pjsip 2.7 и распаковал файлы. Открыл каталог pjsip в терминале и использовал команду ниже, export ANDROID_NDK_ROOT=/home/nexge/Android/android-ndk-r21b NDK_TOOLCHAIN_VERSION=4.9 TARGET_ABI=x86 ./configure-android --use-ndk-cflags Но я получил ошибку, как показано ниже checking build system type... x86_64-unknown-linux-gnu checking host system type... Invalid configuration `llvm-linux-android': machine `llvm' not recognized aconfigure: error: /bin/sh ./config.sub llvm-linux-android failed - person Kousalya; 29.05.2020
comment
ты имеешь представление об этом - person Kousalya; 29.05.2020
comment
@Kousalya Я столкнулся с этой проблемой. пока не нашел этого застройщика. Я собираю снова с версией 2.7 yadi.sk/d/-JXS7VoIOOhCUg - person Евгений Куманин; 01.06.2020
comment
Спасибо тебе большое за это. Я использовал это в своем проекте. При запуске приложения я получил исключение ``` java.lang.NoSuchMethodError: нет статического метода Lorg/pjsip/pjsua2/pjsua2JNI;.SwigDirector_Endpoint_onIpChangeProgress(Lorg/pjsip/pjsua2/Endpoint;J)V``` - person Kousalya; 01.06.2020
comment
@Kousalya Вы используете java/org/pjsip/pjsua2 классы из архива? - person Евгений Куманин; 02.06.2020
comment
'нет статического метода' - означает, что у вас нет этого метода в вашей версии java-пакета org.pjsip.pjsua2, возможно, из-за разницы в версиях файла *.so и java-обертки - person Евгений Куманин; 02.06.2020
comment
Я скачал файл .so для x86, упомянутый здесь yadi.sk/d/-JXS7VoIOOhCUg в моем проекте используется pjsip 2.7. Этот файл .so на этом веб-сайте имеет другую версию pjsip? - person Kousalya; 02.06.2020
comment
Также я нашел пустую папку с именем llvm в папке pjsip2.7. Поэтому мне интересно, что может быть причиной ошибки, о которой я уже упоминал в отношении llvm. - person Kousalya; 02.06.2020