7

I am trying to use the Android Renderscript support library on devices of API 16 and up, following the steps described here. So far things have not gone smoothly.

My Renderscript code is listed below.

#pragma version(1)
#pragma rs java_package_name(com.xxx.renderscript.test)

#include "rs_time.rsh"

rs_script flipScript;
rs_allocation gIn;
rs_allocation gOut;
int width;
int height;
int direction = 0;

void root(uchar4 *v_out, const void *usrData, uint32_t x, uint32_t y) {
    if(direction == 0) { // flip horizontally
        const uchar4 *element = rsGetElementAt(gIn, width - x, y);
        float4 color = rsUnpackColor8888(*element);
        float4 output = {color.r, color.g, color.b};
        *v_out = rsPackColorTo8888(output);
    }
    else if(direction == 1) { // flip vertically
        const uchar4 *element = rsGetElementAt(gIn, x, height - y);
        float4 color = rsUnpackColor8888(*element);
        float4 output = {color.r, color.g, color.b};
        *v_out = rsPackColorTo8888(output);
    }
    else if(direction == 2) { // rotate left
        const uchar4 *element = rsGetElementAt(gIn, width - y, x);
        float4 color = rsUnpackColor8888(*element);
        float4 output = {color.r, color.g, color.b};
        *v_out = rsPackColorTo8888(output);
    }
    else if(direction == 3) { // rotate right
        const uchar4 *element = rsGetElementAt(gIn, y, height - x);
        float4 color = rsUnpackColor8888(*element);
        float4 output = {color.r, color.g, color.b};
        *v_out = rsPackColorTo8888(output);
    }
}

void flip(int testIdx) {
    int64_t  t0, t1;
    int64_t  t;
    t0 = rsUptimeNanos();
    rsForEach(flipScript, gIn, gOut);
    t1 = rsUptimeNanos();
    t = t1 - t0;
    rsDebug("  flip: timer on RS side: ", t);
}

First I upgraded my Android SDK tools to 22.3, and my SDK platform tools to 19. If I click ADT/Help/About ADT/Installation Details, I see that all components have been upgraded to 22.3.0, except the Developer Tools, which is still 21.0.1:

  Android DDMS  22.3.0.v201310242005-887826 com.android.ide.eclipse.ddms.feature.group  The Android Open Source Project
  Android Developer Tools   21.0.1.201212060302 com.android.ide.eclipse.adt.package.product null
  Android Development Tools 22.3.0.v201310242005-887826 com.android.ide.eclipse.adt.feature.group   The Android Open Source Project
  Android Hierarchy Viewer  22.3.0.v201310242005-887826 com.android.ide.eclipse.hierarchyviewer.feature.group   The Android Open Source Project
  Android Native Development Tools  22.3.0.v201310242005-887826 com.android.ide.eclipse.ndk.feature.group   The Android Open Source Project
  Android Traceview 22.3.0.v201310242005-887826 com.android.ide.eclipse.traceview.feature.group The Android Open Source Project
  Tracer for OpenGL ES  22.3.0.v201310242005-887826 com.android.ide.eclipse.gldebugger.feature.group    The Android Open Source Project

Then I edited my "project.properties" file as suggested in the aforementioned steps. I also made changes to incorporate Tim Murray's comments.

proguard.config=C:/android/adt-bundle-windows-x86_64/sdk/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-18
renderscript.target=18
renderscript.support.mode=true
#sdk.buildtools=19.0.0

In my Java code, I made sure that the packages from the support library are imported. Listed below is the complete Java file:

package com.xxx.renderscript.test;

import android.support.v8.renderscript.*;
//import android.renderscript.RenderScript;
//import android.renderscript.Allocation;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

public class RenderScriptTestActivity extends Activity {

    private final String mLog = this.getClass().getName();
    private static final int TESTS_PER_GROUP = 12;

    private Bitmap mBitmapIn;
    private Bitmap mBitmapOut;
    private ImageView mDisplayView;

    private RenderScript mRS = null;
    private ScriptC_flip mScriptFlip = null;
    private Allocation mInPixelsAllocation = null;
    private Allocation mOutPixelsAllocation = null;

