我正在try 开发一个简单的Android应用程序,其中我try 使用sqlcipher,它在内部使用.so库.我已经阅读了关于how to use sqlcipher with android app的文档.我已经按照这些步骤进行了编译,没有任何错误.但是,在运行时它抛出UnsatisfiedLinkError.

在谷歌上搜索,我找到了gradle doesn't support .so libraries yet,但我找到了一个我想用的黑客here.但是它在要点上的第40行抛出编译时间错误,

tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
    pkgTask.jniDir new File(buildDir, 'native-libs')
}

在项目‘MyProject’上找不到属性‘COM’

在这里,我发布了我的构建代码.格雷德尔档案.

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')
}

有没有人能帮我指出我做错了什么,或者我应该怎么做才能把这些库包含在我的APK中?

由于我是Android开发和Gradle的新手,如果我误解了什么,请向我道歉.

推荐答案

我也有同样的问题.查看https://gist.github.com/khernyo/4226923#comment-812526中的 comments

上面写着:

对于Gradle Android插件v0.3,请使用"com.android.build.gradle.tasks.PackageApplication"

那应该可以解决你的问题了.

Android相关问答推荐

如何使禁用状态下的material 3按钮与启用状态下的 colored颜色 相同?

AdMob:MobileAds. initialize()—java. lang. xml对于某些设备不能强制转换为java. lang. String""

对支持哪些数据存储区方法感到困惑

在本地通知中设置自定义声音

修复报错 RecyclerView: No adapter attached;跳过布局

DatePickerDialog (Android/Kotlin) 的两个问题

如何在 React Native 中调试网络响应

每次在 Jetpack Compose 中调用导航

每次在 Jetpack Compose 中调用导航

如何使用 Jetpack Compose 在图像上叠加文本

ImageBitmap 使用 Glide/Coil 到画布

Android Studio 错误要求依赖它的库和应用程序针对 Android API 的 33 版或更高版本进行编译.

对话框中的内容不可见

Android Compose webview 被拉伸

如果我在网络请求中指定它们是否与判断网络功能相关

Android Studio,Db 连接错误:发生异常情况导致驱动程序失败.请报告此异常

未解决的参考:getIntentSender / try 在 Jetpack Compose 中获取电话号码时

如何使在库范围之外无法访问的接口的具体实现.?

AndroidX Room 生成类错误:类是公共的,应在名为 class.java 的文件中声明

如何将私有 mutableStateOf 分配给 Android Jetpack 中的 State 变量?