From c81442321e2d23c06f7b6f56b3b02adf0fed0a90 Mon Sep 17 00:00:00 2001 From: Pierre-Hugues Husson Date: Mon, 28 Oct 2024 19:06:17 +0100 Subject: [PATCH] api-impl: stubs and fixes for latest WhatsApp version --- meson.build | 1 + .../generated_headers/android_os_Process.h | 8 ++++++++ src/api-impl-jni/os/android_os_Process.c | 10 ++++++++++ src/api-impl/android/app/Activity.java | 10 ++++++++++ src/api-impl/android/app/ActivityManager.java | 5 +++++ src/api-impl/android/app/AlarmManager.java | 2 ++ src/api-impl/android/app/Application.java | 4 ++++ .../android/app/ApplicationExitInfo.java | 4 ++++ .../android/app/NotificationChannel.java | 16 ++++++++++++++++ .../android/app/NotificationChannelGroup.java | 6 ++++++ .../android/app/NotificationManager.java | 12 ++++++++++++ src/api-impl/android/app/job/JobInfo.java | 11 +++++++++++ src/api-impl/android/app/job/JobScheduler.java | 4 ++++ src/api-impl/android/app/job/JobWorkItem.java | 9 +++++++++ src/api-impl/android/content/Context.java | 13 +++++++++++++ src/api-impl/android/content/Intent.java | 4 ++++ .../android/content/pm/PackageInfo.java | 6 ++++++ .../android/content/pm/ShortcutManager.java | 15 +++++++++++++++ .../android/content/pm/SigningInfo.java | 7 +++++++ .../android/content/res/Resources.java | 2 ++ .../drawable/ColorStateListDrawable.java | 18 ++++++++++++++++++ .../android/net/ConnectivityManager.java | 9 ++++++++- src/api-impl/android/net/Network.java | 8 ++++++++ src/api-impl/android/os/Environment.java | 4 ++++ src/api-impl/android/os/Handler.java | 4 ++++ src/api-impl/android/os/Process.java | 2 ++ src/api-impl/android/os/StrictMode.java | 3 +++ src/api-impl/android/os/SystemProperties.java | 13 +++++++++++++ src/api-impl/android/os/UserManager.java | 3 +++ src/api-impl/android/os/ext/SdkExtensions.java | 7 +++++++ .../android/telecom/ConnectionService.java | 6 ++++++ src/api-impl/android/view/View.java | 12 ++++++++++++ .../android/view/ViewConfiguration.java | 4 ++++ src/api-impl/android/widget/TextView.java | 10 ++++++++++ src/api-impl/meson.build | 10 ++++++++++ 35 files changed, 261 insertions(+), 1 deletion(-) create mode 100644 src/api-impl-jni/os/android_os_Process.c create mode 100644 src/api-impl/android/app/ApplicationExitInfo.java create mode 100644 src/api-impl/android/app/NotificationChannelGroup.java create mode 100644 src/api-impl/android/app/job/JobWorkItem.java create mode 100644 src/api-impl/android/content/pm/ShortcutManager.java create mode 100644 src/api-impl/android/content/pm/SigningInfo.java create mode 100644 src/api-impl/android/graphics/drawable/ColorStateListDrawable.java create mode 100644 src/api-impl/android/net/Network.java create mode 100644 src/api-impl/android/os/SystemProperties.java create mode 100644 src/api-impl/android/os/ext/SdkExtensions.java create mode 100644 src/api-impl/android/telecom/ConnectionService.java diff --git a/meson.build b/meson.build index b9499ff2..29f1c65d 100644 --- a/meson.build +++ b/meson.build @@ -109,6 +109,7 @@ libtranslationlayer_so = shared_library('translation_layer_main', [ 'src/api-impl-jni/media/android_media_MediaCodec.c', 'src/api-impl-jni/media/android_media_session_MediaSession.c', 'src/api-impl-jni/net/android_net_ConnectivityManager.c', + 'src/api-impl-jni/os/android_os_Process.c', 'src/api-impl-jni/sensors/android_hardware_SensorManager.c', 'src/api-impl-jni/util.c', 'src/api-impl-jni/views/AndroidLayout.c', diff --git a/src/api-impl-jni/generated_headers/android_os_Process.h b/src/api-impl-jni/generated_headers/android_os_Process.h index ba86acb1..6a72457f 100644 --- a/src/api-impl-jni/generated_headers/android_os_Process.h +++ b/src/api-impl-jni/generated_headers/android_os_Process.h @@ -297,6 +297,14 @@ JNIEXPORT jintArray JNICALL Java_android_os_Process_getPidsForCommands JNIEXPORT jlong JNICALL Java_android_os_Process_getPss (JNIEnv *, jclass, jint); +/* + * Class: android_os_Process + * Method: is64Bit + * Signature: ()Z + */ +JNIEXPORT jboolean JNICALL Java_android_os_Process_is64Bit + (JNIEnv *, jclass); + #ifdef __cplusplus } #endif diff --git a/src/api-impl-jni/os/android_os_Process.c b/src/api-impl-jni/os/android_os_Process.c new file mode 100644 index 00000000..e7a7249e --- /dev/null +++ b/src/api-impl-jni/os/android_os_Process.c @@ -0,0 +1,10 @@ +#include "../generated_headers/android_os_Process.h" + +JNIEXPORT jboolean JNICALL Java_android_os_Process_is64Bit(JNIEnv *env, jclass this) +{ +#ifdef __LP64__ + return 1; +#else + return 0; +#endif +} diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java index 0bb2519a..deeed717 100644 --- a/src/api-impl/android/app/Activity.java +++ b/src/api-impl/android/app/Activity.java @@ -576,4 +576,14 @@ public class Activity extends ContextThemeWrapper implements Window.Callback { public void setDefaultKeyMode(int flag) {} public void registerForContextMenu(View view) {} public native boolean isInMultiWindowMode(); + + public void registerActivityLifecycleCallbacks(Application.ActivityLifecycleCallbacks callback) {} + + public void setDisablePreviewScreenshots(boolean disable) {} + public final View requireViewById(int id) { + View view = findViewById(id); + if (view == null) + throw new IllegalArgumentException("ID does not reference a View inside this View"); + return view; + } } diff --git a/src/api-impl/android/app/ActivityManager.java b/src/api-impl/android/app/ActivityManager.java index 4e891066..e6a273ed 100644 --- a/src/api-impl/android/app/ActivityManager.java +++ b/src/api-impl/android/app/ActivityManager.java @@ -8,6 +8,7 @@ import android.os.Parcelable; import java.util.ArrayList; import java.util.List; +import java.util.Collections; public class ActivityManager { @@ -80,4 +81,8 @@ public class ActivityManager { } public int getLargeMemoryClass() {return getMemoryClass();} + + public List getHistoricalProcessExitReasons(String pkgname, int pid, int maxNum) { + return Collections.emptyList(); + } } diff --git a/src/api-impl/android/app/AlarmManager.java b/src/api-impl/android/app/AlarmManager.java index a6ae14e5..270a14e1 100644 --- a/src/api-impl/android/app/AlarmManager.java +++ b/src/api-impl/android/app/AlarmManager.java @@ -8,4 +8,6 @@ public class AlarmManager { public void setExact(int type, long triggerTime, PendingIntent operation) {} public void set(int type, long triggerTime, PendingIntent operation) {} + + public void setExactAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation) {} } diff --git a/src/api-impl/android/app/Application.java b/src/api-impl/android/app/Application.java index ebb9ea65..5e81cb64 100644 --- a/src/api-impl/android/app/Application.java +++ b/src/api-impl/android/app/Application.java @@ -96,4 +96,8 @@ public class Application extends ContextWrapper { } public void unregisterOnProvideAssistDataListener(OnProvideAssistDataListener callback) { } + public static String getProcessName() { + // note: we currently don't set the process name + return Context.this_application.getPackageName(); + } } diff --git a/src/api-impl/android/app/ApplicationExitInfo.java b/src/api-impl/android/app/ApplicationExitInfo.java new file mode 100644 index 00000000..17e68030 --- /dev/null +++ b/src/api-impl/android/app/ApplicationExitInfo.java @@ -0,0 +1,4 @@ +package android.app; + +public class ApplicationExitInfo { +} diff --git a/src/api-impl/android/app/NotificationChannel.java b/src/api-impl/android/app/NotificationChannel.java index b7be2ed0..7992380e 100644 --- a/src/api-impl/android/app/NotificationChannel.java +++ b/src/api-impl/android/app/NotificationChannel.java @@ -1,6 +1,22 @@ package android.app; +import android.net.Uri; +import android.media.AudioAttributes; + public class NotificationChannel { public NotificationChannel(String id, CharSequence name, int importance) {} + + public void setLockscreenVisibility(int a) {} + public void setShowBadge(boolean a) {} + public void setGroup(String grp) {} + public void enableLights(boolean en) {} + public void setLightColor(int color) {} + public void setVibrationPattern(long[] pattern) {} + public void enableVibration(boolean en) {} + public void setSound(Uri uri, AudioAttributes attrs) {} + public boolean shouldShowLights() { return false; } + public int getLightColor() { return 0; } + public boolean shouldVibrate() { return false; } + public Uri getSound() { return null; } } diff --git a/src/api-impl/android/app/NotificationChannelGroup.java b/src/api-impl/android/app/NotificationChannelGroup.java new file mode 100644 index 00000000..92512c11 --- /dev/null +++ b/src/api-impl/android/app/NotificationChannelGroup.java @@ -0,0 +1,6 @@ +package android.app; + +public class NotificationChannelGroup { + public NotificationChannelGroup(String a, CharSequence b) { + } +} diff --git a/src/api-impl/android/app/NotificationManager.java b/src/api-impl/android/app/NotificationManager.java index 4cc21b8d..703992c8 100644 --- a/src/api-impl/android/app/NotificationManager.java +++ b/src/api-impl/android/app/NotificationManager.java @@ -1,6 +1,8 @@ package android.app; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Objects; @@ -106,4 +108,14 @@ public class NotificationManager { protected native void nativeShowMPRIS(String packageName, String identiy); protected native void nativeCancel(int id); protected native void nativeCancelMPRIS(); + + public void createNotificationChannelGroup(NotificationChannelGroup v) {} + + public List getNotificationChannels() { + return Collections.emptyList(); + } + + public List getNotificationChannelGroups() { + return Collections.emptyList(); + } } diff --git a/src/api-impl/android/app/job/JobInfo.java b/src/api-impl/android/app/job/JobInfo.java index b9b58419..12e23720 100644 --- a/src/api-impl/android/app/job/JobInfo.java +++ b/src/api-impl/android/app/job/JobInfo.java @@ -3,6 +3,9 @@ package android.app.job; import android.content.ComponentName; public class JobInfo { + + public JobInfo() {} + public static final class Builder { public Builder(int jobId, ComponentName jobService) {} @@ -13,5 +16,13 @@ public class JobInfo { public Builder setRequiredNetworkType(int networkType) { return this; } + + public Builder setOverrideDeadline(long a) { + return this; + } + + public JobInfo build() { + return new JobInfo(); + } } } diff --git a/src/api-impl/android/app/job/JobScheduler.java b/src/api-impl/android/app/job/JobScheduler.java index a5f93b62..2c9bba9c 100644 --- a/src/api-impl/android/app/job/JobScheduler.java +++ b/src/api-impl/android/app/job/JobScheduler.java @@ -13,4 +13,8 @@ public class JobScheduler { public List getAllPendingJobs() { return new ArrayList(); }; + + public int enqueue(JobInfo job, JobWorkItem work) { + return 1; //RESULT_SUCCESS + } } diff --git a/src/api-impl/android/app/job/JobWorkItem.java b/src/api-impl/android/app/job/JobWorkItem.java new file mode 100644 index 00000000..50c5dde7 --- /dev/null +++ b/src/api-impl/android/app/job/JobWorkItem.java @@ -0,0 +1,9 @@ +package android.app.job; + +import android.content.Intent; + +final public class JobWorkItem { + public JobWorkItem(Intent intent) { + } +} + diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java index e2eb9dd1..670a46ab 100644 --- a/src/api-impl/android/content/Context.java +++ b/src/api-impl/android/content/Context.java @@ -15,6 +15,7 @@ import android.bluetooth.BluetoothManager; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageParser; +import android.content.pm.ShortcutManager; import android.content.res.AssetManager; import android.content.res.Configuration; import android.content.res.Resources; @@ -39,6 +40,7 @@ import android.os.Handler; import android.os.Looper; import android.os.ParcelFileDescriptor; import android.os.PowerManager; +import android.os.UserManager; import android.os.Vibrator; import android.telephony.TelephonyManager; import android.util.AttributeSet; @@ -386,6 +388,10 @@ public class Context extends Object { return prefs_dir; } + public File[] getExternalMediaDirs() { + return getExternalFilesDirs("media"); + } + public File getDir(String name, int mode) { File dir = new File(getFilesDir(), name); if (!dir.exists()) { @@ -656,4 +662,11 @@ public class Context extends Object { public void revokeUriPermission(Uri uri, int mode) { System.out.println("revokeUriPermission(" + uri + ", " + mode + ") called"); } + + public String getAttributionTag() { + return null; + } + public boolean isDeviceProtectedStorage() { + return false; + } } diff --git a/src/api-impl/android/content/Intent.java b/src/api-impl/android/content/Intent.java index 96afa0e3..6705ab9f 100644 --- a/src/api-impl/android/content/Intent.java +++ b/src/api-impl/android/content/Intent.java @@ -364,4 +364,8 @@ public class Intent implements Parcelable { public byte[] getByteArrayExtra(String name) { return extras.getByteArray(name); } + + public void removeExtra(String name) { + extras.remove(name); + } } diff --git a/src/api-impl/android/content/pm/PackageInfo.java b/src/api-impl/android/content/pm/PackageInfo.java index edcc029d..0dfe433f 100644 --- a/src/api-impl/android/content/pm/PackageInfo.java +++ b/src/api-impl/android/content/pm/PackageInfo.java @@ -243,4 +243,10 @@ public class PackageInfo { public int describeContents() { return 0; } + + public long getLongVersionCode() { + return versionCode; + } + + public SigningInfo signingInfo = new SigningInfo(); } diff --git a/src/api-impl/android/content/pm/ShortcutManager.java b/src/api-impl/android/content/pm/ShortcutManager.java new file mode 100644 index 00000000..5e86e2b2 --- /dev/null +++ b/src/api-impl/android/content/pm/ShortcutManager.java @@ -0,0 +1,15 @@ +package android.content.pm; + +import java.util.Collections; +import java.util.List; + +public class ShortcutManager { + public void removeAllDynamicShortcuts() { + } + + public List getShortcuts(int matchFlags) { + return Collections.emptyList(); + } + public void removeLongLivedShortcuts(List shortcutIds) { + } +} diff --git a/src/api-impl/android/content/pm/SigningInfo.java b/src/api-impl/android/content/pm/SigningInfo.java new file mode 100644 index 00000000..1957e4b2 --- /dev/null +++ b/src/api-impl/android/content/pm/SigningInfo.java @@ -0,0 +1,7 @@ +package android.content.pm; + +public final class SigningInfo { + public Signature[] getApkContentsSigners() { + return null; + } +} diff --git a/src/api-impl/android/content/res/Resources.java b/src/api-impl/android/content/res/Resources.java index d683b908..492695c6 100644 --- a/src/api-impl/android/content/res/Resources.java +++ b/src/api-impl/android/content/res/Resources.java @@ -1471,6 +1471,8 @@ public class Resources { } private final AssetManager mAssets; + + public void rebase() {} } /** diff --git a/src/api-impl/android/graphics/drawable/ColorStateListDrawable.java b/src/api-impl/android/graphics/drawable/ColorStateListDrawable.java new file mode 100644 index 00000000..0b91fdd7 --- /dev/null +++ b/src/api-impl/android/graphics/drawable/ColorStateListDrawable.java @@ -0,0 +1,18 @@ +package android.graphics.drawable; + +import android.graphics.Canvas; + +public class ColorStateListDrawable extends Drawable implements Drawable.Callback { + @Override + public void draw(Canvas c) { + } + @Override + public void unscheduleDrawable(Drawable who, Runnable what) { + } + @Override + public void scheduleDrawable(Drawable who, Runnable what, long when) { + } + @Override + public void invalidateDrawable(Drawable who) { + } +} diff --git a/src/api-impl/android/net/ConnectivityManager.java b/src/api-impl/android/net/ConnectivityManager.java index f6073bbf..e7dd7892 100644 --- a/src/api-impl/android/net/ConnectivityManager.java +++ b/src/api-impl/android/net/ConnectivityManager.java @@ -1,6 +1,6 @@ package android.net; -class Network {} +import android.os.Handler; public class ConnectivityManager { @@ -26,4 +26,11 @@ public class ConnectivityManager { public NetworkInfo[] getAllNetworkInfo() { return new NetworkInfo[] { getActiveNetworkInfo() }; } + + public Network getActiveNetwork() { + return new Network(); + } + + public void registerDefaultNetworkCallback(NetworkCallback cb, Handler hdl) {} + } diff --git a/src/api-impl/android/net/Network.java b/src/api-impl/android/net/Network.java new file mode 100644 index 00000000..013669c1 --- /dev/null +++ b/src/api-impl/android/net/Network.java @@ -0,0 +1,8 @@ +package android.net; + +public class Network { + public long getNetworkHandle() { + return 1L; + } +} + diff --git a/src/api-impl/android/os/Environment.java b/src/api-impl/android/os/Environment.java index 3b29777c..aa08613a 100644 --- a/src/api-impl/android/os/Environment.java +++ b/src/api-impl/android/os/Environment.java @@ -795,4 +795,8 @@ public class Environment { // Unable to translate to internal path; use original return path; } + + public static boolean isExternalStorageLegacy() { + return true; + } } diff --git a/src/api-impl/android/os/Handler.java b/src/api-impl/android/os/Handler.java index baa23f6a..ab8c5903 100644 --- a/src/api-impl/android/os/Handler.java +++ b/src/api-impl/android/os/Handler.java @@ -230,6 +230,10 @@ public class Handler { mAsynchronous = async; } + public static Handler createAsync(Looper looper) { + return new Handler(looper, null, true); + } + /** * Returns a string representing the name of the specified message. * The default implementation will either return the class name of the diff --git a/src/api-impl/android/os/Process.java b/src/api-impl/android/os/Process.java index 51dfd601..b77dd230 100644 --- a/src/api-impl/android/os/Process.java +++ b/src/api-impl/android/os/Process.java @@ -830,4 +830,6 @@ public class Process { */ public boolean usingWrapper; } + + public static final native boolean is64Bit(); } diff --git a/src/api-impl/android/os/StrictMode.java b/src/api-impl/android/os/StrictMode.java index 074f271c..819c51db 100644 --- a/src/api-impl/android/os/StrictMode.java +++ b/src/api-impl/android/os/StrictMode.java @@ -76,6 +76,9 @@ public final class StrictMode { public ThreadPolicy build() { return new ThreadPolicy(mask, listener, executor); } + public Builder detectUnbufferedIo() { + return this; + } } } public static final class VmPolicy { diff --git a/src/api-impl/android/os/SystemProperties.java b/src/api-impl/android/os/SystemProperties.java new file mode 100644 index 00000000..56c89447 --- /dev/null +++ b/src/api-impl/android/os/SystemProperties.java @@ -0,0 +1,13 @@ +package android.os; + +public class SystemProperties { + public static String get(String prop) { + android.util.Log.i("SystemProperties", "Grabbing prop " + prop); + return null; + } + + public boolean getBoolean(String prop, boolean def) { + android.util.Log.i("SystemProperties", "Grabbing prop " + prop + ", default " + def); + return def; + } +} diff --git a/src/api-impl/android/os/UserManager.java b/src/api-impl/android/os/UserManager.java index 6c0c524f..eeb04551 100644 --- a/src/api-impl/android/os/UserManager.java +++ b/src/api-impl/android/os/UserManager.java @@ -4,4 +4,7 @@ public class UserManager { public boolean isUserUnlocked() { return true; } + public static boolean supportsMultipleUsers() { + return false; + } } diff --git a/src/api-impl/android/os/ext/SdkExtensions.java b/src/api-impl/android/os/ext/SdkExtensions.java new file mode 100644 index 00000000..8c49e569 --- /dev/null +++ b/src/api-impl/android/os/ext/SdkExtensions.java @@ -0,0 +1,7 @@ +package android.os.ext; + +public class SdkExtensions { + public static int getExtensionVersion(int extension) { + return 0; + } +} diff --git a/src/api-impl/android/telecom/ConnectionService.java b/src/api-impl/android/telecom/ConnectionService.java new file mode 100644 index 00000000..3cda0033 --- /dev/null +++ b/src/api-impl/android/telecom/ConnectionService.java @@ -0,0 +1,6 @@ +package android.telecom; + +import android.app.Service; + +public abstract class ConnectionService extends Service { +} diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 9e8247e9..2301bbe6 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -2100,4 +2100,16 @@ public class View implements Drawable.Callback { public int getVerticalFadingEdgeLength() {return 0;} public int getVerticalScrollbarWidth() {return 0;} + + public void saveAttributeDataForStyleable(Context ctxt, int[] styleable, AttributeSet attrs, TypedArray t, int defStyleAttr, int defStyleRes) {} + + public final View requireViewById(int id) { + View view = findViewById(id); + if (view == null) + throw new IllegalArgumentException("ID does not reference a View inside this View"); + return view; + } + public float getTransitionAlpha() { + return 1.0f; + } } diff --git a/src/api-impl/android/view/ViewConfiguration.java b/src/api-impl/android/view/ViewConfiguration.java index 5ab96e69..8d37680f 100644 --- a/src/api-impl/android/view/ViewConfiguration.java +++ b/src/api-impl/android/view/ViewConfiguration.java @@ -70,4 +70,8 @@ public class ViewConfiguration { public static int getScrollDefaultDelay() { return 16; } + + public boolean shouldShowMenuShortcutsWhenKeyboardPresent() { + return true; + } } diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java index 2dcd0018..685d2ad8 100644 --- a/src/api-impl/android/widget/TextView.java +++ b/src/api-impl/android/widget/TextView.java @@ -356,4 +356,14 @@ public class TextView extends View { public int getLineHeight() { return 10; // FIXME } + + public boolean isAllCaps() { return false; } + + public int getAutoSizeStepGranularity() { + return -1; + } + + public void setAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit) {} + + public void setCompoundDrawableTintList(ColorStateList tint) {} } diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index 0563abb6..f0f1d2dd 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -30,6 +30,7 @@ srcs = [ 'android/app/DatePickerDialog.java', 'android/app/Application.java', 'android/app/ApplicationErrorReport.java', + 'android/app/ApplicationExitInfo.java', 'android/app/Dialog.java', 'android/app/DownloadManager.java', 'android/app/Fragment.java', @@ -42,6 +43,7 @@ srcs = [ 'android/app/NativeActivity.java', 'android/app/Notification.java', 'android/app/NotificationChannel.java', + 'android/app/NotificationChannelGroup.java', 'android/app/NotificationManager.java', 'android/app/PendingIntent.java', 'android/app/ProgressDialog.java', @@ -56,6 +58,7 @@ srcs = [ 'android/app/job/JobInfo.java', 'android/app/job/JobScheduler.java', 'android/app/job/JobService.java', + 'android/app/job/JobWorkItem.java', 'android/app/usage/UsageStatsManager.java', 'android/appwidget/AppWidgetManager.java', 'android/appwidget/AppWidgetProvider.java', @@ -106,6 +109,8 @@ srcs = [ 'android/content/pm/ResolveInfo.java', 'android/content/pm/ServiceInfo.java', 'android/content/pm/Signature.java', + 'android/content/pm/SigningInfo.java', + 'android/content/pm/ShortcutManager.java', 'android/content/pm/VerifierInfo.java', 'android/content/res/AssetFileDescriptor.java', 'android/content/res/AssetManager.java', @@ -209,6 +214,7 @@ srcs = [ 'android/graphics/drawable/AnimationDrawable.java', 'android/graphics/drawable/BitmapDrawable.java', 'android/graphics/drawable/ColorDrawable.java', + 'android/graphics/drawable/ColorStateListDrawable.java', 'android/graphics/drawable/Drawable.java', 'android/graphics/drawable/DrawableContainer.java', 'android/graphics/drawable/DrawableWrapper.java', @@ -261,6 +267,7 @@ srcs = [ 'android/media/session/PlaybackState.java', 'android/media/tv/TvInputManager.java', 'android/net/ConnectivityManager.java', + 'android/net/Network.java', 'android/net/NetworkInfo.java', 'android/net/NetworkRequest.java', 'android/net/SSLCertificateSocketFactory.java', @@ -320,11 +327,13 @@ srcs = [ 'android/os/StatFs.java', 'android/os/StrictMode.java', 'android/os/SystemClock.java', + 'android/os/SystemProperties.java', 'android/os/Trace.java', 'android/os/UserHandle.java', 'android/os/UserManager.java', 'android/os/VibrationEffect.java', 'android/os/Vibrator.java', + 'android/os/ext/SdkExtensions.java', 'android/os/storage/StorageManager.java', 'android/preference/PreferenceActivity.java', 'android/preference/PreferenceManager.java', @@ -333,6 +342,7 @@ srcs = [ 'android/provider/CalendarContract.java', 'android/provider/ContactsContract.java', 'android/provider/Settings.java', + 'android/telecom/ConnectionService.java', 'android/telecom/TelecomManager.java', 'android/telephony/CellLocation.java', 'android/telephony/PhoneNumberUtils.java',