    //use aSyncTask so we display the image while rendering it.
    private ImageRenderTask mImageRenderTask = null;
    private boolean isRsBenchDone = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.i(mLog, "onCreate() ");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_rs);

        mBitmapIn = loadBitmap(R.drawable.city);
        mBitmapOut = loadBitmap(R.drawable.city);

        mDisplayView = (ImageView) findViewById(R.id.rs_display);
        mDisplayView.setImageBitmap(mBitmapOut);

        // RS instances
        mRS = RenderScript.create(this);
        mScriptFlip = new ScriptC_flip(mRS, getResources(), R.raw.flip);

        mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
                                                          Allocation.MipmapControl.MIPMAP_NONE,
                                                          Allocation.USAGE_SCRIPT);
        mOutPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapOut,
                                                           Allocation.MipmapControl.MIPMAP_NONE,
                                                           Allocation.USAGE_SCRIPT);
    }

    @Override
    protected void onResume() {
        Log.i(mLog, "onResume ");
        super.onResume();

        // for thread & display control
        isRsBenchDone = true;
    }

    // initialize flip.rs
    private void setupRS() {
        Log.i(mLog, "Initializing flip.rs...");
        mScriptFlip.set_flipScript(mScriptFlip);
        mScriptFlip.set_width(mBitmapIn.getWidth());
        mScriptFlip.set_height(mBitmapIn.getHeight());
        mScriptFlip.set_gIn(mInPixelsAllocation);
        mScriptFlip.set_gOut(mOutPixelsAllocation);
    }

    @Override
    protected void onStop() {
        Log.i(mLog, "onStop ");
        super.onStop();
    }

    private void resetRS() {
        mBitmapIn  = null;
        mBitmapOut = null;
        mRS = null;
        mScriptFlip   = null;
        mInPixelsAllocation    = null;
        mOutPixelsAllocation   = null;
    }

    private Bitmap loadBitmap(int resource) {
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap b_temp = BitmapFactory.decodeResource(getResources(), resource, options);
        int w = b_temp.getWidth();
        int h = b_temp.getHeight();
        Config cfg = b_temp.getConfig();
        Bitmap b_keep = Bitmap.createBitmap(w, h, cfg);
        Canvas c = new Canvas(b_keep);
        c.drawBitmap(b_temp, 0, 0, null);
        b_temp.recycle();

        if (true) {
            Log.d(mLog, "loadBitmap(): width = " + w + "  loadBitmap(): height = " + h);
        }
        return b_keep;
    }

    // press the button to invoke this function
    public void benchmark(View v) {
        if (false == isRsBenchDone) {  //do nothing if it's not done yet
            return;
        }
        if (mImageRenderTask != null) {
            if (mImageRenderTask.getStatus() == AsyncTask.Status.RUNNING) {
                return;
            }
            if (mImageRenderTask.getStatus() == AsyncTask.Status.PENDING) {
                mImageRenderTask.execute();
                return;
            }
        }
        // instantiate AsyncTask if not already existed & running
        Log.i(mLog, "User pressed Start");
        SystemClock.sleep(2000);
        isRsBenchDone = false;
        setupRS();
        mImageRenderTask = new ImageRenderTask();
        mImageRenderTask.execute();
    }

    // user presses this button when the test is done and all results have been
    // recorded.
    public void pressedRsExit(View view) {
        Log.i(mLog, "User pressed Exit");
        if (isRsBenchDone) {  // only exit when we are finished
            resetRS();
            RenderScriptTestActivity.this.finish();
        }
    }


    /**************************************************************************
     **
     *   Since the display must be updated in the main UI thread, and the main
     *   UI thread cannot be put to sleep, we have to use an AsyncTask to update
     *   the display after the image is rendered, and then sleep some time
     *   so that the tester can view the images being displayed.
     **
     **************************************************************************/
    private class ImageRenderTask extends AsyncTask<Void, Drawable, Void> {

        // runs in the UI (main) thread in correspondence to the AsyncTask
        // updating the drawable.
        protected void onProgressUpdate(Drawable... values) {
            Log.i(mLog, "onProgressUpdate...");
            super.onProgressUpdate(values);
            Drawable draw_tmp = values[0];
            mDisplayView.setImageDrawable(draw_tmp);
            mDisplayView.invalidate();
        }

        // runs on the UI (main) thread after the AsyncTask is finished
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);

            // reset the flag to exit
            isRsBenchDone = true;
        }

        @Override
        protected Void doInBackground(Void... params) {
            int group_id;
            int flip_way;

            //------------------------------------------------------------
            //                    group 4: flip horizontally
            //------------------------------------------------------------
            flip_way = 0;
            mScriptFlip.set_direction(flip_way);
            Log.i(mLog, "starting horizontal flipping ... ... ... ...");

            // measure group 4
            group_id = 4;  // used as a switch for render script
            measureRS(group_id);
            Log.i(mLog, "    horizontal done");

            // sleep cannot happen in the main UI thread
            SystemClock.sleep(2500);
            updateDisplay();
            SystemClock.sleep(2500);

            //------------------------------------------------------------
            //                    group 5: flip vertically
            //------------------------------------------------------------
            mScriptFlip.set_gIn(mInPixelsAllocation);
            flip_way = 1;
            mScriptFlip.set_direction(flip_way);
            Log.i(mLog, "starting vertical flipping ... ... ... ...");

            // measure group 5
            group_id = 5;  // used as a switch for render script
            measureRS(group_id);
            Log.i(mLog, "    vertical done");

            // sleep cannot happen in the main UI thread
            SystemClock.sleep(2500);
            updateDisplay();
            SystemClock.sleep(2500);

            return null;
        }

        // run and measure Render Script instances
        private void measureRS(int group_id) {
            if ((0==group_id) || (1 == group_id) || (2 == group_id)) {
                //other stuff
            }
            if (3 == group_id) {
                //other stuff
            }
            if ((4==group_id) || (5 == group_id)) {
                for (int i = 0; i < TESTS_PER_GROUP; i++) {
                    mScriptFlip.invoke_flip(i);
                }
            }
        }

        // update the displayed image
        private void updateDisplay() {
            Log.i(mLog, "updateDisplay...");
            //mOutPixelsAllocation.copyTo(mBitmapIn);  // this to verify the display.
            mOutPixelsAllocation.copyTo(mBitmapOut);
            Bitmap b_temp = Bitmap.createBitmap(mBitmapOut.getWidth(), mBitmapOut.getHeight(), Bitmap.Config.ARGB_8888);
            Canvas c_temp = new Canvas(b_temp);
            c_temp.drawBitmap(mBitmapOut, 0, 0, null);
            Drawable d_temp = new BitmapDrawable(getResources(), b_temp);
            publishProgress(d_temp);
        }
    }
}

