【问题标题】:Android Studio: generating .so files using experimental pluginAndroid Studio:使用实验插件生成 .so 文件
【发布时间】:2016-01-19 09:27:10
【问题描述】:

我在 AS 中有一个带有本机库的项目。我正在尝试使用实验性插件(gradle-experimental:0.6.0-alpha5)来获取.so文件(稍后在System.loadLibrary()中使用它。但我无法生成它们。我真的不能明白,为什么?

我已经使用这个instruction 来编写我的 build.gradle。就是这样:

apply plugin: "com.android.model.application"
model {  
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.camera.simplewebcam"
    minSdkVersion.apiLevel 15
    targetSdkVersion.apiLevel 22

    buildConfigFields {
        create() {
            type "int"
            name "VALUE"
            value "1"
        }
    }

    ndk {
        moduleName "ImageProc"
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles.add(file("proguard-rules.pro"))
    }
}

// Configures source set directory.
sources {
    main {
        jni {
          source {
                srcDir "src/main"
            }
        }
    }
}
productFlavors {
    create("arm") {
        ndk {   
            abiFilters.add("armeabi-v7a")
        }
    }
    create("fat") {           
    }

}
}


dependencies {
    compile fileTree(dir: "lib", include: ['.jar','.so'])
    compile "com.android.support:appcompat-v7:23.+"
}

我在尝试运行应用程序时遇到的错误:

java.lang.UnsatisfiedLinkError: 无法从加载器 dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.camera.simplewebcam-1.apk"],nativeLibraryDirectories=[/data 加载 ImageProc /app-lib/com.camera.simplewebcam-1、/vendor/lib、/system/lib、/system/lib/arm]]]:findLibrary 返回 null

这是我的项目结构:

这是我的 Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := ImageProc
LOCAL_SRC_FILES := ImageProc.c
LOCAL_LDLIBS    := -llog -ljnigraphics

include $(BUILD_SHARED_LIBRARY)

这是我的 Application.mk:

# The ARMv7 is significanly faster due to the use of the hardware FPU
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-8

我的错误在哪里?

【问题讨论】:

  • 设置compile "com.android.support:appcompat-v7:23.0.1
  • targetSdkVersion.apiLevel 23
  • 感谢您的回复!在我看来它正在工作!

标签: java android android-ndk shared-libraries gradle-experimental


【解决方案1】:

问题在这里targetSdkVersion.apiLevel 22

一个整数,指定应用程序所针对的 API 级别。如果 未设置,默认值等于给 minSdkVersion 的值。这 属性通知系统您已针对目标进行了测试 版本和系统不应启用任何兼容性行为 保持您的应用程序与目标版本的前向兼容性。 该应用程序仍然能够在旧版本上运行(低至 minSdkVersion)。

targetSdkVersion.apiLevel 23

你应该使用

compile "com.android.support:appcompat-v7:23.0.1

【讨论】:

    猜你喜欢
    • 2015-12-03
    • 2015-03-02
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多