我正在尝试将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应用程序?
答案 0 :(得分:13)
目前,在针对API 21(或更高版本)时,您无法使用支持模式。如果您打算实际使用API 21+,则需要切换到本机RS API(并删除renderscriptSupportModeEnabled)。