summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hoisie <hoisie@google.com>2023-12-22 00:52:00 +0000
committerMichael Hoisie <hoisie@google.com>2023-12-22 00:59:54 +0000
commit3df193f80f6df3456703d63a03d17c2e0dd30024 (patch)
treee694fbdce7f9fac3f00ee5d6225c3588788ccabd
parentf36960252e2450457ef1cebef246e9928fcfbba1 (diff)
downloadbase-3df193f80f6df3456703d63a03d17c2e0dd30024.tar.gz
Enable host Windows build for librobolectric-nativeruntime
Currently SQLite JNI is disabled for Windows because both androidfw/CursorWindow.cpp as well as the SQLite JNI registration logic requires mmap ashmem. Supporting this is feasible but will be done in a separate CL. Note that some functionality still does not work 100% in Windows, such as BitmapFactory.decodeStream and some font-related methods. These will be resolved separately. Test: m robolectric_native_runtime dist Test: Robolectric ShadowNativeMatrixTest Change-Id: Ie932ddec1298597bc3f6051574bc9dcc82b38929
-rw-r--r--core/jni/Android.bp23
-rw-r--r--core/jni/RobolectricNativeRuntime.cpp4
-rw-r--r--libs/hwui/Android.bp5
-rw-r--r--libs/hwui/apex/include/android/graphics/jni_runtime.h4
-rw-r--r--libs/hwui/jni/BitmapFactory.cpp4
-rw-r--r--libs/hwui/renderstate/RenderState.h1
6 files changed, 33 insertions, 8 deletions
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index b63235d30901..c46c902f10d4 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -415,6 +415,24 @@ cc_library_shared {
dir: "robolectric/nativeruntime/linux",
},
},
+ windows_x86_64: {
+ dist: {
+ targets: ["robolectric_native_runtime"],
+ dir: "robolectric/nativeruntime/windows",
+ },
+ },
+ not_windows: {
+ srcs: [
+ "android_database_CursorWindow.cpp",
+ "android_database_SQLiteCommon.cpp",
+ "android_database_SQLiteConnection.cpp",
+ "android_database_SQLiteGlobal.cpp",
+ "android_database_SQLiteDebug.cpp",
+ ],
+ },
+ windows: {
+ enabled: true,
+ },
host: {
cflags: [
"-Wno-unused-const-variable",
@@ -425,11 +443,6 @@ cc_library_shared {
srcs: [
"android_animation_PropertyValuesHolder.cpp",
"libcore_util_NativeAllocationRegistry.cpp",
- "android_database_CursorWindow.cpp",
- "android_database_SQLiteCommon.cpp",
- "android_database_SQLiteConnection.cpp",
- "android_database_SQLiteGlobal.cpp",
- "android_database_SQLiteDebug.cpp",
"android_util_Log.cpp",
"com_android_internal_util_VirtualRefBasePtr.cpp",
"android_view_Surface.cpp",
diff --git a/core/jni/RobolectricNativeRuntime.cpp b/core/jni/RobolectricNativeRuntime.cpp
index 2aee419d15e2..762b5c3f7f5d 100644
--- a/core/jni/RobolectricNativeRuntime.cpp
+++ b/core/jni/RobolectricNativeRuntime.cpp
@@ -16,8 +16,10 @@ extern int register_android_media_ImageReader(JNIEnv* env);
namespace android {
extern int register_android_animation_PropertyValuesHolder(JNIEnv* env);
+#ifndef _WIN32
extern int register_android_database_CursorWindow(JNIEnv* env);
extern int register_android_database_SQLiteConnection(JNIEnv* env);
+#endif
extern int register_android_view_Surface(JNIEnv* env);
extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv* env);
@@ -28,8 +30,10 @@ struct RegJNIRec {
};
static const RegJNIRec sqliteJNI[] = {
+#ifndef _WIN32
REG_JNI(register_android_database_CursorWindow),
REG_JNI(register_android_database_SQLiteConnection),
+#endif
};
static const RegJNIRec graphicsJNI[] = {
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index 4eda9ed10db9..f0486948b6e0 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -401,7 +401,7 @@ cc_defaults {
],
static_libs: [
- "libnativehelper_lazy",
+ "libnativehelper",
"libziparchive_for_incfs",
],
@@ -620,6 +620,9 @@ cc_defaults {
"libarect",
],
},
+ windows: {
+ enabled: true,
+ },
},
}
diff --git a/libs/hwui/apex/include/android/graphics/jni_runtime.h b/libs/hwui/apex/include/android/graphics/jni_runtime.h
index 487383ed50d5..32296a76e40d 100644
--- a/libs/hwui/apex/include/android/graphics/jni_runtime.h
+++ b/libs/hwui/apex/include/android/graphics/jni_runtime.h
@@ -18,6 +18,7 @@
#include <cutils/compiler.h>
#include <jni.h>
+#include <sys/cdefs.h>
__BEGIN_DECLS
@@ -31,5 +32,4 @@ ANDROID_API void zygote_preload_graphics();
__END_DECLS
-
-#endif // ANDROID_GRAPHICS_JNI_RUNTIME_H \ No newline at end of file
+#endif // ANDROID_GRAPHICS_JNI_RUNTIME_H
diff --git a/libs/hwui/jni/BitmapFactory.cpp b/libs/hwui/jni/BitmapFactory.cpp
index c14206fa1ed4..46cbdacf5ed1 100644
--- a/libs/hwui/jni/BitmapFactory.cpp
+++ b/libs/hwui/jni/BitmapFactory.cpp
@@ -525,6 +525,9 @@ static jobject nativeDecodeStream(JNIEnv* env, jobject clazz, jobject is, jbyteA
static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject fileDescriptor,
jobject padding, jobject bitmapFactoryOptions, jlong inBitmapHandle, jlong colorSpaceHandle) {
+#ifdef _WIN32 // LayoutLib for Windows does not support F_DUPFD_CLOEXEC
+ return nullObjectReturn("Not supported on Windows");
+#else
NPE_CHECK_RETURN_ZERO(env, fileDescriptor);
int descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -571,6 +574,7 @@ static jobject nativeDecodeFileDescriptor(JNIEnv* env, jobject clazz, jobject fi
return doDecode(env, std::move(stream), padding, bitmapFactoryOptions, inBitmapHandle,
colorSpaceHandle);
+#endif
}
static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz, jlong native_asset,
diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h
index e08d32a7735c..14b1ed88f16e 100644
--- a/libs/hwui/renderstate/RenderState.h
+++ b/libs/hwui/renderstate/RenderState.h
@@ -18,6 +18,7 @@
#include "utils/Macros.h"
+#include <pthread.h>
#include <utils/RefBase.h>
#include <set>