Как использовать библиотеку поддержки 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/
Я знаю, что поддержка 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.
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.