blob: 339ce786eeecd6ff90ad8d6017c5658672be61d1 [file] [log] [blame]
/*
* Copyright (C) 2019 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.tools.layoutlib.create;
/**
* Stores data needed for native JNI registration, and possibly the framework bytecode
* instrumentation.
*/
public class NativeConfig {
private NativeConfig() {}
public final static String[] DEFERRED_STATIC_INITIALIZER_CLASSES = new String [] {
"android.graphics.ColorSpace",
"android.graphics.FontFamily",
"android.graphics.Matrix",
"android.graphics.Path",
// Order is important! Fonts and FontFamily have to be initialized before Typeface
"android.graphics.fonts.Font",
"android.graphics.fonts.FontFamily$Builder",
"android.graphics.Typeface",
"android.graphics.text.PositionedGlyphs",
"android.graphics.text.LineBreaker",
};
public static final String[] DELEGATE_METHODS = new String[] {
"android.app.ActivityManager#getService",
"android.app.Fragment#instantiate", //(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;",
"android.content.res.AssetManager#createSystemAssetsInZygoteLocked",
"android.content.res.AssetManager#getAssignedPackageIdentifiers",
"android.content.res.AssetManager#nativeCreate",
"android.content.res.AssetManager#nativeDestroy",
"android.content.res.AssetManager#nativeGetThemeFreeFunction",
"android.content.res.AssetManager#nativeThemeCreate",
"android.content.res.Resources#getAnimation",
"android.content.res.Resources#getAttributeSetSourceResId",
"android.content.res.Resources#getBoolean",
"android.content.res.Resources#getColor",
"android.content.res.Resources#getColorStateList",
"android.content.res.Resources#getDimension",
"android.content.res.Resources#getDimensionPixelOffset",
"android.content.res.Resources#getDimensionPixelSize",
"android.content.res.Resources#getDrawable",
"android.content.res.Resources#getFloat",
"android.content.res.Resources#getFont",
"android.content.res.Resources#getIdentifier",
"android.content.res.Resources#getIntArray",
"android.content.res.Resources#getInteger",
"android.content.res.Resources#getLayout",
"android.content.res.Resources#getQuantityString",
"android.content.res.Resources#getQuantityText",
"android.content.res.Resources#getResourceEntryName",
"android.content.res.Resources#getResourceName",
"android.content.res.Resources#getResourcePackageName",
"android.content.res.Resources#getResourceTypeName",
"android.content.res.Resources#getString",
"android.content.res.Resources#getStringArray",
"android.content.res.Resources#getText",
"android.content.res.Resources#getTextArray",
"android.content.res.Resources#getValue",
"android.content.res.Resources#getValueForDensity",
"android.content.res.Resources#getXml",
"android.content.res.Resources#loadXmlResourceParser",
"android.content.res.Resources#obtainAttributes",
"android.content.res.Resources#obtainTypedArray",
"android.content.res.Resources#openRawResource",
"android.content.res.Resources#openRawResourceFd",
"android.content.res.Resources$Theme#obtainStyledAttributes",
"android.content.res.Resources$Theme#resolveAttribute",
"android.content.res.Resources$Theme#resolveAttributes",
"android.content.res.TypedArray#getValueAt",
"android.content.res.TypedArray#obtain",
"android.graphics.Canvas#getClipBounds",
"android.graphics.ImageDecoder#decodeBitmapImpl",
"android.graphics.Typeface#create",
"android.graphics.drawable.AdaptiveIconDrawable#draw",
"android.graphics.drawable.AnimatedVectorDrawable#draw",
"android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorUI#onDraw",
"android.graphics.drawable.DrawableInflater#inflateFromClass",
"android.graphics.drawable.NinePatchDrawable#getOpacity",
"android.graphics.fonts.Font$Builder#createBuffer",
"android.graphics.fonts.SystemFonts#getSystemFontConfigInternal",
"android.graphics.fonts.SystemFonts#mmap",
"android.os.Binder#getNativeBBinderHolder",
"android.os.Binder#getNativeFinalizer",
"android.os.Handler#sendMessageAtFrontOfQueue",
"android.os.Handler#sendMessageAtTime",
"android.os.HandlerThread#run",
"android.os.SystemProperties#find",
"android.permission.PermissionManager#checkPermission",
"android.preference.Preference#getView",
"android.provider.DeviceConfig#getBoolean",
"android.provider.DeviceConfig#getFloat",
"android.provider.DeviceConfig#getInt",
"android.provider.DeviceConfig#getLong",
"android.provider.DeviceConfig#getProperty",
"android.provider.DeviceConfig#getString",
"android.provider.Settings$Config#getContentResolver",
"android.text.format.DateFormat#is24HourFormat",
"android.util.Xml#newPullParser",
"android.view.Choreographer#getFrameTimeNanos",
"android.view.Choreographer#getRefreshRate",
"android.view.Choreographer#postCallbackDelayedInternal",
"android.view.Choreographer#removeCallbacksInternal",
"android.view.Display#getWindowManager",
"android.view.Display#updateDisplayInfoLocked",
"android.view.DisplayEventReceiver#nativeGetDisplayEventReceiverFinalizer",
"android.view.DisplayEventReceiver#nativeInit",
"android.view.HandlerActionQueue#postDelayed",
"android.view.LayoutInflater#parseInclude",
"android.view.LayoutInflater#rInflate",
"android.view.MenuInflater#registerMenu",
"android.view.PointerIcon#loadResource",
"android.view.PointerIcon#registerDisplayListener",
"android.view.SurfaceControl#nativeCreateTransaction",
"android.view.SurfaceControl#nativeGetNativeTransactionFinalizer",
"android.view.VelocityTracker#obtain",
"android.view.View#dispatchDetachedFromWindow",
"android.view.View#draw",
"android.view.View#getWindowToken",
"android.view.View#isInEditMode",
"android.view.View#layout",
"android.view.View#measure",
"android.view.ViewRootImpl#performHapticFeedback",
"android.view.WindowManagerGlobal#getWindowManagerService",
"android.view.accessibility.AccessibilityManager#getInstance",
"android.view.accessibility.AccessibilityManager#getWindowTransformationSpec",
"android.view.inputmethod.InputMethodManager#hideSoftInputFromWindow",
"android.view.inputmethod.InputMethodManager#isInEditMode",
"android.view.inputmethod.InputMethodManager#showSoftInput",
"android.widget.AbsListView#setupDeviceConfigProperties",
"android.widget.Magnifier#show",
"android.widget.RemoteViews#getApplicationInfo",
"com.android.internal.util.XmlUtils#convertValueToInt",
"com.android.internal.view.menu.MenuBuilder#createNewMenuItem",
"dalvik.system.VMRuntime#getNotifyNativeInterval",
"dalvik.system.VMRuntime#is64Bit",
"dalvik.system.VMRuntime#newUnpaddedArray",
"libcore.io.MemoryMappedFile#bigEndianIterator",
"libcore.io.MemoryMappedFile#close",
"libcore.io.MemoryMappedFile#mmapRO",
"libcore.util.NativeAllocationRegistry#applyFreeFunction",
};
public final static String[] DELEGATE_CLASS_NATIVES = new String[] {
"android.os.SystemClock",
"android.view.Display",
"libcore.icu.ICU",
};
/**
* The list of core classes to register with JNI
*/
public final static String[] CORE_CLASS_NATIVES = new String[] {
"android.animation.PropertyValuesHolder",
"android.content.res.StringBlock",
"android.content.res.XmlBlock",
"android.os.SystemProperties",
"android.os.Trace",
"android.text.AndroidCharacter",
"android.util.Log",
"android.view.MotionEvent",
"com.android.internal.util.VirtualRefBasePtr",
"libcore.util.NativeAllocationRegistry_Delegate",
};
/**
* The list of graphics classes to register with JNI
*/
public final static String[] GRAPHICS_CLASS_NATIVES = new String[] {
"android.graphics.Bitmap",
"android.graphics.BitmapFactory",
"android.graphics.ByteBufferStreamAdaptor",
"android.graphics.Camera",
"android.graphics.Canvas",
"android.graphics.CanvasProperty",
"android.graphics.ColorFilter",
"android.graphics.ColorSpace",
"android.graphics.CreateJavaOutputStreamAdaptor",
"android.graphics.DrawFilter",
"android.graphics.FontFamily",
"android.graphics.Graphics",
"android.graphics.ImageDecoder",
"android.graphics.Interpolator",
"android.graphics.MaskFilter",
"android.graphics.Matrix",
"android.graphics.NinePatch",
"android.graphics.Paint",
"android.graphics.Path",
"android.graphics.PathEffect",
"android.graphics.PathMeasure",
"android.graphics.Picture",
"android.graphics.RecordingCanvas",
"android.graphics.Region",
"android.graphics.RenderEffect",
"android.graphics.RenderNode",
"android.graphics.Shader",
"android.graphics.Typeface",
"android.graphics.YuvImage",
"android.graphics.animation.NativeInterpolatorFactory",
"android.graphics.animation.RenderNodeAnimator",
"android.graphics.drawable.AnimatedVectorDrawable",
"android.graphics.drawable.VectorDrawable",
"android.graphics.fonts.Font",
"android.graphics.fonts.FontFamily",
"android.graphics.text.LineBreaker",
"android.graphics.text.MeasuredText",
"android.graphics.text.TextRunShaper",
"android.util.PathParser",
};
}