Cómo usar la biblioteca de compatibilidad con Renderscript con Gradle


¿Es posible usar la Biblioteca de Renderscript de soporte con Gradle? Si es así, ¿cómo incluirlo en su proyecto?

Author: Austyn Mahoney, 2013-10-29

6 answers

Gradle para Android ahora es compatible con Renderscript v8 con solo 2 líneas en tu script de compilación. Ver respuesta de Austyn Mahoney. Mantener la respuesta original con fines históricos.


Respuesta Antigua:

Gradle admite la compilación RS nativa, pero no la biblioteca de soporte RS. La razón es que la biblioteca de soporte RS es enormemente complicada en comparación con cualquier otra biblioteca de soporte. La biblioteca de soporte RS es en realidad una biblioteca de soporte Java, un conjunto de bibliotecas nativas que respaldan esa lib de Java, bibliotecas nativas adicionales para cada script que compile y una cadena de herramientas alternativa para generar tanto el bitcode LLVM estándar como las bibliotecas nativas para sus scripts. En este momento, solo ADT y Ant soportan eso; Gradle aún no está ahí.

Sin embargo, es posible usar algunas partes de la biblioteca de soporte RS de Gradle ya. Si desea utilizar los intrínsecos RS, puede vincular la parte Java de la biblioteca de soporte (sdk / build-tools / android-4.3/lib/renderscript / renderscript-v8.jar) y los componentes nativos (sdk/build-tools/android-4.3/lib/renderscript/packaged//*.so), y luego se configurará.

Sé que el soporte de Gradle para la biblioteca de soporte llegará en algún momento en un futuro no muy lejano, pero no tengo una ETA firme que pueda compartir.

 15
Author: Tim Murray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:42

Usando Android Studio:

Agregue los siguientes valores a build.gradle para android gradle plugin v0.14+

android {
    ...
    defaultConfig {
        ...
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
    }
    ...
}

Para versiones anteriores del complemento de Android gradle v0. 13. 3 y versiones posteriores

android {
        ...
        defaultConfig {
            ...
            renderscriptTargetApi 19
            renderscriptSupportMode true
        }
        ...
    }

Una vez hecho esto, usa android.support.v8.renderscript. en cualquier lugar de tu app. El jar de la biblioteca y los binarios se incluyen automáticamente.

 120
Author: Austyn Mahoney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-17 14:29:53

Siguiendo la sugerencia de Tim, pude obtener soporte para v8 trabajando con Gradle, aquí está el diseño de mi proyecto:

introduzca la descripción de la imagen aquí

Creé la carpeta libs y copié los archivos que Tim mencionó en la carpeta SDK. Y aquí está mi constitución.cambios en 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'));
    }
}

Después de eso, puedo importar Android.apoyo.v8.renderscript.* y utilizar los intrínsecos.

 6
Author: x.y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-18 04:30:24

Sé que esto ya ha sido respondido, pero pensé en compartir mi experiencia con Android-Studio y el soporte de Renderscript con Build-tools 21.1.0. Esto es lo que encontré en build-system changelog líneas 26-32:

  • Renombró algunas propiedades para hacer las cosas más consistentes.
    • buildType.runProguard - > minifyEnabled
    • buildType.zipAlign - > zipAlignEnabled
    • buildType.jniDebugBuild - > jniDebuggable
    • buildType.renderscriptDebug - > renderscriptDebuggable
    • Sabor del producto.renderscriptSupportMode - > renderscriptSupportModeEnabled
    • Sabor del producto.renderscriptNdkMode - > renderscriptNdkModeEnabled

Como puede ver, han cambiado el nombre de las propiedades. Acabo de actualizar build.gradle para usar:

RenderscriptSupportModeEnabled true

Ahora las bibliotecas se añaden a el proyecto y no es necesario agregarlos manualmente a su carpeta lib.

 2
Author: Joe3112,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-16 13:54:49

Hay soporte experimental en el plugin de Gradle para Android en el momento de escribir este artículo. Vea este proyecto de prueba para más información.

 1
Author: tad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-07 01:35:45

Si alguien está interesado en cómo empaquetar esto como un binario distribuible .jar (por ejemplo, para la implementación de un repositorio maven) puede utilizar esta estructura de archivos para su .frasco.

Estructura general del archivoClases de Java

Pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>android</groupId>
  <artifactId>renderscript</artifactId>
  <version>19.0.3</version>
  <description>Artifactory auto generated POM</description>
</project>

Para construir.gradle, agrega: compile 'android:renderscript:19.0.3' a tu clojure de dependencias.

PD: La biblioteca renderscript no se ejecutará en armv6 (armeabi), así que asegúrese de que Build.CPU_ABI sea armeabi-v7a, mips o x86.

 1
Author: Sveinung Kval Bakken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-09 15:29:37