是否可以将Support Renderscript 库与 Gradle 一起使用?如果是这样,您如何将其包含在您的项目中?
6 回答
使用安卓工作室:
build.gradle
为android gradle plugin v0.14+添加以下值
android {
...
defaultConfig {
...
renderscriptTargetApi 19
renderscriptSupportModeEnabled true
}
...
}
对于旧版本的 android gradle 插件 v0.13.3 及以下
android {
...
defaultConfig {
...
renderscriptTargetApi 19
renderscriptSupportMode true
}
...
}
完成后,android.support.v8.renderscript.
在您的应用程序中的任何位置使用。库 jar 和二进制文件会自动包含在内。
Gradle for Android 现在支持 Renderscript v8,构建脚本中只有 2 行。请参阅Austyn Mahoney 的回答。出于历史目的保留原始答案。
老答案:
Gradle 支持原生 RS 编译,但不支持 RS 支持库。原因是 RS 支持库与任何其他支持库相比都非常复杂。RS 支持库实际上是一个 Java 支持库,一组支持该 Java 库的本地库,为您编译的每个脚本附加的本地库,以及用于为您的脚本生成标准 LLVM 位代码和本地库的替代工具链。目前,只有 ADT 和 Ant 支持;Gradle 还没有。
但是,已经可以使用 Gradle 的 RS 支持库的某些部分。如果要使用 RS 内部函数,可以链接支持库的 Java 部分(sdk/build-tools/android-4.3/lib/renderscript/renderscript-v8.jar)和本机组件(sdk/build-tools /android-4.3/lib/renderscript/packaged/<arch>/*.so),然后就设置好了。
我知道 Gradle 对支持库的支持会在不久的将来出现,但我没有可以分享的确切 ETA。
按照 Tim 的提示,我能够使用 Gradle 获得 v8 支持,这是我的项目布局:
我创建了 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.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'
到您的依赖项 clojure。
PS:renderscript 库不会在 armv6 (armeabi) 上运行,因此请确保它Build.CPU_ABI
是 armeabi-v7a、mips 或 x86。