LINUX.ORG.RU

Как собрать SO для android из исходников с github (NDK)?

 ,


0

1

Есть ли простая инструкция для начинающих? Вот скачал я с github zip-архив, распаковал, внутри файл Android.mk Какие пакеты установить в систему и что запустить, чтобы на выходе получился файл .SO Ссылка на гитхаб: https://github.com/4x11/SAMP-Android

Ответ на: комментарий от Kronka

Там в проекте ещё зависимость от библиотеки imgui, которой нет в комплекте. Спроси у авторов этого проекта где её взять и я напишу тебе инструкцию.

EXL ★★★★★ ()
Ответ на: комментарий от Kronka

Инструкция

1. Заходишь на страницу загрузки старых версий Android NDK, соглашаешься с условиями:

https://developer.android.com/ndk/downloads/older_releases

2. Скачиваешь оттуда Android NDK r10e, прямая ссылка:

https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip

3. Устанавливаешь, например, в директорию /opt/ следующим образом:

$ sudo unzip android-ndk-r10e-linux-x86_64.zip -d /opt/
$ sudo chown `whoami`:`id -g -n` -R /opt/android-ndk-r10e/

4. В любой удобной тебе директории, например, ~/Build выполняешь следующий рецепт для сборки библиотеки:

$ mkdir -p SAMP/src/
$ cd SAMP/
$ git clone https://github.com/ocornut/imgui --depth=1 -b v1.53
$ cd src/
$ git cl https://github.com/4x11/SAMP-Android --depth=1 -b master jni/
$ V=1 /opt/android-ndk-r10e/ndk-build

5. Из SAMP/src/libs/armeabi-v7a забираешь готовую libsamp.so библиотеку.

6. Profit!

P.S. в диструбутиве необходимы установленные пакеты с git и make (обычно находится в build-essentials).

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 2)
Ответ на: комментарий от Kronka

Cygwin не требуется вообще. Если необходимо собрать проект на MS Windows, то точно так же скачиваешь git и Android NDK для MS Windows и точно так же в cmd.exe набираешь виндовые аналоги команд из инструкции, например, вместо ndk-build будет ndk-build.cmd и т. д.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

У меня тут такая проблема, краш при загрузке игры, что посоветуете в таком случае делать? (logcat adb)

I/AXL (18381): Loading main.scm

I/AXL (18381): File handle: 0x9DF48D60

I/AXL (18381): Loading main.scm

I/AXL (18381): File handle: 0x9DF48D60

I/AXL (18381): Loading main.scm

I/AXL (18381): File handle: 0x9DF48DB4

I/AXL (18381): bytes_per_pixel: 512, 1024, 4

D/NVEvent (18381): android_sigaction signal 11 (1 0 11)

F/libc (18381): Fatal signal 11 (SIGSEGV), code 1, fault addr 0xcd400154 in tid 18425 (MainThread)

I/DEBUG ( 190): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG ( 190): Build fingerprint: 'samsung/j3xltejt/j3xlte:5.1.1/LMY47V/J320F----:user/release-keys'

I/DEBUG ( 190): Revision: '5'

I/DEBUG ( 190): ABI: 'arm'

I/DEBUG ( 190): pid: 18381, tid: 18425, name: MainThread >>> com.rockstargames.gtasa <<<

I/DEBUG ( 190): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xcd400154

I/DEBUG ( 190): r0 9a779080 r1 9e261db0 r2 ffffffff r3 9a778cc0

I/DEBUG ( 190): r4 98a49000 r5 00000006 r6 cd400040 r7 a2a90f13

I/DEBUG ( 190): r8 9e261c50 r9 000015b3 sl 00000000 fp 00000500

I/DEBUG ( 190): ip b6da87cc sp 9e261c00 lr b6d89fcd pc a29fe472 cpsr 80030030

I/DEBUG ( 190):

I/DEBUG ( 190): backtrace:

I/DEBUG ( 190): #00 pc 00033472 /data/app/com.rockstargames.gtasa-2/lib/arm/libsamp.so (_ZN7RakPeerC2Ev+277)

I/DEBUG ( 190): #01 pc 00030c49 /data/app/com.rockstargames.gtasa-2/lib/arm/libsamp.so (_ZN9RakClientC2Ev+4)

I/DEBUG ( 190): #02 pc 00032625 /data/app/com.rockstargames.gtasa-2/lib/arm/libsamp.so (_ZN17RakNetworkFactory21GetRakClientInterfaceEv+12)

I/DEBUG ( 190): #03 pc 0004b731 /data/app/com.rockstargames.gtasa-2/lib/arm/libsamp.so (_ZN8CNetGameC1EPciS0_S0_+168)

I/DEBUG ( 190): #04 pc 0002b11b /data/app/com.rockstargames.gtasa-2/lib/arm/libsamp.so (_Z11DoInitStuffv+90)

I/DEBUG ( 190): #05 pc 00048d73 /data/app/com.rockstargames.gtasa-2/lib/arm/libsamp.so (_Z18Render2dStuff_hookv+2)

I/DEBUG ( 190): #06 pc 00001399 /data/app/com.rockstargames.gtasa-2/lib/arm/libGTASA.so

Kronka ()
Ответ на: комментарий от Kronka
$ echo '_ZN7RakPeerC2Ev' | /opt/android-sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-c++filt 
RakPeer::RakPeer()

Проблема где-то в этом конструкторе. Это уже к авторам этого проекта с Backtrace'ом обращайся.

EXL ★★★★★ ()