【发布时间】:2016-08-06 00:38:08
【问题描述】:
似乎 sbt-android 忽略了 RenderScript 文件的存在,并且没有生成通常由 gradle builds/Android Studio 生成的 ScriptC_xxx java 类 [更新: 这是错误的,se下面的更新说明]。由于这个问题,sbt-android 构建失败,因为要使用我们需要引用生成的 ScriptC_xxx 类的脚本,构建时会出现以下错误:
[error] apackage/YYYClass.java:55: cannot find symbol
[error] symbol: class ScriptC_xxx
[error] location: class apackage.YYYClass
[error] ScriptC_xxx xxxScript = new ScriptC_xxx(rs);
从现有项目(通常由 gradle 编译)生成的 .sbt 文件具有明显必要的 RenderScript 配置,从 build.gradle 文件生成:
rsTargetApi in Android := "18",
rsSupportMode in Android := rsSupportMode.value || true
使用 sbt-android 编译包含渲染脚本的 android 项目我缺少什么?
更新:我意识到脚本的 java 类正在正确生成,但不知何故使用这些生成的类的类找不到它们,所以也许我有一个类路径配置问题。
这是当前文件结构:
./asubmodule/src/main/rs/xxx.rs
(使用包声明#pragma rs java_package_name(apackage.scripts))
./asubmodel/src/main/java/apackage/YYYClass.java
./asubmodule/target/android/generated/source/android/support/v7/appcompat/R.java
./asubmodule/target/android/generated/source/apackage/scripts/ScriptC_xxx.java
【问题讨论】:
-
查看sbt-android source,所有生成的
.java文件都被识别,因为它们列在旧的.dRenderScript 依赖文件(example) 中。但是,这种文件不一定会生成(而且,可能在最新的 RenderScript 版本中甚至不再生成)。你能检查一下你的构建路径中是否存在这样的文件吗? -
@cmaster11 我确实检查了“find . -name *.d”,似乎没有生成 .d 文件。你的意思是它可能是 sbt-android 中的一个错误?
-
没错。可能构建工具在最新版本中发生了变化,
.d文件生成过程被彻底清除,或者只是有充分的理由不再使用。 -
你的渲染脚本源在 src/main/rs 中是否符合预期?
-
@pfn 是的。但我刚刚意识到,似乎正在生成脚本的 java 类,但不知何故使用它们的类找不到它们。也许我错过了 sbt-android 的某种类路径配置?
标签: android scala renderscript sbt-android-plugin sbt-android