我想在我的项目中包含openssl。我从this example复制了库,但是我收到了上面提到的错误。我在cmake中链接如下
target_link_libraries( # Specifies the target library.
native-lib
${CMAKE_CURRENT_SOURCE_DIR}/openssl-armeabi-v7a/lib/libcrypto.a
${CMAKE_CURRENT_SOURCE_DIR}/openssl-armeabi-v7a/lib/libssl.a
# Links the target library to the log library
# included in the NDK.
${log-lib} )
我没有得到我做错的地方?或者在项目中包含openssl是错误的方法。
build.graddle在这里
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.manvish.rsa"
minSdkVersion 14
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11 -frtti -fexceptions"
}
}
ndk {
abiFilters "x86", "armeabi-v7a", "armeabi"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
答案 0 :(得分:0)
您的 cmake 脚本必须动态选择ABI。 Android Studio会将其提供为-DANDROID_ABI=armeabi-v7a
,等。
target_link_libraries( # Specifies the target library.
native-lib
${CMAKE_CURRENT_SOURCE_DIR}/openssl-${ANDROID_ABI}/lib/libcrypto.a
${CMAKE_CURRENT_SOURCE_DIR}/openssl-${ANDROID_ABI}/lib/libssl.a
# Links the target library to the log library
# included in the NDK.
${log-lib} )
并且不要删除 abiFilters !也许,你可以删除armeabi
:今天很少有设备需要它。根据{{3}},2017年3月,他们看到98.1% armeabi-v7a 设备和1.7% x86 设备。其余的都是0.2%。