Ошибка Android NDK - Fatal signal 11 (SIGSEGV) Android Studio 3.1.3

Я обновил Android Studio до 3.1.3, Еще я обновил ndk с 15 до 17 ревизии

Я изменил содержимое ниже в Application.mk снизу

APP_ABI := armeabi
APP_PLATFORM := android-17

к

APP_ABI := armeabi-v7a
APP_PLATFORM := android-17

но теперь я начал получать следующую ошибку:

  --------- beginning of crash
08-09 14:16:01.783 17582-17582/com.my.app A/libc: Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9eed9b60 in tid 17582 (.my.app)
08-09 14:16:01.848 17602-17602/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-09 14:16:01.849 17602-17602/? A/DEBUG: Build fingerprint: 'motorola/potter_n/potter_n:7.0/NPN25.137-67-5/6:user/release-keys'
    Revision: 'p3b0'
    ABI: 'arm'
    pid: 17582, tid: 17582, name: .my.app  >>> com.my.app <<<
    signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x9eed9b60
        r0 00000000  r1 00001000  r2 00000003  r3 00000003
        r4 00001000  r5 00000005  r6 9eed9000  r7 9eed9a28
        r8 a87f6050  r9 be997688  sl a5fb2000  fp be9974e8
        ip 9eed9a28  sp be9974a8  lr 9eed9b60  pc 9eed9b60  cpsr 000f0010
08-09 14:16:01.850 17602-17602/? A/DEBUG: backtrace:
        #00 pc 00000b60  /data/app/com.my.app-1/lib/arm/libmyApp.so (offset 0x5000)

Какие могут быть возможные проблемы. В моем приложении используется собственная библиотека, созданная отдельно. Сборка NDK прекращена и поддерживается только сборка CMake?

******ОБНОВИТЬ******************************************* *********

Собственная библиотека, используемая при компиляции, дает следующую ошибку

Configuration on demand is an incubating feature.
Incremental java compilation is an incubating feature.
:buildNative
Android NDK: The armeabi ABI is no longer supported. Use armeabi-v7a.    
Android NDK: NDK Application 'local' targets unknown ABI(s): armeabi    
Android NDK: Please fix the APP_ABI definition in <location to JNI library sources>/jni/Application.mk    
make: Entering directory `<location to JNI library sources>/jni'
make: Leaving directory `<location to JNI library sources>/jni'
C:<sdk-location>/sdk/ndk-bundle/build//../build/core/setup-app.mk:79: *** Android NDK: Aborting    .  Stop.
:buildNative FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildNative'.
> Process 'command 'C:<sdk-location>\AppData\Local\Android\Sdk\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2

build.gradle библиотеки:

android {
     compileSdkVersion 25
     buildToolsVersion "25.0.0"

     defaultConfig {
         minSdkVersion 18
         targetSdkVersion 21
         versionName  "2"

         ndk {
             moduleName "jniLibrary"
         }
    }
}     

Application.mk, как показано ниже:

APP_ABI := armeabi
APP_PLATFORM := android-18

Нужно ли мне импортировать собственный код в систему сборки CMake?

Работало ли до обновления ndk и android studio?

Reaz Murshed 09.08.2018 11:38

Да, это так. версия в source.properties в папках ndk-bundle говорит следующее: Pkg.Desc = Android NDK Pkg.Revision = 17.1.4828580

Raulp 09.08.2018 11:42

Как и говорится в ошибке сборки, armeabi больше не поддерживает ABI. Вы можете создавать собственные библиотеки для armeabi-v7a, arm64-v8a, x86 и / или x86_64.

Michael 09.08.2018 12:02

Что касается того, почему происходит сбой, мы, очевидно, не можем сказать, основываясь на доступной информации. Вам нужно будет попробовать отладить свою библиотеку, например начиная с анализа получаемой трассировки стека.

Michael 09.08.2018 12:05
1
4
890
2

Ответы 2

APP_PLATFORM := android-17

Эта переменная APP_PLATFORM содержит минимальную версию платформы Android, которую вы хотите поддерживать, но это НЕТ - версия NDK, которую вы используете для создания общих библиотек.

What could be the possible issues. My app uses the native library which is built seperately. Is the NDK building discontinued and build by CMake is supported only?

Из журналов ошибок

08-09 14:16:01.783 17582-17582/com.my.app A/libc: Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9eed9b60 in tid 17582 (.my.app)

Ваше приложение упало в вашей библиотеке libc из-за доступа к недопустимому адресу. например исключение нулевого указателя. Вы можете исследовать свой код везде, где есть ссылки на функции libc, например strlen, strcpy, memcpy и др.

Android NDK: The armeabi ABI is no longer supported. Use armeabi-v7a.
Android NDK: NDK Application 'local' targets unknown ABI(s): armeabi
Android NDK: Please fix the APP_ABI definition in /jni/Application.mk
make: Entering directory <location to JNI library sources>/jni' make: Leaving directory/jni' C:/sdk/ndk-bundle/build//../build/core/setup-app.mk:79: *** Android NDK: Aborting . Stop. :buildNative FAILED

FAILURE: Build failed with an exception.

armeabi устарел в r16 и удален в r17, поэтому вам нужно использовать старую версию NDK, например. ndk-16b или более ранние версии (https://developer.android.com/ndk/downloads/older_releases) для создания общих библиотек armeabi.

Do I have to import my native code to CMake build system?

Вы не обязаны. Но использовать CMake вместо ndk-build - это рекомендуемые.

Спасибо за комментарии. Я выяснил причину. Я зашифровывал сформированный .so, и путь, который я указал для .so, был из папки armeabi. Я уже заменил armeabi на armeabi-v7a в applicationatin.mk, но не на имя папки в сборке, gradle. У SIGSEGV может быть несколько причин, это была одна из них, поскольку приложение связывало старую библиотеку armeabi вместо armeabi-v7a.

Другие вопросы по теме