当前位置: 首页 > 知识库问答 >
问题:

Android Studio:使用实验插件生成. so文件

查飞星
2023-03-14

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

我用这个指令编写了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.无法从加载器加载ImageProcdalvik.system.PathClassLoader[DexPathList[[zip file"/data/app/com.camera.simplewebcam-1.apk"], nativeLibraryDirectory=[/data/app-lib/com.camera.simplewebcam-1, /vendor/lib, /system/lib, /system/lib/arm]]]: findLibrary返回null

这是我的ndroid.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)

这是我的pplication.mk:

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

我的错误在哪里?

共有1个答案

景鹏云
2023-03-14

问题在这里。apiLevel 22

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

targetSdkVersion.apiLevel 23

你应该使用

compile "com.android.support:appcompat-v7:23.0.1
 类似资料:
  • 我正在为初级操作系统Luna上的Scratch文本编辑器应用程序编写一个扩展。但是对于扩展的创建,文档实际上是不存在的,我不知道在编写了扩展的主要代码之后如何继续。 我已经写了扩展名。我还不能使用或测试它,因为它需要“安装”。我花了几个小时寻找文档,但它们不存在。然而,我在scratchlaunchpad页面上找到了一条评论 通常,您必须生成一个pluginname.so文件,并将其与plugin

  • 下面是我的cmakelists.txt文件 cmake_minimum_required(版本3.4.1) find_library(log-lib日志) target_link_libraries(native-lib${log-lib}) 我在中指定了,,因为我想要一个共享的对象库。 但它没有给我so文件。 我错过了什么?

  • 一直以来不会使用C++一直是我心头痛,不过学习Go从某种意义上补偿了我这个遗憾。 比如生成dll一直以来几乎就是C和C++的专利,现在我可以用Go轻松的实现这一点。 下面我使用一个实例来做到这一点,这个是我写的判断jpeg图是不是正向的一个Go的函数 package main import "C" import ( "fmt" "os" SunnyUtil "githu

  • 我试图为Linux动态库(.so文件)创建一个hello world项目。所以我有一个文件HELLO.C: 如何从命令行使用gcc创建导出的.so文件?

  • 默认情况下,maven publish插件为所有工件生成MD5和SHA1校验和文件。但是有没有办法让插件生成安全的校验和文件(最好是SHA512)? 这很容易重现。我刚刚初始化了一个新的项目并添加了插件及其配置 建筑格拉德尔: 我已经咨询了gradle留档和javadoc,但根本找不到校验和文件的任何提示。我知道我可以使用像这样的ANT校验和任务很容易地为工件生成校验和 但我需要“手动”将它们放在

  • 不幸的是,SpringFox还不支持OpenAPI3,而且,当我只想将最初的yaml公开为JSON时,使用基于反射的生成器似乎毫无意义。