Как использовать библиотеку поддержки Renderscript с помощью Gradle

Можно ли использовать Support Renderscript Library с помощью Gradle? Если да, как вы включаете его в свой проект?

Ответ 1

Gradle для Android теперь поддерживается поддержка Renderscript v8 только с двумя строками в вашей сборке script. См. ответ Аустин Махони. Сохранение первоначального ответа для исторической цели.


Старый ответ:

Gradle поддерживает встроенную компиляцию RS, но не библиотеку поддержки RS. Причина в том, что библиотека поддержки RS чрезвычайно сложна по сравнению с любой другой библиотекой поддержки. Библиотека поддержки RS на самом деле представляет собой библиотеку поддержки Java, набор собственных библиотек, поддерживающих Java lib, дополнительные собственные библиотеки для каждой компиляции script и альтернативную инструментальную цепочку для генерации как стандартного битового кода LLVM, так и собственных библиотек для ваших скриптов, Прямо сейчас поддерживаются только ADT и Ant; Gradle еще не существует.

Однако, возможно уже использовать некоторые части библиотеки поддержки RS из Gradle. Если вы хотите использовать внутренние интерфейсы RS, вы можете связать Java-часть библиотеки поддержки (sdk/build-tools/android-4.3/lib/renderscript/renderscript-v8.jar) и собственные компоненты (sdk/build-tools/android-4.3/lib/renderscript/packaged/<arch> /*. so), а затем вы будете установлены.

Я знаю, что поддержка библиотеки поддержки идет в какой-то момент в не слишком отдаленном будущем, но у меня нет твердой ETA, которую я могу предоставить.

Ответ 2

Использование Android Studio:

Добавьте следующие значения в build.gradle для android gradle плагин v0.14 +

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

Для старых версий плагина android gradle v0.13.3 и ниже

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

Как только это будет сделано, используйте android.support.v8.renderscript. в любом месте приложения. Библиотека jar и двоичные файлы включаются автоматически.

Ответ 3

Следуя подсказке Тима, я смог получить поддержку v8 с Gradle, вот мой макет проекта:

enter image description here

Я создал папку libs и скопировал файлы Tim, упомянутые в папке SDK. И вот мои изменения 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'));
    }
}

После этого я могу импортировать файл android.support.v8.rderscript. * и использовать встроенные функции.

Ответ 4

Я знаю, что это уже ответили, но я решил поделиться своим опытом с поддержкой Android-Studio и RendersScript с помощью Build-tools 21.1.0. Это то, что я нашел в build-system changelog строки 26-32:

  • Переименовано несколько свойств, чтобы сделать вещи более согласованными.
    • BuildType.runProguard → minifyEnabled
    • BuildType.zipAlign → zipAlignEnabled
    • BuildType.jniDebugBuild → jniDebuggable
    • BuildType.renderscriptDebug → renderscriptDebuggable
    • ProductFlavor.renderscriptSupportMode → renderscriptSupportModeEnabled
    • ProductFlavor.rderscriptNdkMode → renderscriptNdkModeEnabled

Итак, вы видите, что они изменили имя свойства. Я просто обновил build.gradle, чтобы использовать:

renderscriptSupportModeEnabled true

Теперь библиотеки добавляются в проект, и вам не нужно вручную добавлять их в свою папку lib.

Ответ 5

В модуле Gradle Android есть экспериментальная поддержка на момент написания этой статьи. Дополнительную информацию см. В этом тестовом проекте.

Ответ 6

Если кто-то заинтересован в том, как упаковать это как распределяемый двоичный файл .jar(например, для развертывания в maven-репо), вы можете использовать эту файловую структуру для своего .jar.

Overall file structureJava classes

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>

Для build.gradle добавьте: compile 'android:renderscript:19.0.3' к вашим зависимостям clojure.

PS: библиотека renderscript не будет работать на armv6 (armeabi), поэтому убедитесь, что Build.CPU_ABI - либо armeabi-v7a, mips или x86.