使用API​​ @ 21和SDKTools @ 21.1.2在Android studio 1.0.1中添加Renderscript会导致构建错误

时间:2014-12-19 02:40:57

标签: android renderscript

我正在尝试将Android 4.4移植到Android 5.0。我的应用程序使用Renderscript。目前,renderscript应用程序非常简单

#pragma version(1) // RenderScript version, 1 is the only one for now
#pragma rs java_package_name(com.example.andriod.rs_android_5) // our package
#pragma rs_fp_relaxed
uint16_t *output;
const uint16_t *input;
void __attribute__((kernel)) encrypt(uint16_t In, uint32_t x, uint32_t y){
    output[in] = x*input[in]; 
}

我的build.gradle看起来像这样:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.example.andriod.rs_android_5"
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
        renderscriptSupportModeEnabled true
        renderscriptTargetApi 21
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

我得到的错误是:     错误:任务':app:compileDebugRenderscript'执行失败。

  

com.android.ide.common.internal.LoggedErrorException:无法运行命令:       /Users/user/Documents/sdk/build-tools/21.1.2/bcc_compat -O3 -o / Users / user / Documents / Android / rs_android_5 / app / build / intermediates / rs / debug / obj / armeabi-v7a / encrypt .o -fPIC -shared -rt-path /Users/user/Documents/sdk/build-tools/21.1.2/renderscript/lib/bc/armeabi-v7a/libclcore.bc -mtriple armv7-none-linux-gnueabi /用户/用户/文档/ Android设备/ rs_android_5 /应用程序/生成/产生/ RES / RS /调试/原料/ bc64 / encrypt.bc     错误代码:       1     输出:       警告:链接两个不同数据布局的模块:'/ Users / user / Files / sdk / build-tools / 21.1.2 / renderscript / lib / bc / armeabi-v7a / libclcore.bc'是'em:ep:32: 32-i64:64-v128:64:128-n32-S64'而'/Users/user/Documents/Android/rs_android_5/app/build/generated/res/rs/debug/raw/bc64/encrypt.bc'是'时间:E-I64:64 I128:128-N32:64 S128'       警告:链接两个不同目标三元组的模块:/Users/user/Documents/sdk/build-tools/21.1.2/renderscript/lib/bc/armeabi-v7a/libclcore.bc'是'armv7-none-linux-gnueabi '而'/Users/user/Documents/Android/rs_android_5/app/build/generated/res/rs/debug/raw/bc64/encrypt.bc'是'aarch64-none-linux-gnueabi'       E / bcc(27923):无法将源代码编译到文件/Users/user/Documents/Android/rs_android_5/app/build/intermediates/rs/debug/obj/armeabi-v7a/encrypt.o! (加载输入bitcode时出错)       无法编译脚本!

如果我将build.gradle修改为20或更低的目标,则错误消失。有没有人成功构建了一个针对API 21的Renderscript应用程序?

1 个答案:

答案 0 :(得分:13)

目前,在针对API 21(或更高版本)时,您无法使用支持模式。如果您打算实际使用API​​ 21+,则需要切换到本机RS API(并删除renderscriptSupportModeEnabled)。

相关问题