2014-02-05 49 views
1

我一直在使用较老版本的Android Studio处理RenderScript项目很长一段时间。我与SDK版本定位4.3 18在使用构建工具更新到Android Studio 4.3后,无法编译RenderScript 18.1.1

我已经编制了新构建工具19+(崩溃,当我修改根()“UCHAR * V输出”参数的项目时有运行时的问题),所以我决定回到构建工具18.1.1。但与此版本编译时出现错误:

'conversion.rs error: Compute Kernel root() targeting SDK levels 11-13 may not skip parameters FAILURE: Build failed with an exception.

Execution failed for task :test:compileDebugRenderscript. com.android.ide.common.internal.LoggedErrorException: Failed to run command: C:\Program Files\android-studio\sdk\build-tools\18.1.1\llvm-rs-cc.exe -O 3 -I C:\Program Files\android-studio\sdk\build-tools\18.1.1\renderscript\include\ -I C:\Program Files\android-studio\sdk\build-tools\18.1.1\renderscript\clang-include\ ...

也许这是我的内核函数签名一个问题吗?即使在下面有一个简单的.rs文件,它也无法编译。我以前可以编译和运行这个不错,我敢肯定它是使用编译工具18回的话..

#pragma version(1) 
#pragma rs java_package_name(com.app.test); 

void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) { 


} 

任何帮助将不胜感激。

更新: 这个越来越陌生的......如果我使用gradle这个版本1.10编译工具19.0.1,代码编译,但给我下面的错误,如果我试图修改“uchar4 *总分”

: Fatal signal 11 (SIGSEV) Aat 0xdeadbaad (code=1)'

回答

0

您真的是针对API等级11-13还是属于混淆的一部分?如果您正在寻找这些级别的目标,则需要更新根签名以包含“const void * usrData,size_t usrDataLen”。即使您没有使用它们,您也必须这样做,因为旧的RS版本的RS不允许您跳过这些参数。 RS的更现代版本可以让你跳过你不想使用的参数。

+0

感谢您的回复。这很奇怪,我没有针对API等级11-13 - 我的build.gradle将目标和min sdk版本设置为18,使用构建工具18.1.1和gradle 1.9。 - 如果我使用SDK 19 +编译工具19.0.1(仍以4.3为目标),我可以编译RS文件,但只要将*设置为任意数字,我就可以编译RS文件 - 我如上所述获取SIGSEV。 – jub

+0

你可以在SIGSEGV之前发布更多日志吗?你正在使用什么设备/版本?在SDK 19中存在一个编码错误,我们已经在内部解决了这个问题,但尚未发布,我相信这就是您现在所要做的。 –

+0

更新:添加这两个参数(在开始和结束时测试)会导致以下错误:类型为'const void *'的意外内核root()参数'usrData' - 与其他参数相同。 – jub

相关问题