Finally, in my project's properties, I added external JARs into the Java Build Path:

renderscript-v8.jar - C:\android\adt-bundle-windows-x86_64\sdk\build-tools\19.0.0\renderscript\lib 

The code built without any issues. Then I tested it on a few devices. Here are the test results.

Nexus 7 (2012 version, upgraded to Android 4.4) The code ran to finish without crashing. However, after the Renderscript is called the 1st time, updating the ImageView results in a blank display. Apparently the output bitmap is not properly written into.

Huawei Mate (Android 4.1.2) The code crashes right after loading from ADT. Below is a selection of error messages (the post body is limited to 30k characters, so I can't post everything):

W/dalvikvm(2246): Refusing to reopen boot DEX '/system/framework/hwframework.jar'
E/RenderScript_jni(2246): No GC methods
D/dalvikvm(2246): Trying to load lib /data/data/com.xxx.renderscript.test/lib/libRSSupport.so 0x41726918
D/dalvikvm(2246): Added shared lib /data/data/com.xxx.renderscript.test/lib/libRSSupport.so 0x41726918
D/dalvikvm(2246): No JNI_OnLoad found in /data/data/com.xxx.renderscript.test/lib/libRSSupport.so 0x41726918, skipping init
D/dalvikvm(2246): Trying to load lib /data/data/com.xxx.renderscript.test/lib/librsjni.so 0x41726918
D/dalvikvm(2246): Added shared lib /data/data/com.xxx.renderscript.test/lib/librsjni.so 0x41726918
V/RenderScript_jni(2246): RS compat mode
V/RenderScript(2246): 0x5bc7d008 Launching thread(s), CPUs 3
E/RenderScript(2246): Unable to open shared library (/data/data/com.xxx.renderscript.test//lib/librs.flip.so): Cannot load library: reloc_library[1306]:   132 cannot locate '_Z13rsUptimeNanosv'...
E/RenderScript(2246): Unable to open system shared library (/system/lib/librs.flip.so): (null)
D/AndroidRuntime(2246): Shutting down VM
W/dalvikvm(2246): threadid=1: thread exiting with uncaught exception (group=0x40f122a0)
E/AndroidRuntime(2246): FATAL EXCEPTION: main
E/AndroidRuntime(2246): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.renderscript.test/com.xxx.renderscript.test.RenderScriptTestActivity}: android.support.v8.renderscript.RSRuntimeException: Loading of ScriptC script failed.

Sony Xperia Z Ultra C6802(Android 4.2.2) The code crashes right after loading from ADT, with the following error messages (again selected to fit the 30k character limit):

D/AndroidRuntime(3498): CheckJNI is OFF
D/dalvikvm(3498): Trying to load lib libjavacore.so 0x0
D/dalvikvm(3498): Added shared lib libjavacore.so 0x0
D/dalvikvm(3498): Trying to load lib libnativehelper.so 0x0
D/dalvikvm(3498): Added shared lib libnativehelper.so 0x0
I/ActivityManager(903): Start proc com.svox.pico for broadcast com.svox.pico/.VoiceDataInstallerReceiver: pid=3513 uid=10085 gids={50085, 1015, 1028}
I/ActivityManager(903): No longer want com.mobisystems.office:search (pid 2686): empty #34
I/ActivityManager(903): Start proc com.sonymobile.enterprise.service for broadcast com.sonymobile.enterprise.service/.Receiver: pid=3539 uid=1000 gids={41000, 3003, 1015, 1028, 3002, 3001, 3007}
D/AndroidRuntime(3498): Calling main entry com.android.commands.am.Am
D/dalvikvm(3498): Note: class Landroid/app/ActivityManagerNative; has 157 unimplemented (abstract) methods
I/ActivityManager(903): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.xxx.renderscript.test/.RenderScriptTestActivity} from pid 3498
D/AndroidRuntime(3498): Shutting down VM
D/jdwp(3498): Got wake-up signal, bailing out of select
D/dalvikvm(3498): Debugger has detached; object registry had 1 entries
D/dalvikvm(3557): Late-enabling CheckJNI
I/ActivityManager(903): Start proc com.xxx.renderscript.test for activity com.xxx.renderscript.test/.RenderScriptTestActivity: pid=3557 uid=10088 gids={50088, 1028}
D/dalvikvm(3557): Debugger has detached; object registry had 1 entries
I/Icing.InternalIcingCorporaProvider(2583): Updating corpora: A: com.xxx.renderscript.test, C: MAYBE
E/.AppDataSearchProvider(2583): Could not connect to AppDataSearchClient to register corpora.
W/Icing.InternalIcingCorporaProvider(2583): Corpora registration failed
I/com.xxx.renderscript.test.RenderScriptTestActivity(3557): onCreate() 
E/.AppDataSearchProvider(2583): Could not connect to AppDataSearchClient for notifyTableChanged
W/Icing.InternalIcingCorporaProvider(2583): Application table change notification failed.
D/dalvikvm(2856): GC_CONCURRENT freed 187K, 73% free 3028K/11084K, paused 3ms+4ms, total 20ms
D/ConnectionNotify(3116): queue add:2
D/AudioHardwareALSAExt(329): getParameters() supported_effect
D/[APP_SERVICE](3116): package com.xxx.renderscript.test installed
D/[APP_SERVICE](3116): add package com.xxx.renderscript.test
I/ActivityManager(903): Start proc com.UCMobile for broadcast com.UCMobile/.receivers.SysReceiver: pid=3587 uid=10207 gids={50207, 3003, 1015, 1028}
I/dalvikvm(3587): Turning on JNI app bug workarounds for target SDK version 8...
D/dalvikvm(3410): GC_CONCURRENT freed 511K, 71% free 3273K/11084K, paused 2ms+1ms, total 20ms
D/dalvikvm(3410): WAIT_FOR_CONCURRENT_GC blocked 5ms
E/RenderScript_jni(3557): No GC methods
D/dalvikvm(3557): Trying to load lib /data/app-lib/com.xxx.renderscript.test-1/libRSSupport.so 0x418243f8
D/dalvikvm(3557): Added shared lib /data/app-lib/com.xxx.renderscript.test-1/libRSSupport.so 0x418243f8
D/dalvikvm(3557): No JNI_OnLoad found in /data/app-lib/com.xxx.renderscript.test-1/libRSSupport.so 0x418243f8, skipping init
D/dalvikvm(3557): Trying to load lib /data/app-lib/com.xxx.renderscript.test-1/librsjni.so 0x418243f8
D/dalvikvm(3557): Added shared lib /data/app-lib/com.xxx.renderscript.test-1/librsjni.so 0x418243f8
V/RenderScript_jni(3557): RS compat mode
V/RenderScript(3557): 0x72b26978 Launching thread(s), CPUs 4
E/RenderScript(3557): Unable to open shared library (/data/data/com.xxx.renderscript.test//lib/librs.flip.so): Cannot load library: soinfo_relocate(linker.cpp:975): cannot locate symbol "_Z13rsUptimeNanosv" referenced by "librs.flip.so"...
E/RenderScript(3557): Unable to open system shared library (/system/lib/librs.flip.so): (null)
D/AndroidRuntime(3557): Shutting down VM
W/dalvikvm(3557): threadid=1: thread exiting with uncaught exception (group=0x4154aae0)
E/AndroidRuntime(3557): FATAL EXCEPTION: main
E/AndroidRuntime(3557): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.renderscript.test/com.xxx.renderscript.test.RenderScriptTestActivity}: android.support.v8.renderscript.RSRuntimeException: Loading of ScriptC script failed.
E/AndroidRuntime(3557):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2224)
E/AndroidRuntime(3557):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2274)
E/AndroidRuntime(3557):     at android.app.ActivityThread.access$600(ActivityThread.java:150)
E/AndroidRuntime(3557):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)
E/AndroidRuntime(3557):     at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(3557):     at android.os.Looper.loop(Looper.java:213)
E/AndroidRuntime(3557):     at android.app.ActivityThread.main(ActivityThread.java:5153)
E/AndroidRuntime(3557):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(3557):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(3557):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
E/AndroidRuntime(3557):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
E/AndroidRuntime(3557):     at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(3557): Caused by: android.support.v8.renderscript.RSRuntimeException: Loading of ScriptC script failed.
E/AndroidRuntime(3557):     at android.support.v8.renderscript.ScriptC.<init>(ScriptC.java:69)
E/AndroidRuntime(3557):     at com.xxx.renderscript.test.ScriptC_flip.<init>(ScriptC_flip.java:41)
E/AndroidRuntime(3557):     at com.xxx.renderscript.test.RenderScriptTestActivity.onCreate(RenderScriptTestActivity.java:53)
E/AndroidRuntime(3557):     at android.app.Activity.performCreate(Activity.java:5104)
E/AndroidRuntime(3557):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
E/AndroidRuntime(3557):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2188)
E/AndroidRuntime(3557):     ... 11 more
W/ActivityManager(903):   Force finishing activity com.xxx.renderscript.test/.RenderScriptTestActivity

