diff --git a/perf-test-scripts/timing b/perf-test-scripts/timing
index 94e8078..8beda01 100755
--- a/perf-test-scripts/timing
+++ b/perf-test-scripts/timing
@@ -38,7 +38,7 @@
   testMandelbrotfp64             testBlurRadius25Half                                                                                           # 45-46
 )
 
-RUNNER="com.android.rs.imagejb/android.support.test.runner.AndroidJUnitRunner"
+RUNNER="com.android.rs.imagejb/androidx.test.runner.AndroidJUnitRunner"
 TEST_ROOT="com.android.rs.imagejb.ImageProcessingTest"
 
 
diff --git a/rsGrallocConsumer.cpp b/rsGrallocConsumer.cpp
index fed7b48..e03996e 100644
--- a/rsGrallocConsumer.cpp
+++ b/rsGrallocConsumer.cpp
@@ -42,8 +42,11 @@
         format = AIMAGE_FORMAT_YUV_420_888;
     }
 
-    media_status_t ret = AImageReader_new(
-            width, height, format,
+    // GRALLOC_USAGE_RENDERSCRIPT
+    const uint64_t USAGE_RENDERSCRIPT = 0x00100000U;
+    uint64_t usage = AHARDWAREBUFFER_USAGE_CPU_READ_OFTEN | USAGE_RENDERSCRIPT;
+    media_status_t ret = AImageReader_newWithUsage(
+            width, height, format, usage,
             mNumAlloc, &mImgReader);
     if (ret != AMEDIA_OK || mImgReader == nullptr) {
         ALOGE("Error creating image reader. ret %d", ret);
diff --git a/support/Android.bp b/support/Android.bp
index 3062950..3e23269 100644
--- a/support/Android.bp
+++ b/support/Android.bp
@@ -8,7 +8,7 @@
     srcs: [
         "java/src/**/*.java",
     ],
-    static_libs: [
+    libs: [
         "android-support-annotations",
     ],
     product_variables: {
diff --git a/support/java/src/android/support/v8/renderscript/Allocation.java b/support/java/src/androidx/renderscript/Allocation.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Allocation.java
rename to support/java/src/androidx/renderscript/Allocation.java
index 2384518..b6588c0 100644
--- a/support/java/src/android/support/v8/renderscript/Allocation.java
+++ b/support/java/src/androidx/renderscript/Allocation.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.nio.ByteBuffer;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -29,14 +29,14 @@
 /**
  * <p> This class provides the primary method through which data is passed to
  * and from RenderScript kernels.  An Allocation provides the backing store for
- * a given {@link android.support.v8.renderscript.Type}.  </p>
+ * a given {@link androidx.renderscript.Type}.  </p>
  *
  * <p>An Allocation also contains a set of usage flags that denote how the
  * Allocation could be used. For example, an Allocation may have usage flags
  * specifying that it can be used from a script as well as input to a {@link
- * android.support.v8.renderscript.Sampler}. A developer must synchronize
+ * androidx.renderscript.Sampler}. A developer must synchronize
  * across these different usages using
- * {@link android.support.v8.renderscript.Allocation#syncAll} in
+ * {@link androidx.renderscript.Allocation#syncAll} in
  * order to ensure that different users of the Allocation have a consistent view
  * of memory. For example, in the case where an Allocation is used as the output
  * of one kernel and as Sampler input in a later kernel, a developer must call
@@ -244,8 +244,8 @@
 
 
    /**
-     * Get the {@link android.support.v8.renderscript.Element} of the {@link
-     * android.support.v8.renderscript.Type} of the Allocation.
+     * Get the {@link androidx.renderscript.Element} of the {@link
+     * androidx.renderscript.Type} of the Allocation.
      *
      * @return Element
      *
@@ -273,7 +273,7 @@
      * copying data from the Allocation to an array or vice-versa less efficient.
      *
      * <p> Vec3 Element cells are stored in an Allocation as Vec4 Element cells with
-     * the same {@link android.support.v8.renderscript.Element.DataType}, with the fourth vector
+     * the same {@link androidx.renderscript.Element.DataType}, with the fourth vector
      * component treated as padding. When this feature is enabled, only the data components,
      * i.e. the first 3 vector components of each cell, will be mapped between the array
      * and the Allocation. When disabled, explicit mapping of the padding components
@@ -461,7 +461,7 @@
     }
 
     /**
-     * Get the {@link android.support.v8.renderscript.Type} of the Allocation.
+     * Get the {@link androidx.renderscript.Type} of the Allocation.
      *
      * @return Type
      *
@@ -811,7 +811,7 @@
     /**
      * Copy into this Allocation from an array.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the array's
+     * androidx.renderscript.Element} does not match the array's
      * primitive type.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
@@ -838,8 +838,8 @@
     /**
      * Copy into this Allocation from an array.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -865,8 +865,8 @@
     /**
      * Copy into this Allocation from an array.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -892,8 +892,8 @@
     /**
      * Copy into this Allocation from an array.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -919,8 +919,8 @@
     /**
      * Copy into this Allocation from an array.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 32 bit float nor a vector of
+     * 32 bit floats {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -1265,7 +1265,7 @@
     /**
      * Copy an array into a 1D region of this Allocation.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the component type
+     * androidx.renderscript.Element} does not match the component type
      * of the array passed in.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
@@ -1295,8 +1295,8 @@
     /**
      * Copy an array into a 1D region of this Allocation.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not an 32 bit integer nor a vector of 32 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1324,8 +1324,8 @@
     /**
      * Copy an array into a 1D region of this Allocation.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not an 16 bit integer nor a vector of 16 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1353,8 +1353,8 @@
     /**
      * Copy an array into a 1D region of this Allocation.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1382,8 +1382,8 @@
     /**
      * Copy an array into a 1D region of this Allocation.  This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 32 bit float nor a vector of
+     * 32 bit floats {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1469,7 +1469,7 @@
      * Copy from an array into a rectangular region in this Allocation.  The
      * array is assumed to be tightly packed. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the input data type.
+     * androidx.renderscript.Element} does not match the input data type.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1501,8 +1501,8 @@
      * Copy from an array into a rectangular region in this Allocation.  The
      * array is assumed to be tightly packed. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not an 8 bit integer nor a vector of 8 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1534,8 +1534,8 @@
      * Copy from an array into a rectangular region in this Allocation.  The
      * array is assumed to be tightly packed. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1567,8 +1567,8 @@
      * Copy from an array into a rectangular region in this Allocation.  The
      * array is assumed to be tightly packed. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1600,8 +1600,8 @@
      * Copy from an array into a rectangular region in this Allocation.  The
      * array is assumed to be tightly packed. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 32 bit float nor a vector of
+     * 32 bit floats {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1726,7 +1726,7 @@
      * Copy from an array into a 3D region in this Allocation.  The
      * array is assumed to be tightly packed. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the input data type.
+     * androidx.renderscript.Element} does not match the input data type.
      *
      * <p> The size of the region is: w * h * d * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -1817,7 +1817,7 @@
     /**
      * Copy from the Allocation into an array. The method is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the input data type.
+     * androidx.renderscript.Element} does not match the input data type.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -1843,8 +1843,8 @@
     /**
      * Copy from the Allocation into a byte array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither an 8 bit integer nor a vector of 8 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -1870,8 +1870,8 @@
     /**
      * Copy from the Allocation into a short array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not a 16 bit integer nor a vector of 16 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -1897,8 +1897,8 @@
     /**
      * Copy from the Allocation into a int array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is not a 32 bit integer nor a vector of 32 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -1924,8 +1924,8 @@
     /**
      * Copy from the Allocation into a float array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 32 bit float nor a vector of
+     * 32 bit floats {@link androidx.renderscript.Element.DataType}.
      *
      * <p> If the Allocation does not have Vec3 Elements, then the size of the
      * array in bytes must be at least the size of the Allocation {@link
@@ -2139,7 +2139,7 @@
     /**
      * Copy a 1D region of this Allocation into an array.  This method is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} does not match the component type
+     * androidx.renderscript.Element} does not match the component type
      * of the array passed in.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
@@ -2169,8 +2169,8 @@
     /**
      * Copy a 1D region of this Allocation into an array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit integer nor a vector of 32 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 32 bit integer nor a vector of 32 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2198,8 +2198,8 @@
     /**
      * Copy a 1D region of this Allocation into an array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 16 bit integer nor a vector of 16 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 16 bit integer nor a vector of 16 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2227,8 +2227,8 @@
     /**
      * Copy a 1D region of this Allocation into an array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither an 8 bit integer nor a vector of 8 bit
-     * integers {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither an 8 bit integer nor a vector of 8 bit
+     * integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2256,8 +2256,8 @@
     /**
      * Copy a 1D region of this Allocation into an array. This variant is type checked
      * and will generate exceptions if the Allocation's {@link
-     * android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector of
-     * 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
+     * androidx.renderscript.Element} is neither a 32 bit float nor a vector of
+     * 32 bit floats {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: count * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2309,7 +2309,7 @@
     /**
      * Copy from a rectangular region in this Allocation into an array. This
      * method is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} does not match the component type
+     * {@link androidx.renderscript.Element} does not match the component type
      * of the array passed in.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
@@ -2341,8 +2341,8 @@
     /**
      * Copy from a rectangular region in this Allocation into an array. This
      * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither an 8 bit integer nor a vector
-     * of 8 bit integers {@link android.support.v8.renderscript.Element.DataType}.
+     * {@link androidx.renderscript.Element} is neither an 8 bit integer nor a vector
+     * of 8 bit integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2373,8 +2373,8 @@
     /**
      * Copy from a rectangular region in this Allocation into an array. This
      * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither a 16 bit integer nor a vector
-     * of 16 bit integers {@link android.support.v8.renderscript.Element.DataType}.
+     * {@link androidx.renderscript.Element} is neither a 16 bit integer nor a vector
+     * of 16 bit integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2405,8 +2405,8 @@
     /**
      * Copy from a rectangular region in this Allocation into an array. This
      * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither a 32 bit integer nor a vector
-     * of 32 bit integers {@link android.support.v8.renderscript.Element.DataType}.
+     * {@link androidx.renderscript.Element} is neither a 32 bit integer nor a vector
+     * of 32 bit integers {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2437,8 +2437,8 @@
     /**
      * Copy from a rectangular region in this Allocation into an array. This
      * variant is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} is neither a 32 bit float nor a vector
-     * of 32 bit floats {@link android.support.v8.renderscript.Element.DataType}.
+     * {@link androidx.renderscript.Element} is neither a 32 bit float nor a vector
+     * of 32 bit floats {@link androidx.renderscript.Element.DataType}.
      *
      * <p> The size of the region is: w * h * {@link #getElement}.{@link
      * Element#getBytesSize}.
@@ -2504,7 +2504,7 @@
      * @hide
      * Copy from a 3D region in this Allocation into an array. This
      * method is type checked and will generate exceptions if the Allocation's
-     * {@link android.support.v8.renderscript.Element} does not match the component type
+     * {@link androidx.renderscript.Element} does not match the component type
      * of the array passed in.
      *
      * <p> The size of the region is: w * h * d * {@link #getElement}.{@link
@@ -2546,7 +2546,7 @@
 
     /**
      * Creates a new Allocation with the given {@link
-     * android.support.v8.renderscript.Type}, mipmap flag, and usage flags.
+     * androidx.renderscript.Type}, mipmap flag, and usage flags.
      *
      * @param type RenderScript type describing data layout
      * @param mips specifies desired mipmap behaviour for the
@@ -2588,7 +2588,7 @@
 
     /**
      * Creates an Allocation for use by scripts with a given {@link
-     * android.support.v8.renderscript.Type} and no mipmaps
+     * androidx.renderscript.Type} and no mipmaps
      *
      * @param rs Context to which the Allocation will belong.
      * @param type RenderScript Type describing data layout
diff --git a/support/java/src/android/support/v8/renderscript/BaseObj.java b/support/java/src/androidx/renderscript/BaseObj.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/BaseObj.java
rename to support/java/src/androidx/renderscript/BaseObj.java
index bb49600..eda0066 100644
--- a/support/java/src/android/support/v8/renderscript/BaseObj.java
+++ b/support/java/src/androidx/renderscript/BaseObj.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
diff --git a/support/java/src/android/support/v8/renderscript/Byte2.java b/support/java/src/androidx/renderscript/Byte2.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Byte2.java
rename to support/java/src/androidx/renderscript/Byte2.java
index 2371077..cf738f4 100644
--- a/support/java/src/android/support/v8/renderscript/Byte2.java
+++ b/support/java/src/androidx/renderscript/Byte2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Byte3.java b/support/java/src/androidx/renderscript/Byte3.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Byte3.java
rename to support/java/src/androidx/renderscript/Byte3.java
index 4ed6af6..559e34a 100644
--- a/support/java/src/android/support/v8/renderscript/Byte3.java
+++ b/support/java/src/androidx/renderscript/Byte3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Byte4.java b/support/java/src/androidx/renderscript/Byte4.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Byte4.java
rename to support/java/src/androidx/renderscript/Byte4.java
index 715a718..0a71e63 100644
--- a/support/java/src/android/support/v8/renderscript/Byte4.java
+++ b/support/java/src/androidx/renderscript/Byte4.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Double2.java b/support/java/src/androidx/renderscript/Double2.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Double2.java
rename to support/java/src/androidx/renderscript/Double2.java
index cd73363..9abcd01 100644
--- a/support/java/src/android/support/v8/renderscript/Double2.java
+++ b/support/java/src/androidx/renderscript/Double2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Double3.java b/support/java/src/androidx/renderscript/Double3.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Double3.java
rename to support/java/src/androidx/renderscript/Double3.java
index 38a46a6..0d07a50 100644
--- a/support/java/src/android/support/v8/renderscript/Double3.java
+++ b/support/java/src/androidx/renderscript/Double3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Double4.java b/support/java/src/androidx/renderscript/Double4.java
similarity index 96%
rename from support/java/src/android/support/v8/renderscript/Double4.java
rename to support/java/src/androidx/renderscript/Double4.java
index 6de0fa8..3350abf 100644
--- a/support/java/src/android/support/v8/renderscript/Double4.java
+++ b/support/java/src/androidx/renderscript/Double4.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Element.java b/support/java/src/androidx/renderscript/Element.java
similarity index 97%
rename from support/java/src/android/support/v8/renderscript/Element.java
rename to support/java/src/androidx/renderscript/Element.java
index 135d854..44dbc61 100644
--- a/support/java/src/android/support/v8/renderscript/Element.java
+++ b/support/java/src/androidx/renderscript/Element.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.reflect.Field;
 
@@ -22,7 +22,7 @@
 
 /**
  * <p>An Element represents one item within an {@link
- * android.support.v8.renderscript.Allocation}.  An Element is roughly
+ * androidx.renderscript.Allocation}.  An Element is roughly
  * equivalent to a C type in a RenderScript kernel. Elements may be basic or
  * complex. Some basic elements are</p> <ul> <li>A single float value
  * (equivalent to a float in a kernel)</li> <li>A four-element float vector
@@ -37,18 +37,18 @@
  * script.</p>
  *
  * <p>Basic Elements are comprised of a {@link
- * android.support.v8.renderscript.Element.DataType} and a {@link
- * android.support.v8.renderscript.Element.DataKind}. The DataType encodes C
+ * androidx.renderscript.Element.DataType} and a {@link
+ * androidx.renderscript.Element.DataKind}. The DataType encodes C
  * type information of an Element, while the DataKind encodes how that Element
- * should be interpreted by a {@link android.support.v8.renderscript.Sampler}.
- * Note that {@link android.support.v8.renderscript.Allocation} objects with
- * DataKind {@link android.support.v8.renderscript.Element.DataKind#USER} cannot
- * be used as input for a {@link android.support.v8.renderscript.Sampler}. In
- * general, {@link android.support.v8.renderscript.Allocation} objects that are
- * intended for use with a {@link android.support.v8.renderscript.Sampler}
+ * should be interpreted by a {@link androidx.renderscript.Sampler}.
+ * Note that {@link androidx.renderscript.Allocation} objects with
+ * DataKind {@link androidx.renderscript.Element.DataKind#USER} cannot
+ * be used as input for a {@link androidx.renderscript.Sampler}. In
+ * general, {@link androidx.renderscript.Allocation} objects that are
+ * intended for use with a {@link androidx.renderscript.Sampler}
  * should use bitmap-derived Elements such as
- * {@link android.support.v8.renderscript.Element#RGBA_8888} or {@link
- * android.support.v8.renderscript#Element.A_8}.</p>
+ * {@link androidx.renderscript.Element#RGBA_8888} or {@link
+ * androidx.renderscript#Element.A_8}.</p>
  *
  * <div class="special reference">
  * <h3>Developer Guides</h3>
diff --git a/support/java/src/android/support/v8/renderscript/FieldPacker.java b/support/java/src/androidx/renderscript/FieldPacker.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/FieldPacker.java
rename to support/java/src/androidx/renderscript/FieldPacker.java
index 5f61920..34e9ae6 100644
--- a/support/java/src/android/support/v8/renderscript/FieldPacker.java
+++ b/support/java/src/androidx/renderscript/FieldPacker.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 import java.util.BitSet;
 
 /**
diff --git a/support/java/src/android/support/v8/renderscript/Float2.java b/support/java/src/androidx/renderscript/Float2.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Float2.java
rename to support/java/src/androidx/renderscript/Float2.java
index edbc5aa..01a166b 100644
--- a/support/java/src/android/support/v8/renderscript/Float2.java
+++ b/support/java/src/androidx/renderscript/Float2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Float3.java b/support/java/src/androidx/renderscript/Float3.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Float3.java
rename to support/java/src/androidx/renderscript/Float3.java
index 90162a1..bb7932a 100644
--- a/support/java/src/android/support/v8/renderscript/Float3.java
+++ b/support/java/src/androidx/renderscript/Float3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Float4.java b/support/java/src/androidx/renderscript/Float4.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Float4.java
rename to support/java/src/androidx/renderscript/Float4.java
index d0dc568..8336d9e 100644
--- a/support/java/src/android/support/v8/renderscript/Float4.java
+++ b/support/java/src/androidx/renderscript/Float4.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Int2.java b/support/java/src/androidx/renderscript/Int2.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Int2.java
rename to support/java/src/androidx/renderscript/Int2.java
index e5d04b8..fe86fe3 100644
--- a/support/java/src/android/support/v8/renderscript/Int2.java
+++ b/support/java/src/androidx/renderscript/Int2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Int3.java b/support/java/src/androidx/renderscript/Int3.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Int3.java
rename to support/java/src/androidx/renderscript/Int3.java
index 12f59e8..bd6fbc7 100644
--- a/support/java/src/android/support/v8/renderscript/Int3.java
+++ b/support/java/src/androidx/renderscript/Int3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Int4.java b/support/java/src/androidx/renderscript/Int4.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Int4.java
rename to support/java/src/androidx/renderscript/Int4.java
index bb49fb1..91e0b9f 100644
--- a/support/java/src/android/support/v8/renderscript/Int4.java
+++ b/support/java/src/androidx/renderscript/Int4.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Long2.java b/support/java/src/androidx/renderscript/Long2.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Long2.java
rename to support/java/src/androidx/renderscript/Long2.java
index b3c95f2..0871706 100644
--- a/support/java/src/android/support/v8/renderscript/Long2.java
+++ b/support/java/src/androidx/renderscript/Long2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Long3.java b/support/java/src/androidx/renderscript/Long3.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Long3.java
rename to support/java/src/androidx/renderscript/Long3.java
index 6ce0f83..250b50f 100644
--- a/support/java/src/android/support/v8/renderscript/Long3.java
+++ b/support/java/src/androidx/renderscript/Long3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Long4.java b/support/java/src/androidx/renderscript/Long4.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Long4.java
rename to support/java/src/androidx/renderscript/Long4.java
index d44a321..438d34e 100644
--- a/support/java/src/android/support/v8/renderscript/Long4.java
+++ b/support/java/src/androidx/renderscript/Long4.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Matrix2f.java b/support/java/src/androidx/renderscript/Matrix2f.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/Matrix2f.java
rename to support/java/src/androidx/renderscript/Matrix2f.java
index 9a8b5bf..b5c5a08 100644
--- a/support/java/src/android/support/v8/renderscript/Matrix2f.java
+++ b/support/java/src/androidx/renderscript/Matrix2f.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Matrix3f.java b/support/java/src/androidx/renderscript/Matrix3f.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/Matrix3f.java
rename to support/java/src/androidx/renderscript/Matrix3f.java
index 4528543..699c42b 100644
--- a/support/java/src/android/support/v8/renderscript/Matrix3f.java
+++ b/support/java/src/androidx/renderscript/Matrix3f.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Matrix4f.java b/support/java/src/androidx/renderscript/Matrix4f.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/Matrix4f.java
rename to support/java/src/androidx/renderscript/Matrix4f.java
index b9e5636..6a38af8 100644
--- a/support/java/src/android/support/v8/renderscript/Matrix4f.java
+++ b/support/java/src/androidx/renderscript/Matrix4f.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/RSDriverException.java b/support/java/src/androidx/renderscript/RSDriverException.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/RSDriverException.java
rename to support/java/src/androidx/renderscript/RSDriverException.java
index d4ae341..11b5be2 100644
--- a/support/java/src/android/support/v8/renderscript/RSDriverException.java
+++ b/support/java/src/androidx/renderscript/RSDriverException.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 /**
diff --git a/support/java/src/android/support/v8/renderscript/RSIllegalArgumentException.java b/support/java/src/androidx/renderscript/RSIllegalArgumentException.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/RSIllegalArgumentException.java
rename to support/java/src/androidx/renderscript/RSIllegalArgumentException.java
index 378a49c..6e7c0e9 100644
--- a/support/java/src/android/support/v8/renderscript/RSIllegalArgumentException.java
+++ b/support/java/src/androidx/renderscript/RSIllegalArgumentException.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 /**
diff --git a/support/java/src/android/support/v8/renderscript/RSInvalidStateException.java b/support/java/src/androidx/renderscript/RSInvalidStateException.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/RSInvalidStateException.java
rename to support/java/src/androidx/renderscript/RSInvalidStateException.java
index a5676a3..82cc7c9 100644
--- a/support/java/src/android/support/v8/renderscript/RSInvalidStateException.java
+++ b/support/java/src/androidx/renderscript/RSInvalidStateException.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 /**
diff --git a/support/java/src/android/support/v8/renderscript/RSRuntimeException.java b/support/java/src/androidx/renderscript/RSRuntimeException.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/RSRuntimeException.java
rename to support/java/src/androidx/renderscript/RSRuntimeException.java
index ec83365..886cd14 100644
--- a/support/java/src/android/support/v8/renderscript/RSRuntimeException.java
+++ b/support/java/src/androidx/renderscript/RSRuntimeException.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 /**
diff --git a/support/java/src/android/support/v8/renderscript/RenderScript.java b/support/java/src/androidx/renderscript/RenderScript.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/RenderScript.java
rename to support/java/src/androidx/renderscript/RenderScript.java
index bd0c78b..cf80342 100644
--- a/support/java/src/android/support/v8/renderscript/RenderScript.java
+++ b/support/java/src/androidx/renderscript/RenderScript.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.io.File;
 import java.lang.reflect.Field;
@@ -205,14 +205,14 @@
 
                 if (info.metaData != null) {
                     // asynchronous teardown: minor version 1+
-                    if (info.metaData.getBoolean("com.android.support.v8.renderscript.EnableAsyncTeardown") == true) {
+                    if (info.metaData.getBoolean("androidx.renderscript.EnableAsyncTeardown") == true) {
                         if (minorVersion == 0) {
                             sNative = 0;
                         }
                     }
 
                     // blur issues on some drivers with 4.4
-                    if (info.metaData.getBoolean("com.android.support.v8.renderscript.EnableBlurWorkaround") == true) {
+                    if (info.metaData.getBoolean("androidx.renderscript.EnableBlurWorkaround") == true) {
                         if (android.os.Build.VERSION.SDK_INT <= 19) {
                             //android.util.Log.e("rs", "war on");
                             sNative = 0;
@@ -1143,7 +1143,7 @@
      * some time after {@code rsSendToClient} completes in the script,
      * as {@code rsSendToClient} is asynchronous. Message handlers are
      * not guaranteed to have completed when {@link
-     * android.support.v8.renderscript.RenderScript#finish} returns.
+     * androidx.renderscript.RenderScript#finish} returns.
      *
      */
     public static class RSMessageHandler implements Runnable {
diff --git a/support/java/src/android/support/v8/renderscript/Sampler.java b/support/java/src/androidx/renderscript/Sampler.java
similarity index 97%
rename from support/java/src/android/support/v8/renderscript/Sampler.java
rename to support/java/src/androidx/renderscript/Sampler.java
index 7119e8c..57b94d5 100644
--- a/support/java/src/android/support/v8/renderscript/Sampler.java
+++ b/support/java/src/androidx/renderscript/Sampler.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 import java.io.IOException;
@@ -33,10 +33,10 @@
  * function to return values from normalized coordinates.
  *
  * Any Allocation used with a Sampler must have been created with {@link
- * android.support.v8.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}; using a
- * Sampler on an {@link android.support.v8.renderscript.Allocation} that was not
+ * androidx.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}; using a
+ * Sampler on an {@link androidx.renderscript.Allocation} that was not
  * created with
- * {@link android.support.v8.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} is
+ * {@link androidx.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} is
  * undefined.
  **/
 public class Sampler extends BaseObj {
diff --git a/support/java/src/android/support/v8/renderscript/Script.java b/support/java/src/androidx/renderscript/Script.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/Script.java
rename to support/java/src/androidx/renderscript/Script.java
index ec3a7a9..49c0039 100644
--- a/support/java/src/android/support/v8/renderscript/Script.java
+++ b/support/java/src/androidx/renderscript/Script.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.SparseArray;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptC.java b/support/java/src/androidx/renderscript/ScriptC.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptC.java
rename to support/java/src/androidx/renderscript/ScriptC.java
index 28e9613..31201b1 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptC.java
+++ b/support/java/src/androidx/renderscript/ScriptC.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.content.Context;
 import android.content.res.Resources;
diff --git a/support/java/src/android/support/v8/renderscript/ScriptGroup.java b/support/java/src/androidx/renderscript/ScriptGroup.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/ScriptGroup.java
rename to support/java/src/androidx/renderscript/ScriptGroup.java
index 139fde2..ba8cf4b 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptGroup.java
+++ b/support/java/src/androidx/renderscript/ScriptGroup.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 import android.util.Pair;
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsic.java b/support/java/src/androidx/renderscript/ScriptIntrinsic.java
similarity index 96%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsic.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsic.java
index e59cf6d..cf7b72e 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsic.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsic.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 /**
  * Base class for all Intrinsic scripts. An intrinsic a script
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java b/support/java/src/androidx/renderscript/ScriptIntrinsic3DLUT.java
similarity index 93%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsic3DLUT.java
index 7fc71f3..e7b6a07 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsic3DLUT.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsic3DLUT.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
@@ -63,11 +63,11 @@
     }
 
     /**
-     * Sets the {@link android.support.v8.renderscript.Allocation} to be used as
+     * Sets the {@link androidx.renderscript.Allocation} to be used as
      * the lookup table.
      *
      * The lookup table must use the same
-     * {@link android.support.v8.renderscript.Element} as the intrinsic.
+     * {@link androidx.renderscript.Element} as the intrinsic.
      *
      */
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicBLAS.java b/support/java/src/androidx/renderscript/ScriptIntrinsicBLAS.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicBLAS.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicBLAS.java
index fe32989..7d8e668 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicBLAS.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicBLAS.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.support.annotation.IntDef;
 import java.lang.annotation.Retention;
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java b/support/java/src/androidx/renderscript/ScriptIntrinsicBlend.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicBlend.java
index eef581e..c7e174d 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicBlend.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicBlend.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 /**
  * Intrinsic kernels for blending two
- * {@link android.support.v8.renderscript.Allocation} objects.
+ * {@link androidx.renderscript.Allocation} objects.
  **/
 public class ScriptIntrinsicBlend extends ScriptIntrinsic {
     // API level for the intrinsic
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java b/support/java/src/androidx/renderscript/ScriptIntrinsicBlur.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicBlur.java
index 926d7d3..4024416 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicBlur.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicBlur.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.content.Context;
 import android.content.res.Resources;
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java b/support/java/src/androidx/renderscript/ScriptIntrinsicColorMatrix.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicColorMatrix.java
index f03526e..a0a247d 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicColorMatrix.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicColorMatrix.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java b/support/java/src/androidx/renderscript/ScriptIntrinsicConvolve3x3.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicConvolve3x3.java
index 17889aa..d4e57b0 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve3x3.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicConvolve3x3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java b/support/java/src/androidx/renderscript/ScriptIntrinsicConvolve5x5.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicConvolve5x5.java
index 2c591ba..298596e 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicConvolve5x5.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicConvolve5x5.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicHistogram.java b/support/java/src/androidx/renderscript/ScriptIntrinsicHistogram.java
similarity index 99%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicHistogram.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicHistogram.java
index e3e6406..3437f2c 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicHistogram.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicHistogram.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java b/support/java/src/androidx/renderscript/ScriptIntrinsicLUT.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicLUT.java
index 0b905ba..6434903 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicLUT.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicLUT.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicResize.java b/support/java/src/androidx/renderscript/ScriptIntrinsicResize.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicResize.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicResize.java
index 61c169c..c3450f1 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicResize.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicResize.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import android.util.Log;
 
diff --git a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java b/support/java/src/androidx/renderscript/ScriptIntrinsicYuvToRGB.java
similarity index 98%
rename from support/java/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java
rename to support/java/src/androidx/renderscript/ScriptIntrinsicYuvToRGB.java
index 6c84020..8749398 100644
--- a/support/java/src/android/support/v8/renderscript/ScriptIntrinsicYuvToRGB.java
+++ b/support/java/src/androidx/renderscript/ScriptIntrinsicYuvToRGB.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 /**
diff --git a/support/java/src/android/support/v8/renderscript/Short2.java b/support/java/src/androidx/renderscript/Short2.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Short2.java
rename to support/java/src/androidx/renderscript/Short2.java
index 365b319..f06d746 100644
--- a/support/java/src/android/support/v8/renderscript/Short2.java
+++ b/support/java/src/androidx/renderscript/Short2.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Short3.java b/support/java/src/androidx/renderscript/Short3.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Short3.java
rename to support/java/src/androidx/renderscript/Short3.java
index abf8196..fbf9a89 100644
--- a/support/java/src/android/support/v8/renderscript/Short3.java
+++ b/support/java/src/androidx/renderscript/Short3.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Short4.java b/support/java/src/androidx/renderscript/Short4.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Short4.java
rename to support/java/src/androidx/renderscript/Short4.java
index d2108e4..1e479d2 100644
--- a/support/java/src/android/support/v8/renderscript/Short4.java
+++ b/support/java/src/androidx/renderscript/Short4.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 import java.lang.Math;
 import android.util.Log;
diff --git a/support/java/src/android/support/v8/renderscript/Type.java b/support/java/src/androidx/renderscript/Type.java
similarity index 95%
rename from support/java/src/android/support/v8/renderscript/Type.java
rename to support/java/src/androidx/renderscript/Type.java
index 6aeb9ea..cec834c 100644
--- a/support/java/src/android/support/v8/renderscript/Type.java
+++ b/support/java/src/androidx/renderscript/Type.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package android.support.v8.renderscript;
+package androidx.renderscript;
 
 
 import java.lang.reflect.Field;
@@ -23,12 +23,12 @@
 import android.util.Log;
 
 /**
- * <p>A Type describes the {@link android.support.v8.renderscript.Element} and
- * dimensions used for an {@link android.support.v8.renderscript.Allocation} or
+ * <p>A Type describes the {@link androidx.renderscript.Element} and
+ * dimensions used for an {@link androidx.renderscript.Allocation} or
  * a parallel operation. Types are created through
- * {@link android.support.v8.renderscript.Type.Builder}.</p>
+ * {@link androidx.renderscript.Type.Builder}.</p>
  *
- * <p>A Type always includes an {@link android.support.v8.renderscript.Element}
+ * <p>A Type always includes an {@link androidx.renderscript.Element}
  * and an X dimension. A Type may be multidimensional, up to three dimensions.
  * A nonzero value in the Y or Z dimensions indicates that the dimension is
  * present. Note that a Type with only a given X dimension and a Type with the
@@ -39,7 +39,7 @@
  * present. </p>
  *
  * <p>A Type also supports YUV format information to support an {@link
- * android.support.v8.renderscript.Allocation} in a YUV format. The YUV formats
+ * androidx.renderscript.Allocation} in a YUV format. The YUV formats
  * supported are {@link android.graphics.ImageFormat#YV12} and {@link
  * android.graphics.ImageFormat#NV21}.</p>
  *
diff --git a/support/jni/android_renderscript_RenderScript.cpp b/support/jni/android_renderscript_RenderScript.cpp
index a590600..b65243c 100644
--- a/support/jni/android_renderscript_RenderScript.cpp
+++ b/support/jni/android_renderscript_RenderScript.cpp
@@ -2279,7 +2279,7 @@
 // ---------------------------------------------------------------------------
 
 
-static const char *classPathName = "android/support/v8/renderscript/RenderScript";
+static const char *classPathName = "androidx/renderscript/RenderScript";
 
 static JNINativeMethod methods[] = {
 {"nLoadSO",                        "(ZILjava/lang/String;)Z",                 (bool*)nLoadSO },
diff --git a/tests/java_api/CannyLive/Android.mk b/tests/java_api/CannyLive/Android.mk
index 2e50bec..9481365 100644
--- a/tests/java_api/CannyLive/Android.mk
+++ b/tests/java_api/CannyLive/Android.mk
@@ -18,13 +18,14 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
+LOCAL_USE_AAPT2 :=true
+LOCAL_STATIC_ANDROID_LIBRARIES += androidx.legacy_legacy-support-v4
+LOCAL_STATIC_ANDROID_LIBRARIES += androidx.appcompat_appcompat
 LOCAL_AAPT_FLAGS += --extra-packages android.support.v7.appcompat
 LOCAL_RENDERSCRIPT_TARGET_API := 22
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-LOCAL_SDK_VERSION := 23
+LOCAL_SDK_VERSION := current
 
 LOCAL_PACKAGE_NAME := CannyLive
 
diff --git a/tests/java_api/CannyLive/src/com/android/example/cannylive/MainActivity.java b/tests/java_api/CannyLive/src/com/android/example/cannylive/MainActivity.java
index 75d8d47..44c773f 100644
--- a/tests/java_api/CannyLive/src/com/android/example/cannylive/MainActivity.java
+++ b/tests/java_api/CannyLive/src/com/android/example/cannylive/MainActivity.java
@@ -20,8 +20,8 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.ContextCompat;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
diff --git a/tests/java_api/HealingBrush/Android.mk b/tests/java_api/HealingBrush/Android.mk
index d8697d1..89ec9ad 100644
--- a/tests/java_api/HealingBrush/Android.mk
+++ b/tests/java_api/HealingBrush/Android.mk
@@ -34,7 +34,7 @@
     $(TOPDIR)external/clang/lib/Headers \
     $(TOPDIR)frameworks/rs/script_api/include
 
-LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
+LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript
 LOCAL_JNI_SHARED_LIBRARIES := librsjni
 
 include $(BUILD_PACKAGE)
diff --git a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
index 7f2f3aa..5c80282 100644
--- a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
+++ b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/FindRegion.java
@@ -23,11 +23,11 @@
 import android.graphics.Path;
 import android.graphics.Rect;
 import android.graphics.RectF;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Script;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Script;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 import com.example.android.rs.sample.ScriptC_find_region;
diff --git a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java
index 59657ff..d8ace43 100644
--- a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java
+++ b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Healing.java
@@ -22,11 +22,11 @@
 import android.graphics.Paint;
 import android.graphics.Path;
 import android.graphics.Rect;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Script;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Script;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 import com.example.android.rs.sample.ScriptC_healing;
diff --git a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
index 7912dd5..1dc703b 100644
--- a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
+++ b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/MainActivity.java
@@ -28,7 +28,7 @@
 import android.os.Bundle;
 import android.os.Environment;
 import android.provider.OpenableColumns;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
diff --git a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Region.java b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Region.java
index ffd9117..2e42c2f 100644
--- a/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Region.java
+++ b/tests/java_api/HealingBrush/src/rs/example/android/com/healingbrush/Region.java
@@ -28,11 +28,11 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.drawable.Drawable;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Script;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Script;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 import com.example.android.rs.sample.ScriptC_find_region;
diff --git a/tests/java_api/ImageProcessing2/Android.mk b/tests/java_api/ImageProcessing2/Android.mk
index 54d8dc0..8cf7a5a 100644
--- a/tests/java_api/ImageProcessing2/Android.mk
+++ b/tests/java_api/ImageProcessing2/Android.mk
@@ -31,7 +31,7 @@
 LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE := $(TOPDIR)external/clang/lib/Headers \
                                         $(TOPDIR)frameworks/rs/script_api/include
 
-LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
+LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript
 LOCAL_JNI_SHARED_LIBRARIES := librsjni
 
 include $(BUILD_PACKAGE)
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Artistic1.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Artistic1.java
index 611b1c4..631e1b3 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Artistic1.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Artistic1.java
@@ -16,7 +16,7 @@
 
 package com.android.rs.image2;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class Artistic1 extends TestBase {
     private ScriptC_artistic1 mScript;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blend.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blend.java
index 7513bd4..507c8b2 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blend.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blend.java
@@ -19,7 +19,7 @@
 import java.lang.Math;
 import java.lang.Short;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import android.widget.SeekBar;
 import android.widget.TextView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25.java
index 374693b..8657447 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import android.widget.SeekBar;
 import android.widget.TextView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25G.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25G.java
index 0d6939e..9b1927f 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25G.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Blur25G.java
@@ -19,7 +19,7 @@
 import java.lang.Math;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import android.widget.SeekBar;
 import android.widget.TextView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorCube.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorCube.java
index 49181f1..1022253 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorCube.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorCube.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class ColorCube extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java
index 8da1615..4b9cd37 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ColorMatrix.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class ColorMatrix extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
index 89342dc..8d3f720 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve3x3.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class Convolve3x3 extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java
index 0dc4103..7af9743 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Convolve5x5.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class Convolve5x5 extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Copy.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Copy.java
index a5d15e5..21bd45c 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Copy.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Copy.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class Copy extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/CrossProcess.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/CrossProcess.java
index 96787d7..53c746c 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/CrossProcess.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/CrossProcess.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class CrossProcess extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Exposure.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Exposure.java
index deb6b46..31c8f06 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Exposure.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Exposure.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class Exposure extends TestBase {
     private ScriptC_exposure mScript;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Fisheye.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Fisheye.java
index 22bdd8e..83bbe25 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Fisheye.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Fisheye.java
@@ -16,7 +16,7 @@
 
 package com.android.rs.image2;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.widget.SeekBar;
 import android.widget.TextView;
 
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Grain.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Grain.java
index 4939ea3..dcc2419 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Grain.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Grain.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import android.widget.SeekBar;
 import android.widget.TextView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/GroupTest.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/GroupTest.java
index c224574..7af648c 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/GroupTest.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/GroupTest.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class GroupTest extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java
index 087889c..efa11eb 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/ImageProcessingActivity2.java
@@ -23,7 +23,7 @@
 import android.graphics.BitmapFactory;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.os.Handler;
 import android.os.Message;
 import android.widget.AdapterView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/LevelsV4.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/LevelsV4.java
index 1f2dd60..d6502fe 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/LevelsV4.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/LevelsV4.java
@@ -18,7 +18,7 @@
 
 import java.lang.Math;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import android.widget.SeekBar;
 import android.widget.TextView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Posterize.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Posterize.java
index fb1867e..b68a5b5 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Posterize.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Posterize.java
@@ -16,7 +16,7 @@
 
 package com.android.rs.image2;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class Posterize extends TestBase {
     private ScriptC_posterize mScript;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Resize.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Resize.java
index 4353324..51a6ab6 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/Resize.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/Resize.java
@@ -16,7 +16,7 @@
 
 package com.android.rs.image2;
 
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 
 public class Resize extends TestBase {
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/TestBase.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/TestBase.java
index 1939c4c..c846fb3 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/TestBase.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/TestBase.java
@@ -18,7 +18,7 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.widget.ImageView;
 import android.widget.SeekBar;
 import android.widget.TextView;
diff --git a/tests/java_api/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java b/tests/java_api/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java
index fa6088b..0cd1a3e 100644
--- a/tests/java_api/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java
+++ b/tests/java_api/ImageProcessing2/src/com/android/rs/image/WhiteBalance.java
@@ -17,9 +17,9 @@
 package com.android.rs.image2;
 
 import java.lang.Math;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.ScriptIntrinsicHistogram;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.ScriptIntrinsicHistogram;
 
 public class WhiteBalance extends TestBase {
     private ScriptC_wbalance mScript;
diff --git a/tests/java_api/RSTest_CompatLib/Android.mk b/tests/java_api/RSTest_CompatLib/Android.mk
index 741f7ce..6f8e247 100644
--- a/tests/java_api/RSTest_CompatLib/Android.mk
+++ b/tests/java_api/RSTest_CompatLib/Android.mk
@@ -36,7 +36,7 @@
 LOCAL_SDK_VERSION := current
 LOCAL_MIN_SDK_VERSION := 8
 
-LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
+LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript
 
 include $(BUILD_PACKAGE)
 
diff --git a/tests/java_api/RSTest_CompatLib19/Android.mk b/tests/java_api/RSTest_CompatLib19/Android.mk
index 7120de8..84e71f1 100644
--- a/tests/java_api/RSTest_CompatLib19/Android.mk
+++ b/tests/java_api/RSTest_CompatLib19/Android.mk
@@ -29,7 +29,7 @@
 
 LOCAL_RENDERSCRIPT_TARGET_API := 19
 LOCAL_RENDERSCRIPT_COMPATIBILITY := true
-LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
+LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript
 LOCAL_SDK_VERSION := current
 LOCAL_MIN_SDK_VERSION := 8
 
diff --git a/tests/java_api/RSTest_CompatLibLegacy/Android.mk b/tests/java_api/RSTest_CompatLibLegacy/Android.mk
index ff841e7..66df528 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/Android.mk
+++ b/tests/java_api/RSTest_CompatLibLegacy/Android.mk
@@ -40,7 +40,7 @@
     $(TOPDIR)external/clang/lib/Headers \
     $(TOPDIR)frameworks/rs/script_api/include
 
-LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
+LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript
 LOCAL_JNI_SHARED_LIBRARIES := librsjni
 LOCAL_32_BIT_ONLY := true
 
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java
index 10aed17..74ffbbd 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTest.java
@@ -16,7 +16,7 @@
 
 package com.android.rs.test_compatlegacy;
 
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 import android.app.ListActivity;
 import android.content.res.Configuration;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java
index d059e45..ae2424c 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/RSTestCore.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import java.util.ArrayList;
 import java.util.ListIterator;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java
index 44f3c30..59577dd 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_alloc extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java
index 30c4e64..94ea025 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copy.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import java.util.Random;
 
 public class UT_alloc_copy extends UnitTest {
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java
index 968ac30..ef44230 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_alloc_copyPadded.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import java.util.Random;
 
 public class UT_alloc_copyPadded extends UnitTest {
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java
index fd5fc8b..e189661 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_apitest.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_apitest extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java
index fc0d083..ffb1d4e 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_alloc.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_array_alloc extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java
index 023e474..0984ab9 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_array_init.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_array_init extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java
index 947bc7d..5cfea7c 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_atomic.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_atomic extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java
index c9484d1..3d9df60 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_bug_char.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import java.util.Arrays;
 
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java
index 5531703..f548035 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_clamp extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java
index ed4ebc7..13e4484 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_clamp_relaxed.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_clamp_relaxed extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java
index 8e6bf6d..2f84301 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_constant.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_constant extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java
index 5e7c60e..3948666 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_convert extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java
index 02de251..4c88a1e 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_convert_relaxed.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_convert_relaxed extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java
index dffea64..e8282c9 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_copy_test.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class UT_copy_test extends UnitTest {
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java
index 4afcb50..23267be 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_element.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_element extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java
index e0d8cb1..99fd9e3 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_foreach extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java
index 88f22ac..b775edd 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_foreach_bounds.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_foreach_bounds extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java
index d16f341..ea80435 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_fp_mad.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_fp_mad extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java
index 2e77e67..117cd51 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_instance.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_instance extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java
index 6f28372..bf9c73d 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_int4.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_int4 extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java
index 4b30598..0933567 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class UT_kernel extends UnitTest {
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java
index b0f2bbe..b9e5b90 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_kernel_struct.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 
 public class UT_kernel_struct extends UnitTest {
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java
index 8accd46..7e61af4 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_math extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java
index 5b050cd..3b0bbfd 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_agree.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 import android.util.Log;
 import java.util.Arrays;
 import java.util.Random;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java
index d593514..540d5f1 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_math_conformance.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_math_conformance extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java
index a9c31a1..d1e7fb5 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_min.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_min extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java
index 487e999..811b43a 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_noroot.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_noroot extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java
index 3110b71..f600139 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_primitives.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_primitives extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java
index 8e8b4b5..4391240 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_refcount.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_refcount extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java
index 8f4976e..49bc597 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rsdebug.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_rsdebug extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java
index 0e38924..a0eb61c 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstime.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_rstime extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java
index 329a92a..d26ae3a 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_rstypes.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_rstypes extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java
index ffba30f..f901bfb 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_sampler.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_sampler extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java
index 127397e..47f3dcb 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_struct.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_struct extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java
index d2fb5f3..877035a 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_unsigned.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_unsigned extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java
index 3707cbf..27140c7 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UT_vector.java
@@ -18,7 +18,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.*;
+import androidx.renderscript.*;
 
 public class UT_vector extends UnitTest {
     private Resources mRes;
diff --git a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java
index cb1e7ce..5e5d54e 100644
--- a/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java
+++ b/tests/java_api/RSTest_CompatLibLegacy/src/com/android/rs/test/UnitTest.java
@@ -17,7 +17,7 @@
 package com.android.rs.test_compatlegacy;
 import android.content.Context;
 import android.util.Log;
-import android.support.v8.renderscript.RenderScript.RSMessageHandler;
+import androidx.renderscript.RenderScript.RSMessageHandler;
 
 public class UnitTest extends Thread {
     public String name;
diff --git a/tests/java_api/RSUnitTests/RSUnitTests.py b/tests/java_api/RSUnitTests/RSUnitTests.py
index 6e464ed..aca2ba6 100644
--- a/tests/java_api/RSUnitTests/RSUnitTests.py
+++ b/tests/java_api/RSUnitTests/RSUnitTests.py
@@ -327,7 +327,7 @@
     for line in in_file.readlines():
       if line.startswith('import android.renderscript.'):
         line = line.replace('android.renderscript.',
-                            'android.support.v8.renderscript.')
+                            'androidx.renderscript.')
       out_file.write(line)
 
 
@@ -398,7 +398,7 @@
       '    android-support-v8-renderscript \\\n\n'
       'LOCAL_RENDERSCRIPT_TARGET_API := 19\n'
       'LOCAL_RENDERSCRIPT_COMPATIBILITY := true\n'
-      'LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript\n'
+      'LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript\n'
       'LOCAL_SDK_VERSION := current\n'
       'LOCAL_MIN_SDK_VERSION := 8\n\n'
       'my_rs_unit_tests_path := ../RSUnitTests/supportlibsrc_gen/com/android/rs/unittest\n'
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc.java
index cf2f4f8..039f7d5 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_alloc extends UnitTest {
     private Type T;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copy.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copy.java
index 230598e..b21a08f 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copy.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copy.java
@@ -20,10 +20,10 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 import java.util.Random;
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copyPadded.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copyPadded.java
index fa13c02..a37bfb9 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copyPadded.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_copyPadded.java
@@ -20,10 +20,10 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 import java.util.Random;
 
 public class UT_alloc_copyPadded extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_supportlib.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_supportlib.java
index 48abaa1..92f2fce 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_supportlib.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_alloc_supportlib.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_alloc_supportlib extends UnitTest {
     private Type T;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_apitest.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_apitest.java
index 89bf3fb..f95e5a6 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_apitest.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_apitest.java
@@ -20,11 +20,11 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Sampler;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Sampler;
+import androidx.renderscript.Type;
 
 public class UT_apitest extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_alloc.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_alloc.java
index 48b4dcc..9852f37 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_alloc.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_alloc.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_array_alloc extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_init.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_init.java
index 337f982..f8f2b8a 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_init.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_array_init.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_array_init extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_atomic.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_atomic.java
index 3feb460..4b7545b 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_atomic.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_atomic.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_atomic extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bitfield.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bitfield.java
index 0db0b74..35bf382 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bitfield.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bitfield.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_bitfield extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_blur_validation.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_blur_validation.java
index 918805b..0aff441 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_blur_validation.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_blur_validation.java
@@ -17,12 +17,12 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.RSIllegalArgumentException;
-import android.support.v8.renderscript.ScriptIntrinsicBlur;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.RSIllegalArgumentException;
+import androidx.renderscript.ScriptIntrinsicBlur;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 // Tests that ScriptIntrinsicBlur properly throws exception if input or output
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bug_char.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bug_char.java
index da253b6..9402f29 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bug_char.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_bug_char.java
@@ -19,8 +19,8 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Byte2;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Byte2;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 
 import java.util.Arrays;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_check_dims.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_check_dims.java
index eaa4d01..931f99c 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_check_dims.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_check_dims.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_check_dims extends UnitTest {
     byte mFailedArr[];
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp.java
index 05e5817..f42f354 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_clamp extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp_relaxed.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp_relaxed.java
index 3215768..584a248 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp_relaxed.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_clamp_relaxed.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_clamp_relaxed extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert.java
index 5309ccf..868a318 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_convert extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert_relaxed.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert_relaxed.java
index d6a067b..ef20dc1 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert_relaxed.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_convert_relaxed.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_convert_relaxed extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_copy_test.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_copy_test.java
index 8e21517..fa8d32f 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_copy_test.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_copy_test.java
@@ -19,9 +19,9 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 
 public class UT_copy_test extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_ctxt_default.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_ctxt_default.java
index 275bdd3..1719e8a 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_ctxt_default.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_ctxt_default.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_ctxt_default extends UnitTest {
     private Type T;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_element.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_element.java
index 317fc73..0253b79 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_element.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_element.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.Element.DataKind;
-import android.support.v8.renderscript.Element.DataType;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Element;
+import androidx.renderscript.Element.DataKind;
+import androidx.renderscript.Element.DataType;
+import androidx.renderscript.RenderScript;
 
 public class UT_element extends UnitTest {
     Element simpleElem;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach.java
index 1fa4818..9c9ed5d 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_foreach extends UnitTest {
     private Allocation A;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_bounds.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_bounds.java
index 90919d7..13b150f 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_bounds.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_bounds.java
@@ -19,11 +19,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Script;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Script;
+import androidx.renderscript.Type;
 
 public class UT_foreach_bounds extends UnitTest {
     private Allocation A;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_multi.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_multi.java
index 7306e8e..a27f50e 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_multi.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_foreach_multi.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_foreach_multi extends UnitTest {
     private Allocation Ain0;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_fp_mad.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_fp_mad.java
index b561357..736270c 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_fp_mad.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_fp_mad.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_fp_mad extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_instance.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_instance.java
index cc9f591..360fc56 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_instance.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_instance.java
@@ -20,10 +20,10 @@
 
 import android.content.Context;
 import android.content.res.Resources;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_instance extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_int4.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_int4.java
index 69bcbff..ac4a445 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_int4.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_int4.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_int4 extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel.java
index af73ea1..aa7f035 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_kernel extends UnitTest {
     private Type TA;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d.java
index b322851..3f26f07 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_kernel2d extends UnitTest {
     private Type T;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d_oldstyle.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d_oldstyle.java
index 236ebf4..6cf3874 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d_oldstyle.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel2d_oldstyle.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_kernel2d_oldstyle extends UnitTest {
     private Type T;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel3d.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel3d.java
index 9170e41..35f0d61 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel3d.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel3d.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_kernel3d extends UnitTest {
     private Type T;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel_struct.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel_struct.java
index a09173f..3fa2747 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel_struct.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_kernel_struct.java
@@ -19,8 +19,8 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.RenderScript;
 
 public class UT_kernel_struct extends UnitTest {
     private Allocation A;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math.java
index cc9e7f3..5123999 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_math extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_24.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_24.java
index 2a11d8d..c6918e8 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_24.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_24.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_math_24 extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_agree.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_agree.java
index 7175b5b..9cd8d20 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_agree.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_agree.java
@@ -19,22 +19,22 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Byte2;
-import android.support.v8.renderscript.Byte3;
-import android.support.v8.renderscript.Byte4;
-import android.support.v8.renderscript.Float2;
-import android.support.v8.renderscript.Float3;
-import android.support.v8.renderscript.Float4;
-import android.support.v8.renderscript.Int2;
-import android.support.v8.renderscript.Int3;
-import android.support.v8.renderscript.Int4;
-import android.support.v8.renderscript.Long2;
-import android.support.v8.renderscript.Long3;
-import android.support.v8.renderscript.Long4;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Short2;
-import android.support.v8.renderscript.Short3;
-import android.support.v8.renderscript.Short4;
+import androidx.renderscript.Byte2;
+import androidx.renderscript.Byte3;
+import androidx.renderscript.Byte4;
+import androidx.renderscript.Float2;
+import androidx.renderscript.Float3;
+import androidx.renderscript.Float4;
+import androidx.renderscript.Int2;
+import androidx.renderscript.Int3;
+import androidx.renderscript.Int4;
+import androidx.renderscript.Long2;
+import androidx.renderscript.Long3;
+import androidx.renderscript.Long4;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Short2;
+import androidx.renderscript.Short3;
+import androidx.renderscript.Short4;
 
 import java.util.Random;
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_conformance.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_conformance.java
index b33ac0c..2dfa106 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_conformance.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_math_conformance.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_math_conformance extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_min.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_min.java
index 27b198f..a6b39b6 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_min.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_min.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_min extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_noroot.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_noroot.java
index ab16dae..aaa1d1e 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_noroot.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_noroot.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_noroot extends UnitTest {
     private Allocation A;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_primitives.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_primitives.java
index d579432..de3f76b 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_primitives.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_primitives.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_primitives extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce.java
index f0da5e1..a02e66e 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce.java
@@ -25,14 +25,14 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.Float2;
-import android.support.v8.renderscript.Int2;
-import android.support.v8.renderscript.Int3;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.ScriptIntrinsicHistogram;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.Float2;
+import androidx.renderscript.Int2;
+import androidx.renderscript.Int3;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.ScriptIntrinsicHistogram;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 import java.util.ArrayList;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce_backward.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce_backward.java
index 50cbd25..17aa6f5 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce_backward.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reduce_backward.java
@@ -25,14 +25,14 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.Float2;
-import android.support.v8.renderscript.Int2;
-import android.support.v8.renderscript.Int3;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.ScriptIntrinsicHistogram;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.Float2;
+import androidx.renderscript.Int2;
+import androidx.renderscript.Int3;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.ScriptIntrinsicHistogram;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 import java.util.Random;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_refcount.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_refcount.java
index f9b9986..d23fa4f 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_refcount.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_refcount.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_refcount extends UnitTest {
     private Type mT;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reflection3264.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reflection3264.java
index 0717d05..24863e1 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reflection3264.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_reflection3264.java
@@ -19,11 +19,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Short4;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Short4;
+import androidx.renderscript.Type;
 import android.util.Log;
 import java.util.Random;
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug.java
index c4f4165..74dad37 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_rsdebug extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_23.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_23.java
index b7d1c03..44b0f8e 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_23.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_23.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_rsdebug_23 extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_24.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_24.java
index 90c9bae..edad119 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_24.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rsdebug_24.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_rsdebug_24 extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstime.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstime.java
index 6d606cc..08a6c36 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstime.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstime.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_rstime extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstypes.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstypes.java
index 492b138..1329313 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstypes.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_rstypes.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_rstypes extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_sampler.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_sampler.java
index 9aa3840..aad0c77 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_sampler.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_sampler.java
@@ -19,8 +19,8 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Sampler;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Sampler;
 
 public class UT_sampler extends UnitTest {
     Sampler minification;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_float.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_float.java
index 8f269a7..07094bb 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_float.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_float.java
@@ -17,11 +17,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.ScriptGroup;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.ScriptGroup;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 public class UT_script_group2_float extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_gatherscatter.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_gatherscatter.java
index 05bc3a8..9146872 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_gatherscatter.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_gatherscatter.java
@@ -17,11 +17,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.ScriptGroup;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.ScriptGroup;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 public class UT_script_group2_gatherscatter extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_nochain.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_nochain.java
index 4334edc..faed204 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_nochain.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_nochain.java
@@ -17,11 +17,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.ScriptGroup;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.ScriptGroup;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 public class UT_script_group2_nochain extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_pointwise.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_pointwise.java
index e9de400..ce4d9a6 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_pointwise.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_script_group2_pointwise.java
@@ -17,11 +17,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.ScriptGroup;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.ScriptGroup;
+import androidx.renderscript.Type;
 import android.util.Log;
 
 public class UT_script_group2_pointwise extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_alloc.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_alloc.java
index 2e4c8bd..1a3038e 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_alloc.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_alloc.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_single_source_alloc extends UnitTest {
     private int dimX = 3;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_ref_count.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_ref_count.java
index 50d646d..dee3c84 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_ref_count.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_ref_count.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_single_source_ref_count extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_script.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_script.java
index f749117..741a037 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_script.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_single_source_script.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_single_source_script extends UnitTest {
     private Allocation testAllocation1, testAllocation2;
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct.java
index 903494f..23b78f9 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct.java
@@ -19,9 +19,9 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 // Same as UT_small_struct_2.java except for names of classes and of test.
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct_2.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct_2.java
index ae7c16b..2ab47fc 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct_2.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_small_struct_2.java
@@ -19,9 +19,9 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 // Same as UT_small_struct.java except for names of classes and of test.
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_static_globals.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_static_globals.java
index dd7f968..eb32dd8 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_static_globals.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_static_globals.java
@@ -19,10 +19,10 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Type;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Type;
 
 public class UT_static_globals extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct.java
index 2073066..d8241b2 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_struct extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field.java
index 6b7644c..0643959 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 import java.util.Random;
 
 public class UT_struct_field extends UnitTest {
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field_simple.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field_simple.java
index 8b9bf09..64868a2 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field_simple.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_struct_field_simple.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_struct_field_simple extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_unsigned.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_unsigned.java
index 4a85ad5..550e460 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_unsigned.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_unsigned.java
@@ -19,7 +19,7 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 
 public class UT_unsigned extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_vector.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_vector.java
index 911fb72..74989de 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_vector.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UT_vector.java
@@ -19,25 +19,25 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.Byte2;
-import android.support.v8.renderscript.Byte3;
-import android.support.v8.renderscript.Byte4;
-import android.support.v8.renderscript.Double2;
-import android.support.v8.renderscript.Double3;
-import android.support.v8.renderscript.Double4;
-import android.support.v8.renderscript.Float2;
-import android.support.v8.renderscript.Float3;
-import android.support.v8.renderscript.Float4;
-import android.support.v8.renderscript.Int2;
-import android.support.v8.renderscript.Int3;
-import android.support.v8.renderscript.Int4;
-import android.support.v8.renderscript.Long2;
-import android.support.v8.renderscript.Long3;
-import android.support.v8.renderscript.Long4;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Short2;
-import android.support.v8.renderscript.Short3;
-import android.support.v8.renderscript.Short4;
+import androidx.renderscript.Byte2;
+import androidx.renderscript.Byte3;
+import androidx.renderscript.Byte4;
+import androidx.renderscript.Double2;
+import androidx.renderscript.Double3;
+import androidx.renderscript.Double4;
+import androidx.renderscript.Float2;
+import androidx.renderscript.Float3;
+import androidx.renderscript.Float4;
+import androidx.renderscript.Int2;
+import androidx.renderscript.Int3;
+import androidx.renderscript.Int4;
+import androidx.renderscript.Long2;
+import androidx.renderscript.Long3;
+import androidx.renderscript.Long4;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Short2;
+import androidx.renderscript.Short3;
+import androidx.renderscript.Short4;
 
 public class UT_vector extends UnitTest {
 
diff --git a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UnitTest.java b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UnitTest.java
index 5412db9..3ae9c19 100644
--- a/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UnitTest.java
+++ b/tests/java_api/RSUnitTests/supportlibsrc_gen/com/android/rs/unittest/UnitTest.java
@@ -19,10 +19,11 @@
 package com.android.rs.unittest;
 
 import android.content.Context;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.RenderScript.RSMessageHandler;
 import android.util.Log;
 
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.RenderScript.RSMessageHandler;
+
 import dalvik.system.DexFile;
 
 import java.io.IOException;
diff --git a/tests/java_api/Refocus/Android.mk b/tests/java_api/Refocus/Android.mk
index 852d0c6..95e1fb9 100644
--- a/tests/java_api/Refocus/Android.mk
+++ b/tests/java_api/Refocus/Android.mk
@@ -35,7 +35,7 @@
     $(TOPDIR)external/clang/lib/Headers \
     $(TOPDIR)frameworks/rs/script_api/include
 
-LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=android.support.v8.renderscript
+LOCAL_RENDERSCRIPT_FLAGS := -rs-package-name=androidx.renderscript
 LOCAL_JNI_SHARED_LIBRARIES := librsjni
 
 include $(BUILD_PACKAGE)
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java b/tests/java_api/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java
index f608bcd..04d8eb9 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/ImageBuffersForRenderScript.java
@@ -1,8 +1,8 @@
 package com.android.rs.refocus;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.RenderScript;
 
 /**
  * A class that manages the image buffers that interface between Java and Render
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java b/tests/java_api/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java
index f77e402..be51c81 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/KernelDataForRenderScript.java
@@ -1,8 +1,8 @@
 package com.android.rs.refocus;
 
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
 
 import com.android.rs.refocus.renderscript.ScriptField_KernelInfo;
 
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java b/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java
index e8ce86c..50f49c3 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/MainActivity.java
@@ -9,7 +9,7 @@
 import android.os.AsyncTask;
 import android.os.Environment;
 import android.os.Bundle;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 import android.util.Pair;
 import android.widget.ImageView;
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java b/tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java
index ddb2b48..2f44e0b 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/RefocusFilter.java
@@ -1,7 +1,7 @@
 package com.android.rs.refocus;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 import android.util.Pair;
 import java.util.ArrayList;
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java b/tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java
index c8e9559..021bc0a 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/RenderScriptTask.java
@@ -4,7 +4,7 @@
 import com.android.rs.refocus.f32.RefocusFilterF32;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 import android.util.Pair;
 import java.util.ArrayList;
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java b/tests/java_api/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java
index c49b093..a30bcdd 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/d1new/ImageBuffersForRenderScriptd1new.java
@@ -1,9 +1,9 @@
 package com.android.rs.refocus.d1new;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 
 import com.android.rs.refocus.renderscript.ScriptC_layered_filter_fast_d1new;
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java b/tests/java_api/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java
index 666afcd..4aadcd3 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/d1new/KernelDataForRenderScriptd1new.java
@@ -3,9 +3,9 @@
 import com.android.rs.refocus.BlurStack;
 import com.android.rs.refocus.KernelDataForRenderScript;
 
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
 
 import java.util.Arrays;
 
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java b/tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
index 2df00bd..4a9e055 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/d1new/RefocusFilterd1new.java
@@ -9,9 +9,9 @@
 import com.android.rs.refocus.renderscript.ScriptC_layered_filter_fast_d1new;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Script;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Script;
 import android.util.Log;
 /**
 
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java b/tests/java_api/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java
index b1f1a8a..8b41168 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/f32/ImageBuffersForRenderScriptF32.java
@@ -1,9 +1,9 @@
 package com.android.rs.refocus.f32;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
 import android.util.Log;
 
 import com.android.rs.refocus.renderscript.ScriptC_layered_filter_fast_f32;
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java b/tests/java_api/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java
index d232e82..2221cf6 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/f32/KernelDataForRenderScriptF32.java
@@ -3,9 +3,9 @@
 import com.android.rs.refocus.BlurStack;
 import com.android.rs.refocus.KernelDataForRenderScript;
 
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.Element;
-import android.support.v8.renderscript.RenderScript;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.Element;
+import androidx.renderscript.RenderScript;
 
 import java.util.Arrays;
 
diff --git a/tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java b/tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
index f203a81..443160c 100644
--- a/tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
+++ b/tests/java_api/Refocus/src/com/android/rs/test/f32/RefocusFilterF32.java
@@ -10,9 +10,9 @@
 import com.android.rs.refocus.renderscript.ScriptC_layered_filter_fast_f32;
 
 import android.graphics.Bitmap;
-import android.support.v8.renderscript.Allocation;
-import android.support.v8.renderscript.RenderScript;
-import android.support.v8.renderscript.Script;
+import androidx.renderscript.Allocation;
+import androidx.renderscript.RenderScript;
+import androidx.renderscript.Script;
 import android.util.Log;
 /**
  * An accelerated implementation of RefocusFilter using float32 as pixel
diff --git a/tests/java_api/RsMinimalTest/Android.mk b/tests/java_api/RsMinimalTest/Android.mk
new file mode 100644
index 0000000..74c4966
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/Android.mk
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := tests
+LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
+
+LOCAL_SRC_FILES := $(call all-java-files-under,src)
+
+LOCAL_RENDERSCRIPT_TARGET_API := 21
+LOCAL_SDK_VERSION := 26
+
+LOCAL_PACKAGE_NAME := RsMinimalTest
+LOCAL_COMPATIBILITY_SUITE := device-tests
+
+include $(BUILD_PACKAGE)
+
diff --git a/tests/java_api/RsMinimalTest/AndroidManifest.xml b/tests/java_api/RsMinimalTest/AndroidManifest.xml
new file mode 100644
index 0000000..006d320
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.rs.minimaltest">
+    <uses-sdk
+        android:minSdkVersion="21"
+        android:targetSdkVersion="26" />
+
+    <application
+        android:largeHeap="true"
+        android:label="_RsMinimalTest"
+        android:icon="@drawable/test_pattern">
+        <uses-library android:name="android.test.runner" />
+   </application>
+
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.rs.minimaltest"
+        android:label="RenderScript Minimal Tests" />
+</manifest>
diff --git a/tests/java_api/RsMinimalTest/AndroidTest.xml b/tests/java_api/RsMinimalTest/AndroidTest.xml
new file mode 100644
index 0000000..6ae9550
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/AndroidTest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Run RsMinimalTest.">
+    <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+        <option name="test-file-name" value="RsMinimalTest.apk" />
+    </target_preparer>
+
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-tag" value="RsMinimalTest" />
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.rs.minimaltest" />
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+    </test>
+</configuration>
diff --git a/tests/java_api/RsMinimalTest/res/drawable-nodpi/test_pattern.png b/tests/java_api/RsMinimalTest/res/drawable-nodpi/test_pattern.png
new file mode 100644
index 0000000..e7d1455
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/res/drawable-nodpi/test_pattern.png
Binary files differ
diff --git a/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/RsMinimalTest.java b/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/RsMinimalTest.java
new file mode 100644
index 0000000..c45537f
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/RsMinimalTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.rs.minimaltest;
+
+import android.content.Context;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * RsMinimalTest, minimal test for platform RenderScript APIs.
+ * To run the test, please use command
+ *
+ * adb shell am instrument -w com.android.rs.minimaltest/androidx.test.runner.AndroidJUnitRunner
+ */
+@RunWith(Parameterized.class)
+public class RsMinimalTest {
+    private static final String TAG = RsMinimalTest.class.getSimpleName();
+
+    /**
+     * Returns the list of subclasses of UnitTest to run.
+     */
+    @Parameters(name = "{0}")
+    public static Iterable<?> getParams() throws Exception {
+        Context ctx = InstrumentationRegistry.getTargetContext();
+
+        List<UnitTest> validUnitTests = new ArrayList<>();
+
+        Iterable<Class<? extends UnitTest>> testClasses =
+            UnitTest.getProperSubclasses(ctx);
+        for (Class<? extends UnitTest> testClass : testClasses) {
+            UnitTest test = testClass.getDeclaredConstructor(Context.class).newInstance(ctx);
+            validUnitTests.add(test);
+        }
+
+        UnitTest.checkDuplicateNames(validUnitTests);
+
+        return validUnitTests;
+    }
+
+    @Parameter(0)
+    public UnitTest mTest;
+
+    @Test
+    @MediumTest
+    public void testRSUnitTest() throws Exception {
+        mTest.logStart(TAG, "RenderScript Testing");
+        mTest.runTest();
+        mTest.logEnd(TAG);
+        Assert.assertTrue(mTest.getSuccess());
+    }
+}
diff --git a/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/UT_blur_validation.java b/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/UT_blur_validation.java
new file mode 100644
index 0000000..8a20caa
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/UT_blur_validation.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.android.rs.minimaltest;
+
+import android.content.Context;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RenderScript;
+import android.renderscript.RSIllegalArgumentException;
+import android.renderscript.ScriptIntrinsicBlur;
+import android.renderscript.Type;
+import android.util.Log;
+
+// Tests that ScriptIntrinsicBlur properly throws exception if input or output
+// are set to 1D Allocations.
+public class UT_blur_validation extends UnitTest {
+    private static final String TAG = "ScriptIntrinsicBlur validation";
+    private RenderScript RS;
+    private Allocation input1D, output1D;
+    private Allocation input2D, output2D;
+    private ScriptIntrinsicBlur scriptBlur;
+
+    public UT_blur_validation(Context ctx) {
+        super(TAG, ctx);
+    }
+
+    private void cleanup() {
+        RS.finish();
+        input1D.destroy();
+        input2D.destroy();
+        output1D.destroy();
+        output2D.destroy();
+        scriptBlur.destroy();
+        RS.destroy();
+    }
+
+    public void run() {
+        RS = createRenderScript(false);
+
+        final int width  = 100;
+        final int height = 100;
+
+        input1D = Allocation.createSized(RS,
+                                         Element.U8(RS),
+                                         width * height,
+                                         Allocation.USAGE_SCRIPT);
+
+        output1D = Allocation.createTyped(RS, input1D.getType());
+
+        Type.Builder typeBuilder = new Type.Builder(RS, Element.U8(RS));
+        typeBuilder.setX(width);
+        typeBuilder.setY(height);
+        Type ty = typeBuilder.create();
+
+        input2D  = Allocation.createTyped(RS, ty);
+        output2D = Allocation.createTyped(RS, ty);
+
+        scriptBlur = ScriptIntrinsicBlur.create(RS, Element.U8(RS));
+
+        scriptBlur.setRadius(25f);
+        boolean failed = false;
+        try {
+            scriptBlur.setInput(input1D);
+        } catch (RSIllegalArgumentException e) {
+            scriptBlur.setInput(input2D);
+            try {
+                scriptBlur.forEach(output1D);
+            } catch (RSIllegalArgumentException e1) {
+                scriptBlur.forEach(output2D);
+                cleanup();
+                passTest();
+                return;
+            }
+            Log.e(TAG, "setting 1d output does not trigger exception");
+            cleanup();
+            failTest();
+            return;
+        }
+
+        Log.e(TAG, "setting 1d input does not trigger exception");
+        cleanup();
+        failTest();
+    }
+}
diff --git a/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/UnitTest.java b/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/UnitTest.java
new file mode 100644
index 0000000..8b00757
--- /dev/null
+++ b/tests/java_api/RsMinimalTest/src/com/android/rs/minimaltest/UnitTest.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.rs.minimaltest;
+
+import android.content.Context;
+import android.renderscript.RenderScript;
+import android.renderscript.RenderScript.RSMessageHandler;
+import android.util.Log;
+
+import dalvik.system.DexFile;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public abstract class UnitTest {
+    public enum UnitTestResult {
+        UT_NOT_STARTED,
+        UT_RUNNING,
+        UT_SUCCESS,
+        UT_FAIL;
+
+        @Override
+        public String toString() {
+            switch (this) {
+                case UT_NOT_STARTED:
+                    return "NOT STARTED";
+                case UT_RUNNING:
+                    return "RUNNING";
+                case UT_SUCCESS:
+                    return "PASS";
+                case UT_FAIL:
+                    return "FAIL";
+                default:
+                    throw new RuntimeException(
+                        "missing enum case in UnitTestResult#toString()");
+            }
+        }
+    }
+
+    private final static String TAG = "RSUnitTest";
+
+    private String mName;
+    private UnitTestResult mResult;
+    private Context mCtx;
+    /* Necessary to avoid race condition on pass/fail message. */
+    private CountDownLatch mCountDownLatch;
+
+    /* These constants must match those in shared.rsh */
+    public static final int RS_MSG_TEST_PASSED = 100;
+    public static final int RS_MSG_TEST_FAILED = 101;
+
+    public UnitTest(String n, Context ctx) {
+        mName = n;
+        mCtx = ctx;
+        mResult = UnitTestResult.UT_NOT_STARTED;
+        mCountDownLatch = null;
+    }
+
+    protected void _RS_ASSERT(String message, boolean b) {
+        if (!b) {
+            Log.e(TAG, message + " FAILED");
+            failTest();
+        }
+    }
+
+    /**
+     * Returns a RenderScript instance created from mCtx.
+     *
+     * @param enableMessages
+     * true if expecting exactly one pass/fail message from the RenderScript instance.
+     * false if no messages expected.
+     * Any other messages are not supported.
+     */
+    protected RenderScript createRenderScript(boolean enableMessages) {
+        RenderScript rs = RenderScript.create(mCtx);
+        if (enableMessages) {
+            RSMessageHandler handler = new RSMessageHandler() {
+                public void run() {
+                    switch (mID) {
+                        case RS_MSG_TEST_PASSED:
+                            passTest();
+                            break;
+                        case RS_MSG_TEST_FAILED:
+                            failTest();
+                            break;
+                        default:
+                            Log.w(TAG, String.format("Unit test %s got unexpected message %d",
+                                    UnitTest.this.toString(), mID));
+                            break;
+                    }
+                    mCountDownLatch.countDown();
+                }
+            };
+            rs.setMessageHandler(handler);
+            mCountDownLatch = new CountDownLatch(1);
+        }
+        return rs;
+    }
+
+    protected synchronized void failTest() {
+        mResult = UnitTestResult.UT_FAIL;
+    }
+
+    protected synchronized void passTest() {
+        if (mResult != UnitTestResult.UT_FAIL) {
+            mResult = UnitTestResult.UT_SUCCESS;
+        }
+    }
+
+    public void logStart(String tag, String testSuite) {
+        String thisDeviceName = android.os.Build.DEVICE;
+        int thisApiVersion = android.os.Build.VERSION.SDK_INT;
+        Log.i(tag, String.format("%s: starting '%s' "
+                + "on device %s, API version %d",
+                testSuite, toString(), thisDeviceName, thisApiVersion));
+    }
+
+    public void logEnd(String tag) {
+        Log.i(tag, String.format("RenderScript test '%s': %s",
+                toString(), getResultString()));
+    }
+
+    public UnitTestResult getResult() {
+        return mResult;
+    }
+
+    public String getResultString() {
+        return mResult.toString();
+    }
+
+    public boolean getSuccess() {
+        return mResult == UnitTestResult.UT_SUCCESS;
+    }
+
+    public void runTest() {
+        mResult = UnitTestResult.UT_RUNNING;
+        run();
+        if (mCountDownLatch != null) {
+            try {
+                boolean success = mCountDownLatch.await(5 * 60, TimeUnit.SECONDS);
+                if (!success) {
+                    failTest();
+                    Log.e(TAG, String.format("Unit test %s waited too long for pass/fail message",
+                          toString()));
+                }
+            } catch (InterruptedException e) {
+                failTest();
+                Log.e(TAG, String.format("Unit test %s raised InterruptedException when " +
+                        "listening for pass/fail message", toString()));
+            }
+        }
+        switch (mResult) {
+            case UT_NOT_STARTED:
+            case UT_RUNNING:
+                Log.w(TAG, String.format("unexpected unit test result for test %s: %s",
+                        this.toString(), mResult.toString()));
+                break;
+        }
+    }
+
+    abstract protected void run();
+
+    @Override
+    public String toString() {
+        return mName;
+    }
+
+
+    /**
+     * Throws RuntimeException if any tests have the same name.
+     */
+    public static void checkDuplicateNames(Iterable<UnitTest> tests) {
+        Set<String> names = new HashSet<>();
+        List<String> duplicates = new ArrayList<>();
+        for (UnitTest test : tests) {
+            String name = test.toString();
+            if (names.contains(name)) {
+                duplicates.add(name);
+            }
+            names.add(name);
+        }
+        if (!duplicates.isEmpty()) {
+            throw new RuntimeException("duplicate name(s): " + duplicates);
+        }
+    }
+
+    public static Iterable<Class<? extends UnitTest>> getProperSubclasses(Context ctx)
+            throws ClassNotFoundException, IOException {
+        return getProperSubclasses(UnitTest.class, ctx);
+    }
+
+    /** Returns a list of all proper subclasses of the input class */
+    private static <T> Iterable<Class<? extends T>> getProperSubclasses(Class<T> klass, Context ctx)
+            throws ClassNotFoundException, IOException {
+        ArrayList<Class<? extends T>> ret = new ArrayList<>();
+        DexFile df = new DexFile(ctx.getPackageCodePath());
+        Enumeration<String> iter = df.entries();
+        while (iter.hasMoreElements()) {
+            String s = iter.nextElement();
+            Class<?> cur = Class.forName(s);
+            while (cur != null) {
+                if (cur.getSuperclass() == klass) {
+                    break;
+                }
+                cur = cur.getSuperclass();
+            }
+            if (cur != null) {
+                ret.add((Class<? extends T>) cur);
+            }
+        }
+        return ret;
+    }
+}
+
diff --git a/tests/java_api/RsNbody/Android.mk b/tests/java_api/RsNbody/Android.mk
index ff0434d..80aa3fb 100644
--- a/tests/java_api/RsNbody/Android.mk
+++ b/tests/java_api/RsNbody/Android.mk
@@ -18,11 +18,11 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE_TAGS := tests
-
+LOCAL_USE_AAPT2 := true
 LOCAL_SRC_FILES := $(call all-java-files-under, src) \
                    $(call all-renderscript-files-under, src)
 
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
+LOCAL_STATIC_ANDROID_LIBRARIES += androidx.legacy_legacy-support-v4
 
 LOCAL_PACKAGE_NAME := RsNbody
 LOCAL_SDK_VERSION := current
diff --git a/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java
index ee7428c..2835737 100644
--- a/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java
+++ b/tests/java_api/RsNbody/src/com/example/android/rs/nbody_gl/Swarm.java
@@ -11,7 +11,7 @@
 import android.renderscript.Float3;
 import android.renderscript.RenderScript;
 import android.renderscript.Type;
-import android.support.v4.view.MotionEventCompat;
+import androidx.core.view.MotionEventCompat;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
