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

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

6 ответов

Решение

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


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

Gradle поддерживает собственную компиляцию RS, но не библиотеку поддержки RS. Причина в том, что библиотека поддержки RS чрезвычайно сложна по сравнению с любой другой библиотекой поддержки. Библиотека поддержки RS на самом деле является библиотекой поддержки Java, набором собственных библиотек, поддерживающих эту библиотеку Java, дополнительными собственными библиотеками для каждого компилируемого сценария и альтернативным набором инструментов для генерации как стандартного битового кода 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/ /*.so), и тогда вы будете настроены.

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

Использование 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. в любом месте вашего приложения. Кувшин библиотеки и двоичные файлы включаются автоматически.

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

Я создал папку libs и скопировал файлы, упомянутые Тимом в папке 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.renderscript.* И использовать встроенные функции.

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

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

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

renderscriptSupportModeEnabled true

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

На момент написания этой статьи в плагине Gradle Android была экспериментальная поддержка. Смотрите этот тестовый проект для получения дополнительной информации.

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

Общая файловая структураКлассы 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>

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

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

Другие вопросы по тегам