Я пытаюсь скомпилировать исходный код C JnetPcap , чтобы создать библиотеку .so
для Android arm64-v8a , на самом деле у меня есть библиотека .so
для armeabi , которая работает хорошо, но теперь Google Play больше не допускает загрузку приложений с 32-битным кодом (если только не поставляется с его 64-битной версией тоже), поэтому я попытался скомпилировать исходный код длясебя.Я загрузил код sorce из здесь , а также из здесь (поскольку главная страница Sly Technologies не работает) и добавил в свой проект Android Studio с CMake с правильной конфигурацией:
CMakeList.txt (в корневом каталоге проекта)
cmake_minimum_required(VERSION 3.4.1)
add_library( # Specifies the name of the library.
jnetpcap
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
app/src/main/cpp/jnetpcap.cpp )
include_directories(app/src/main/cpp/libpcap-1.9.0)
build.gradle
android {
...
compileSdkVersion 28
flavorDimensions 'default'
defaultConfig {
applicationId "${id}"
minSdkVersion minSdk
targetSdkVersion targetSdk
versionCode vc * 1
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
ndk.abiFilters 'armeabi-v7a','arm64-v8a'
}
...
externalNativeBuild {
cmake {
path file('../CMakeLists.txt')
}
}
}
В моем cpp *В каталог 1028 * Я поместил исходный код и библиотеку libpcap-1.9.0
, но по какой-то причине исходный код выглядит неполным, потому что при запуске приложения я получаю ошибки, которые указывают на некоторые библиотеки .h
, которые несуществуют (например, org_jnetpcap_packet_JScanner.h
, org_jnetpcap_packet_JRegistry.h
и т. д.) Я не знаю, генерируются ли эти библиотеки автоматически одним и тем же кодом или что, или, может быть, я неправильно настраиваю конфигурации.
Я действительноМне нужна помощь по этой проблеме, мое приложение зависит от библиотеки JnetPcap , и я не могу загрузить ее в Google Play.Любое предложение?