2012-11-27 3 views
1

targetVersion이 16 인 프로젝트가 있으며 API 레벨 8까지 지원하기 위해 SherlockActionBar 및 support-library를 사용하고 있습니다. CarouselView을 내 프로젝트에 통합하려고합니다. 지원되는 버전에는 CarouselView를 사용하고 다른 버전에는 pageViewer를 사용할 계획입니다. Jetbrains IDEA를 개발 용으로 사용하고 있습니다. 일반적으로 IDEA를 사용하여 아무 문제없이 응용 프로그램을 빌드하고 배포 할 수 있습니다. 그러나 나는 안드로이드 도구를 사용하여 응용 프로그램을 만들 수 없습니다. 결과 오류가 맨 아래에 있습니다.프리 허니 콤 용 렌더 스크립트 작성

오류를 조사하는 동안 렌더링 스크립트가 api 수준 8로 컴파일된다는 것을 깨달았습니다. % sdk.dir % \ tools \ ant \ build.xml을보고 렌더 스크립트 대상이 targetApi에 대해 project.minSdkVersion을 사용하는지 확인합니다. 이거 버그 야, 뭐야?

<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

편집 : Selvin가 제안한 것처럼 내가 이전 버전에서 renderscript 폴더와 LLVM-RS-는 cc.exe를 복사됩니다. 지금 나는 다음과 같은 오류 있어요 : 저도 같은 문제가 생겼어요

[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) 
+0

전체 platform_tools 폴더를 바꿨습니까? 또는 그냥 llvm-rs-cc.exe 파일과 renderscript 폴더 만 ... 어쨌든 targetApi = "$ {project.minSdkVersion}"을 targetApi = "$ {project.targetSdkVersion} " – Selvin

답변

0

을 ...

난 당신이 플랫폼 도구 (16)와 최신 SDK (21)를 사용하는 가정 ...

: 그래서에서 오래된 플랫폼 툴을 다운로드 ... float3와

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

같은 구조를 좋아하지 않는 스크립트 렌더링이 버전에서

당신의

C의

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

메이크업 복사 : \ adsdk \ 플랫폼 도구 \ LLVM-RS-는 cc.exe < =이 파일

C : \ adsdk \ 플랫폼 도구 \ renderscript < = 전체 폴더

및 우편

또는

에서 배터리로 교체가에서 내가 변화하는 확신 (스크립트 렌더링 및 기타 코드 변경을 float4와 함께 float3 교체 float3에서 float4 만 작동하지 않음)

+0

안녕하세요 셀빈, 응답 해 주셔서 감사합니다. 제 질문을 업데이트 해주십시오. 이전 도구에서 복사해도 문제가 해결되지 않았습니다. 그리고 float3을 float4로 바꾸는 것에 관해서는 컴파일이 불평하지 않았지만 오류가 발생합니다. 정적 평면 carouselPlane = { {0.0f, 0.0f, 0.0f}, // 포인트 {0.0f, 1.0f, 0.0f}, // 보통 0.0f // 평면 상수 (= -dot (P, N)) } – arikan

+0

starnge ... 제게는 효과가 있습니다 ... "C : \ adsdk \"를 안드로이드 SDK의 경로로 바꿨습니까?'{0.0f, 0.0f, 0.0f}'는 {0.0f, 0.0f, 0.0f, 1.0f}'로 바뀌어야한다. (and에서 1.0f를 더한다.) ... vec4와 함께 계산할 수 있을지 생각하지 않는다. 대신 하나의 차원을 사용하여 vec3 ... – Selvin

+0

'당신은 "C : \ adsdk \"w i 안드로이드 SDK'에 대한 당신의 경로와 OS를위한 platform_tools를 다운로드 했습니까? – Selvin

3

타겟 API와 최소 API 레벨에 대한 SDK 버그는 실제로 Android SDK가 코드를 컴파일하는 방법의 버그입니다. 이전 버전의 SDK/컴파일러를 사용하여 float3 문제를 무시하는 경우에는이 작업을 수행하지 마십시오. float3 정렬/패킹이 제대로 처리되지 않았기 때문에 이것은 실제로 구형 컴파일러 및 장치의 버그였습니다. 구형 장치의 올바른 해결책은 모든 장치에서 잘 작동하는 float4를 사용하는 것입니다. r15의 이전 컴파일러를 사용하면 이전 장치의 일부 하위 집합에서만 작동하는 코드로 끝납니다.

+1

문제는 모든 쉐이더가 vec3을 사용하지 않는 vec4 ... 여전히 rsgraphics가 더 이상 사용되지 않을 예정이므로 언젠가는 작동을 멈추는 것입니다./ – Selvin

+0

어쨌든 당신은 내 +1을가집니다. – Selvin

관련 문제