【发布时间】:2016-08-08 15:12:08
【问题描述】:
我正在 android 中创建一个 jni 函数来使用 BoringSSL 生成文件 checkSum。
所以我将boringssl构建到共享库中,以便在Android studio中使用Prebuilt Library。
我将 *.so 文件复制到我的项目 src/main/jniLibs/lib 和 BoringSSL 包含文件夹到 src/main/jni
我引用了这个项目并应用到我的项目中。
https://github.com/googlesamples/android-ndk/tree/master/hello-libs
我的 build.gradle 文件是这样的。 我正在使用 gradle-experimental:0.7.0( 和 Window10, Android Studio 2.1.2 )
apply plugin: 'com.android.model.application'
model {
repositories {
libs(PrebuiltLibraries) {
boringssl {
headers.srcDir "src/main/jni/include/openssl"
binaries.withType(SharedLibraryBinary) {
sharedLibraryFile = file("src/main/jniLibs/lib/libcrypto.so")
sharedLibraryFile = file("src/main/jniLibs/lib/libssl.so")
}
}
}
}
android {
compileSdkVersion = 24
buildToolsVersion = '24.0.1'
defaultConfig {
applicationId = 'yein.a'
minSdkVersion.apiLevel = 19
targetSdkVersion.apiLevel = 24
versionCode = 1
versionName = '1.0'
}
ndk {
moduleName = 'hello-libs'
ldLibs.addAll(['android', 'log'])
}
sources {
main {
jni {
dependencies {
library 'boringssl' linkage 'shared'
}
}
jniLibs{
source{
srcDir "src/main/jniLibs/lib"
}
}
}
}
productFlavors{
create("arm"){
ndk.abiFilters.add("armeabi-v7a")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles.add(file('proguard-android.txt'))
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.1.1'
}
这是我的项目结构。
我认为我正确应用了示例项目,因为它没有发生 gradle sync 错误。
当我使用 MD5 函数时,Android Studio 自动完成函数名称是这样的。
我在google、github上搜索了很多项目,当然还有stackoverflow以前的答案,但我仍然没有解决我的问题。
我尝试更改 gradle 版本,但其他 gradle 版本在自动生成的 jni 函数中出现错误,除了 gradle-experimental:0.7.0。
谁能指出我正确的方向甚至解决方案?
感谢您阅读我的问题。
【问题讨论】:
-
嗨@심예인 我也有和你一样的问题。你解决了吗?你能为我分享你的简单示例项目吗?谢谢。
-
嗨 @PhanSinh 我刚刚把我的源代码放在 Github link 这个项目是获取我的 APK 文件的 md5 值。几个月前我写了这段代码。几个月前,它工作正常,但我不确定它是否仍然工作正常。我希望这段代码对你有帮助:)
-
非常感谢@심예인。我正在使用 OpenSSl for AES 来加密我的数据。但现在我发现 Google 使用 BoringSSL 代替 Android 6 中的 OpenSSl。你知道吗?你使用过 BoringSSL 吗?
-
@PhanSinh 是的,我构建了 BoringSSL 库并应用了我的项目。我在评论中留下了我的 github 存储库,这是我使用 BoringSSL 工作的示例!
-
如何构建包含 openssl 库?我参考了本指南wiki.openssl.org/index.php/Android,但它不起作用。你有脸书或Skype吗?我可以问你更多吗?
标签: android gradle android-ndk java-native-interface boringssl