Loading services/core/Android.mk +1 −0 Original line number Original line Diff line number Diff line Loading @@ -13,6 +13,7 @@ LOCAL_SRC_FILES += \ java/com/android/server/am/EventLogTags.logtags \ java/com/android/server/am/EventLogTags.logtags \ ../../../../system/netd/server/binder/android/net/INetd.aidl \ ../../../../system/netd/server/binder/android/net/INetd.aidl \ ../../../../system/netd/server/binder/android/net/metrics/INetdEventListener.aidl \ ../../../../system/netd/server/binder/android/net/metrics/INetdEventListener.aidl \ ../../../native/cmds/installd/binder/android/os/IInstalld.aidl \ LOCAL_AIDL_INCLUDES += \ LOCAL_AIDL_INCLUDES += \ system/netd/server/binder system/netd/server/binder Loading services/core/java/com/android/server/pm/Installer.java +22 −2 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,10 @@ import android.annotation.Nullable; import android.content.Context; import android.content.Context; import android.content.pm.PackageStats; import android.content.pm.PackageStats; import android.os.Build; import android.os.Build; import android.os.IInstalld; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceSpecificException; import android.util.Slog; import android.util.Slog; import com.android.internal.os.InstallerConnection; import com.android.internal.os.InstallerConnection; Loading @@ -33,6 +37,8 @@ import java.util.Arrays; public final class Installer extends SystemService { public final class Installer extends SystemService { private static final String TAG = "Installer"; private static final String TAG = "Installer"; private static final boolean USE_BINDER = true; /* *************************************************************************** /* *************************************************************************** * IMPORTANT: These values are passed to native code. Keep them in sync with * IMPORTANT: These values are passed to native code. Keep them in sync with * frameworks/native/cmds/installd/installd.h * frameworks/native/cmds/installd/installd.h Loading @@ -55,10 +61,13 @@ public final class Installer extends SystemService { public static final int FLAG_CLEAR_CODE_CACHE_ONLY = 1 << 9; public static final int FLAG_CLEAR_CODE_CACHE_ONLY = 1 << 9; private final InstallerConnection mInstaller; private final InstallerConnection mInstaller; private final IInstalld mInstalld; public Installer(Context context) { public Installer(Context context) { super(context); super(context); mInstaller = new InstallerConnection(); mInstaller = new InstallerConnection(); // TODO: reconnect if installd restarts mInstalld = IInstalld.Stub.asInterface(ServiceManager.getService("installd")); } } // Package-private installer that accepts a custom InstallerConnection. Used for // Package-private installer that accepts a custom InstallerConnection. Used for Loading @@ -66,6 +75,8 @@ public final class Installer extends SystemService { Installer(Context context, InstallerConnection connection) { Installer(Context context, InstallerConnection connection) { super(context); super(context); mInstaller = connection; mInstaller = connection; // TODO: reconnect if installd restarts mInstalld = IInstalld.Stub.asInterface(ServiceManager.getService("installd")); } } /** /** Loading @@ -84,9 +95,18 @@ public final class Installer extends SystemService { public void createAppData(String uuid, String pkgname, int userid, int flags, int appid, public void createAppData(String uuid, String pkgname, int userid, int flags, int appid, String seinfo, int targetSdkVersion) throws InstallerException { String seinfo, int targetSdkVersion) throws InstallerException { if (USE_BINDER) { try { mInstalld.createAppData(uuid, pkgname, userid, flags, appid, seinfo, targetSdkVersion); } catch (RemoteException | ServiceSpecificException e) { throw new InstallerException(e.getMessage()); } } else { mInstaller.execute("create_app_data", uuid, pkgname, userid, flags, appid, seinfo, mInstaller.execute("create_app_data", uuid, pkgname, userid, flags, appid, seinfo, targetSdkVersion); targetSdkVersion); } } } public void restoreconAppData(String uuid, String pkgname, int userid, int flags, int appid, public void restoreconAppData(String uuid, String pkgname, int userid, int flags, int appid, String seinfo) throws InstallerException { String seinfo) throws InstallerException { Loading Loading
services/core/Android.mk +1 −0 Original line number Original line Diff line number Diff line Loading @@ -13,6 +13,7 @@ LOCAL_SRC_FILES += \ java/com/android/server/am/EventLogTags.logtags \ java/com/android/server/am/EventLogTags.logtags \ ../../../../system/netd/server/binder/android/net/INetd.aidl \ ../../../../system/netd/server/binder/android/net/INetd.aidl \ ../../../../system/netd/server/binder/android/net/metrics/INetdEventListener.aidl \ ../../../../system/netd/server/binder/android/net/metrics/INetdEventListener.aidl \ ../../../native/cmds/installd/binder/android/os/IInstalld.aidl \ LOCAL_AIDL_INCLUDES += \ LOCAL_AIDL_INCLUDES += \ system/netd/server/binder system/netd/server/binder Loading
services/core/java/com/android/server/pm/Installer.java +22 −2 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,10 @@ import android.annotation.Nullable; import android.content.Context; import android.content.Context; import android.content.pm.PackageStats; import android.content.pm.PackageStats; import android.os.Build; import android.os.Build; import android.os.IInstalld; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceSpecificException; import android.util.Slog; import android.util.Slog; import com.android.internal.os.InstallerConnection; import com.android.internal.os.InstallerConnection; Loading @@ -33,6 +37,8 @@ import java.util.Arrays; public final class Installer extends SystemService { public final class Installer extends SystemService { private static final String TAG = "Installer"; private static final String TAG = "Installer"; private static final boolean USE_BINDER = true; /* *************************************************************************** /* *************************************************************************** * IMPORTANT: These values are passed to native code. Keep them in sync with * IMPORTANT: These values are passed to native code. Keep them in sync with * frameworks/native/cmds/installd/installd.h * frameworks/native/cmds/installd/installd.h Loading @@ -55,10 +61,13 @@ public final class Installer extends SystemService { public static final int FLAG_CLEAR_CODE_CACHE_ONLY = 1 << 9; public static final int FLAG_CLEAR_CODE_CACHE_ONLY = 1 << 9; private final InstallerConnection mInstaller; private final InstallerConnection mInstaller; private final IInstalld mInstalld; public Installer(Context context) { public Installer(Context context) { super(context); super(context); mInstaller = new InstallerConnection(); mInstaller = new InstallerConnection(); // TODO: reconnect if installd restarts mInstalld = IInstalld.Stub.asInterface(ServiceManager.getService("installd")); } } // Package-private installer that accepts a custom InstallerConnection. Used for // Package-private installer that accepts a custom InstallerConnection. Used for Loading @@ -66,6 +75,8 @@ public final class Installer extends SystemService { Installer(Context context, InstallerConnection connection) { Installer(Context context, InstallerConnection connection) { super(context); super(context); mInstaller = connection; mInstaller = connection; // TODO: reconnect if installd restarts mInstalld = IInstalld.Stub.asInterface(ServiceManager.getService("installd")); } } /** /** Loading @@ -84,9 +95,18 @@ public final class Installer extends SystemService { public void createAppData(String uuid, String pkgname, int userid, int flags, int appid, public void createAppData(String uuid, String pkgname, int userid, int flags, int appid, String seinfo, int targetSdkVersion) throws InstallerException { String seinfo, int targetSdkVersion) throws InstallerException { if (USE_BINDER) { try { mInstalld.createAppData(uuid, pkgname, userid, flags, appid, seinfo, targetSdkVersion); } catch (RemoteException | ServiceSpecificException e) { throw new InstallerException(e.getMessage()); } } else { mInstaller.execute("create_app_data", uuid, pkgname, userid, flags, appid, seinfo, mInstaller.execute("create_app_data", uuid, pkgname, userid, flags, appid, seinfo, targetSdkVersion); targetSdkVersion); } } } public void restoreconAppData(String uuid, String pkgname, int userid, int flags, int appid, public void restoreconAppData(String uuid, String pkgname, int userid, int flags, int appid, String seinfo) throws InstallerException { String seinfo) throws InstallerException { Loading