相关疑难解决方法(0)

在Android工作室的apk中包含.so库

我正在尝试开发一个简单的Android应用程序,我正在尝试使用sqlcipher,它在内部使用.so库.我已经阅读了有关如何在Android应用程序中使用sqlcipher的文档.我已按照步骤进行编译,没有任何错误.但是,在运行时它会抛出UnsatisfiedLinkError.

谷歌搜索它,我发现,gradle不支持.so库,但我在这里发现了一个我正在尝试使用的黑客.但它会在gist的第40行抛出编译时错误,

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

无法在Project'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) …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio

138
推荐指数
3
解决办法
13万
查看次数

将Skobbler Map添加到我的空App中

我正在尝试用Skobbler建立一个新的项目.我已经集成了SKMaps.jar并将其放入buildpath中.我正在使用带有gradl的AndroidStudio.

现在的问题是:我打电话的那一刻

SKMaps.getInstance().initializeSKMaps(this, initMapSettings, getString(R.string.skobbler_api_key));

它引发了一个例外

android.view.InflateException:二进制XML文件行#44:错误膨胀类com.skobbler.ngx.map.SKMapViewHolder

无法从加载器dalvik.system.PathClassLoader加载ngnative [DexPathList [[zip文件"/data/app/de.aeins.theswap.swap-1.apk"],nativeLibraryDirectories=[/data/app-lib/de. aeins.theswap.swap-1,/ vendor/lib,/ system/lib]]]:findLibrary返回null

我在我的项目根目录中有一个lib文件夹,在单独的文件夹中有SKMaps.jar和3个libngnative.so文件.

知道出了什么问题吗?

android buildpath skmaps

6
推荐指数
1
解决办法
1747
查看次数

将.so(预构建)库从另一个目录添加到APK

我正在尝试从另一个目录包含我的 .so 库。编译我的项目工作正常。但是当我运行它时,它给了我

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip 文件“/data/app/com.company.gimikapp-2/base.apk”],nativeLibraryDirectories=[/data/app/com.company.gimikapp -2/lib/arm、/vendor/lib、/system/lib]]] 找不到“libtheprebuiltlib.so”

我在 SO 中看到的常见解决方案是这样的:

sourceSets {
    main {
        jniLibs.srcDirs = ['src/main/jniLibs']
    }
}
Run Code Online (Sandbox Code Playgroud)

两者都尝试过

jniLibs.srcDirs = ['C:\\svn\\sys_libs']
Run Code Online (Sandbox Code Playgroud)

jniLibs.srcDirs = ['C:/svn/sys_libs']
Run Code Online (Sandbox Code Playgroud)

实际上如何将其指向 Android 项目之外的另一个目录?

这是我的 CMakeList.txt:

cmake_minimum_required(VERSION 3.4.1)
add_library( native-lib
            SHARED
            src/main/cpp/source/native-lib.cpp )
add_library(theprebuiltlib SHARED IMPORTED)
set_target_properties(theprebuiltlib PROPERTIES IMPORTED_LOCATION
            C:/svn/sys_libs/libtheprebuiltlib.so)
target_include_directories(
            native-lib PRIVATE
            src/main/cpp/source/
            C:/svn/sys_includes/)
find_library( log-lib
            log)
target_link_libraries( native-lib
            theprebuiltlib
            ${log-lib})
Run Code Online (Sandbox Code Playgroud)

这是我的 JNI 的 gradle 设置:

android {
    ...
    defaultConfig {
        ...
        externalNativeBuild {
            cmake {
                cppFlags "-frtti -fexceptions"
            }
            ndk { …
Run Code Online (Sandbox Code Playgroud)

android android-ndk

5
推荐指数
1
解决办法
3883
查看次数