diff options
author | Michael Hoisie <hoisie@google.com> | 2023-12-22 00:52:00 +0000 |
---|---|---|
committer | Michael Hoisie <hoisie@google.com> | 2023-12-22 00:59:54 +0000 |
commit | 3df193f80f6df3456703d63a03d17c2e0dd30024 (patch) | |
tree | e694fbdce7f9fac3f00ee5d6225c3588788ccabd | |
parent | f36960252e2450457ef1cebef246e9928fcfbba1 (diff) | |
download | base-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.bp | 23 | ||||
-rw-r--r-- | core/jni/RobolectricNativeRuntime.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/Android.bp | 5 | ||||
-rw-r--r-- | libs/hwui/apex/include/android/graphics/jni_runtime.h | 4 | ||||
-rw-r--r-- | libs/hwui/jni/BitmapFactory.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/renderstate/RenderState.h | 1 |
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> |