我正在尝试开发一个简单的 android 应用程序,我在其中尝试使用sqlcipher,它在内部使用 .so 库。我已阅读有关如何将 sqlcipher 与 android app 一起使用的文档。我已经按照这些步骤进行了编译,并且没有任何错误。但是,在运行时它会抛出UnsatisfiedLinkError
.
谷歌搜索,我发现gradle 还不支持 .so 库,但我在这里找到了一个我正在尝试使用的 hack 。但它会在要点的第 40 行抛出编译时错误,即,
tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
pkgTask.jniDir new File(buildDir, 'native-libs')
}
说
在项目“MyProject”上找不到属性“com”
在这里,我从我的 build.gradle 文件中发布代码。
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
compile files('libs/commons-codec.jar')
compile files('libs/guava-r09.jar')
compile files('libs/sqlcipher.jar')
}
targetCompatibility = 1.6
sourceCompatibility = 1.6
android {
target = 'android-14'
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 9
targetSdkVersion 16
}
}
task copyNativeLibs(type: Copy) {
from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }
into new File(buildDir, 'native-libs')
}
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
pkgTask.jniDir new File(buildDir, 'native-libs')
}
可以,任何人都可以帮助我解决我做错了什么,或者我应该怎么做才能将这些 .so 库包含在我的 apk 中?
由于我是 android 开发和 gradle 的新手,如果我误解了什么,请向我道歉。