I'd appreciate if someone could look into the issues, whether it's bugs in my code or Android SDK issues. Comments/suggestions are welcome Thanks!

[EDIT] I stripped un-related stuff from my code, and am posting the complete code here, in hope that someone could repeat my problem, and find a solution. I also added more test results.

hubeir
  • 1,279
  • 2
  • 13
  • 24
  • can you get rid of the sdk.buildtools line in your project.properties? that actually shouldn't be necessary at this point. also, you shouldn't be linking the jar yourself--ADT/ant should pick that up for you when you specify renderscript.support.mode=true – Tim Murray Dec 18 '13 at 01:10
  • @Tim Murray: removed the line and tried again. Same error. – hubeir Dec 18 '13 at 01:15
  • @TimMurray: I originally got the code from here (https://github.com/mharkus/Image-Processing-Renderscript-Compute/blob/master/src/com/mlst/imageprocessing/rs/flip.rs). I assume it's Google's code? Unfortunately I added too much other stuff to go back to test if the original code builds and runs with the Renderscript support library. Did you test the code at Google? Could you share how you tested it? Never mind if it's not Google's code. – hubeir Dec 18 '13 at 01:34
  • I don't think that code is from the RS team directly, so I can't comment on it. I'll try to get it to build myself tomorrow. In the meantime, what device are you trying your APK on? – Tim Murray Dec 18 '13 at 23:40
  • @TimMurray: I am testing on various devices, starting from API 16 and up. Devices include Huawei Mate, Sony Xperia Z Ultra, etc. – hubeir Dec 19 '13 at 01:47
  • @TimMurray: I've stripped unrelated stuff from my code, and prepared a package so the problem can be reproduced. If you want if, I can provide it to you. – hubeir Dec 19 '13 at 23:29
  • by any chance, do you have proguard on? if so, can you turn it off or add an exception for android.support.*? – Tim Murray Dec 20 '13 at 19:17
  • @TimMurray: Tried uncommenting the line in the file "project.properties"; didn't solve the problem. – hubeir Dec 21 '13 at 01:49
  • @TimMurray: I posted both the Java and rs files. It should be easy for you to repeat the issues. Hope this helps you help me. – hubeir Dec 21 '13 at 01:51
  • All of the crashes are things we fixed in AOSP, but haven't made it into the official SDK yet. rsUptimeNanos() is a function that we accidentally left out of libRSSupport.so, so you will always end up with link errors. Can you try commenting out that call for now? As far as the Nexus 7 not updating the image, I think you are probably not copying to the bitmap you are actually displaying. – Stephen Hines Dec 21 '13 at 04:41
  • @StephenHines: Unfortunately commenting out calls to rsUptimeNanos() does not solve the problem. I am having the same crash: Unable to open shared library (/data/data/com.xxx.renderscript.test//lib/librs.flip.so): Cannot load library: soinfo_relocate(linker.cpp:975): cannot locate symbol "_Z9rsForEach9rs_script13rs_allocationS0_" referenced by "librs.flip.so"... – hubeir Jan 06 '14 at 18:53
  • @hubeir: You are right that this is another function that was missing from the prior SDK release. I have fixed this in AOSP (along with the other missing functions as I mentioned in my comment from 12/21), but you will need to wait for an SDK update to pick up the changes. – Stephen Hines Jan 06 '14 at 21:45
  • @StephenHines: When will the next SDK update happen? – hubeir Jan 07 '14 at 18:19
  • They happen pretty regularly, but I can't share that information unfortunately. – Stephen Hines Jan 07 '14 at 19:08
  • @hubeir I'm having the exact same problem. Code runs fine on Nexus 4 but I cant get it to work on any other devices. Asked over here https://stackoverflow.com/questions/20982255/simple-renderscript-example-failing – Jameo Jan 08 '14 at 18:12
  • @StephenHines do you mean Android SDK Update? Or support library update? If its a support library kind of thing, is there any sort of nightly builds we could get? – Jameo Jan 08 '14 at 18:18
  • The support library is shipped as part of the Android SDK. I don't have a nightly build, but you could create your own fix by building everything from source in AOSP (source.android.com). I don't suggest this, however, as I have no idea where to place packages so that Eclipse/SDK integration will work properly later. – Stephen Hines Jan 08 '14 at 20:02
  • @StephenHines gottcha, so if I understand correctly, this will come with an update through the Android SDK Manager, or something to that effect? – Jameo Jan 08 '14 at 20:54
  • Yes. It will get updated automatically. I will try to remember to post on this page once I see the update go out. – Stephen Hines Jan 08 '14 at 21:08
  • 1
    @StephenHines it's been about a month, any update on this? – Jameo Feb 04 '14 at 20:29
  • Sorry, but it hasn't gone out yet. I will post back when I see it released. – Stephen Hines Feb 05 '14 at 00:04
  • Same problem here! on Samsung Galaxy I9100, Android 4.1.2 stock ROM (proguard off), Works on same device with I9100XWLQ2 4.0.4, and on Nexus 5 & 9 Kitkat + Lollipop – seb Nov 22 '14 at 00:30
  • @StephenHines and after 10 months some updates? – seb Nov 22 '14 at 00:36
  • This should be fixed in at least the most recent SDK (that supports Lollipop, etc.). Are you actually rebuilding your app? If not, then the older APK will continue to fail. – Stephen Hines Nov 22 '14 at 03:30
  • @StephenHines Yes, of course. I actually forgot about this post, googled the problem again and found my post :) – seb Nov 17 '15 at 16:50
  • I think my problem is related to: https://code.google.com/p/android/issues/detail?id=182356 – seb Nov 17 '15 at 16:56

1 Answers1

2

Well. I'm not sure if this is still needed and if it will fix your problem, but I suggest you try to use Android Plugin for Gradle 1.5.0

This must be set in your project's build.gradle(NOT in app build.gradle)

dependencies {
    classpath 'com.android.tools.build:gradle:1.5.0'
}

And use buildToolsVersion 22.0.1 or 23.0.2 or the latest version.

Illia K.
  • 156
  • 1
  • 9
  • Thanks for the suggestion. I no longer work on this project, but hopefully your idea would help someone else (Note I have not tried it myself). – hubeir Jan 12 '16 at 00:30