Search code examples
androidadtrenderscript

building renderscript for pre honeycomb


I have a project which targetVersion is 16 and I'm using SherlockActionBar and support-library for supporting down to API-level 8. I am trying to integrate CarouselView to my project. I am planning to use CarouselView for supported versions and pageViewer for other version. I am using Jetbrains IDEA for development. Normally I can build and deploy my application without any problem using IDEA. However I can't build the application using android-tools. Resulting error is at the bottom.

While investigating the error I realized that renderscript triest compile with api-level 8. I looked at the %sdk.dir%\tools\ant\build.xml and see that renderscript target uses project.minSdkVersion for targetApi. Is this a bug or what?

<renderscript executable="${renderscript}"
            includePathRefId="android.renderscript.include.path"
            genFolder="${gen.absolute.dir}"
            resFolder="${out.res.absolute.dir}/raw"
            targetApi="${project.minSdkVersion}"
            optLevel="${renderscript.opt.level}"
            buildType="${build.is.packaging.debug}"
            previousBuildType="${build.last.is.packaging.debug}">
        <source path="${source.absolute.dir}"/
</renderscript> 

-code-gen:

[mergemanifest] Found Deleted Target File [mergemanifest] Merging AndroidManifest files into one. [mergemanifest] Manifest merger disabled. Using project manifest only. [echo] Handling aidl files... [aidl] No AIDL files to compile. [echo] ---------- [echo] Handling RenderScript files... [renderscript] Found 1 RenderScript files. [renderscript] Compiling 1 RenderScript files with -target-api 8 [renderscript] Optimization Level: 0 [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:236:14: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'carouselPlane' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:242:17: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'carouselCylinder' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:254:21: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'cardVertices' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:262:26: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'camera' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:1503:20: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'p' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:1045:9: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'ray' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:1092:9: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'ray' [llvm-rs-cc.exe] D:\Proj [llvm-rs-cc.exe] ects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:1503:20: error: structs containing vectors of dimension 3 c [llvm-rs-cc.exe] annot be exported at this API level: 'p' [llvm-rs-cc.exe] D:\Projects\TEB\teb\src\com\pozitron\teb\customwidgets\carousel\carousel.rs:1781:17: error: structs containing vectors of dimension 3 cannot be exported at this API level: 'ray'

BUILD FAILED D:\Android\android-sdk\tools\ant\build.xml:645: The following error occurred while executing this line: D:\Android\android-sdk\tools\ant\build.xml:665: null returned: 1

edit: As Selvin suggested I copied renderscript folder and llvm-rs-cc.exe from older version. Now I got the following error:

[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
[renderscript] Found 1 RenderScript files.
[renderscript] Compiling 1 RenderScript files with -target-api 8
[renderscript] Optimization Level: 0
[llvm-rs-cc.exe] Generating ScriptC_carousel.java ...
[llvm-rs-cc.exe] Generating ScriptField_ProgramStore_s.java ...
[llvm-rs-cc.exe] Generating ScriptField_Card.java ...
[llvm-rs-cc.exe] Generating ScriptField_FragmentShaderConstants_s.java ...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Found Deleted Target File
     [aapt] Generating resource IDs...

BUILD FAILED
D:\Android\android-sdk\tools\ant\build.xml:645: The following error occurred while executing this line:
D:\Android\android-sdk\tools\ant\build.xml:683: java.lang.IllegalAccessError: tried to access class com.google.common.base.Platform from class com.google.common.base.CharMatcher
        at com.google.common.base.CharMatcher.precomputed(CharMatcher.java:684)
        at com.google.common.base.CharMatcher.<clinit>(CharMatcher.java:63)
        at com.google.common.base.Splitter.on(Splitter.java:129)
        at com.android.sdklib.internal.build.SymbolWriter.write(SymbolWriter.java:51)
        at com.android.ant.AaptExecTask.execute(AaptExecTask.java:711)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at com.android.ant.IfElseTask.execute(IfElseTask.java:120)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:390)
        at org.apache.tools.ant.Target.performTasks(Target.java:411)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
        at org.apache.tools.ant.Main.runBuild(Main.java:809)
        at org.apache.tools.ant.Main.startAnt(Main.java:217)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Solution

  • i've got the same problem...

    i assuming that you're using newest SDK (21) with platform tool 16...

    from this version render script doesn't like structures like

    typedef struct Ray_s {
        float3 position;
        float3 direction;
    } Ray;
    

    with float3... so download older platform tools from:

    http://dl.google.com/android/repository/platform-tools_r15_rc9-linux.zip

    http://dl.google.com/android/repository/platform-tools_r15_rc9-windows.zip

    http://dl.google.com/android/repository/platform-tools_r15_rc9-macosx.zip

    make copy of your

    C:\adsdk\platform-tools\llvm-rs-cc.exe <= this file

    and

    C:\adsdk\platform-tools\renderscript <= whole folder

    and replace them with the ones from zip

    OR

    replace float3 with float4 in render script and do other code change(i'm pretty sure that changing only float3 to float4 will not work)