Я обновил 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?
Да, это так. версия в source.properties в папках ndk-bundle говорит следующее: Pkg.Desc = Android NDK Pkg.Revision = 17.1.4828580
Как и говорится в ошибке сборки, armeabi больше не поддерживает ABI. Вы можете создавать собственные библиотеки для armeabi-v7a, arm64-v8a, x86 и / или x86_64.
Что касается того, почему происходит сбой, мы, очевидно, не можем сказать, основываясь на доступной информации. Вам нужно будет попробовать отладить свою библиотеку, например начиная с анализа получаемой трассировки стека.
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 FAILEDFAILURE: 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.
Работало ли до обновления ndk и android studio?