带渐变的Android Renderscript

带渐变的Android Renderscript,android,gradle,android-gradle-plugin,renderscript,Android,Gradle,Android Gradle Plugin,Renderscript,我正在构建一个Renderscript处理程序,就我个人而言,我无法通过Gradle让它在姜饼上工作 处理同时使用内部内核和自定义内核 使用renderscriptTargetApi 18和renderscriptSupportMode true以及最新的构建工具buildToolsVersion“19.0.1”和classpath'com.android.tools.build:gradle:0.8.+'和gradle 1.10,它可以很好地编译,并且在ICS+设备上运行良好,但它在姜饼上崩溃

我正在构建一个Renderscript处理程序,就我个人而言,我无法通过Gradle让它在姜饼上工作

处理同时使用内部内核和自定义内核

使用
renderscriptTargetApi 18
renderscriptSupportMode true
以及最新的构建工具
buildToolsVersion“19.0.1”
classpath'com.android.tools.build:gradle:0.8.+'
和gradle 1.10,它可以很好地编译,并且在ICS+设备上运行良好,但它在姜饼上崩溃,堆栈跟踪如下:

 Caused by: android.support.v8.renderscript.RSRuntimeException: Error loading RS jni library: java.lang.UnsatisfiedLinkError: Couldn't load RSSupport: findLibrary returned null
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:945)
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:982)
        at android.support.v8.renderscript.RenderScript.create(RenderScript.java:968)
我还尝试了以下各种版本:

buildToolsVersion
:18.1.1、18.1

类路径
:0.7.+,0.7.1

其中一些需要gradle 1.9才能运行,我对其进行了更改,然后运行并崩溃

我还尝试在我的
build.gradle中包含以下行

dependencies {
    compile files('libs/renderscript-v8.jar')
}

android {

    tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
        pkgTask -> pkgTask.jniFolders = new HashSet<File>();
            pkgTask.jniFolders.add(new File(projectDir, 'libs'));
    }
}
这是最高级别的构建。gradle:

apply plugin: 'android'

android {
    compileSdkVersion 18
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 18
        versionCode 1
        versionName "1.0"
        renderscriptTargetApi 18
        renderscriptSupportMode true
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.8.+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}
那么问题是:


要使它成功编译并在ICS+和Gingerbread上运行,正确的组合是什么?

我不认为这是一个Gradle bug——我认为这是Gingerbread及其以下版本上已知的动态链接问题。尝试将以下内容添加到活动中:

static {
    System.loadLibrary("RSSupport");
    System.loadLibrary("rsjni");
}

您可能需要重新排序这些,我忘记了链接问题的确切性质。

我在Android Studio和Renderscript中遇到了与构建工具21.1.0支持相同的问题。 这是我在构建系统第26-32行中发现的:

  • 重命名了一些属性以使内容更加一致。
    • BuildType.runProguard->minifyEnabled
    • BuildType.zipaling->zipalingEnabled
    • BuildType.jniDebugBuild->jniDebuggable
    • BuildType.renderscriptDebug->renderscriptdebugable
    • ProductFlavor.renderscriptSupportMode->renderscriptSupportModeEnabled
    • ProductFlavor.renderscriptNdkMode->renderscriptNdkModeEnabled
你看,他们更改了属性名称。 我刚刚更新build.gradle以使用:

renderscriptSupportModeEnabled true

现在库已添加到项目中,您无需手动将它们添加到lib文件夹中


希望这能帮助别人,节省一些时间

我认为您必须先加载rsjni,然后再加载RSSupport。我们可以将这些压缩到一个库中,以简化在GB上的构建/运行。谢谢大家,但仍然不起作用。Getting
UnsatifiedLinkError:无法加载rsjni:findLibrary返回null
RSSupport
,具体取决于我首先放置的是哪个。额外信息:我在Nexus5上尝试了同样的方法,它运行良好,这意味着它找到了库,没有问题。我还确保解压.apk并仔细检查,*.so肯定在那里。还有什么想法吗?我还在调查用户,刚刚发现我这里的GB设备是高通公司的MSM7227,这是一款ARMv6处理器,正如你所知道的,我们只有用于armeabi-v7a、mips或x86的库。是否有可能支持ARMv6?我们在支持库中没有支持ARMv6。我想我可以试着在某个时候建造它,看看会发生什么;如果它基本上是有效的,也许我们会支持它。(人们还在运送ARMv6设备吗?我真的很难把这一切弄清楚……)re:如果ppl仍然运送ARMv6设备:那么,为了测试的目的,这里的公司在2013年9月在一家普通的商业街商店购买了一台HTC Wildfire S A510e(ARMv6),我们非正式地称之为劣质设备。所以我猜他们还在超低价市场上。