Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 928b0748 authored by Kenny Root's avatar Kenny Root Committed by Android (Google) Code Review
Browse files

Merge "Don't symlink native library paths for old apps" into gingerbread

parents f73d48d7 e68d58a2
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -3286,7 +3286,9 @@ class PackageManagerService extends IPackageManager.Stub {
             *        only for non-system apps and system app upgrades.
             */
            if (pkg.applicationInfo.nativeLibraryDir != null) {
                final File sharedLibraryDir = new File(pkg.applicationInfo.nativeLibraryDir);
                final File nativeLibraryDir = new File(pkg.applicationInfo.nativeLibraryDir);
                final String dataPathString = dataPath.getPath();

                if (isSystemApp(pkg) && !isUpdatedSystemApp(pkg)) {
                    /*
                     * Upgrading from a previous version of the OS sometimes
@@ -3295,15 +3297,24 @@ class PackageManagerService extends IPackageManager.Stub {
                     * Recent changes in the JNI library search path
                     * necessitates we remove those to match previous behavior.
                     */
                    if (NativeLibraryHelper.removeNativeBinariesFromDirLI(sharedLibraryDir)) {
                    if (NativeLibraryHelper.removeNativeBinariesFromDirLI(nativeLibraryDir)) {
                        Log.i(TAG, "removed obsolete native libraries for system package " + path);
                    }
                } else if (!isExternal(pkg)) {
                    Log.i(TAG, path + " changed; unpacking");
                    mInstaller.unlinkNativeLibraryDirectory(dataPath.getPath());
                    NativeLibraryHelper.copyNativeBinariesLI(scanFile, sharedLibraryDir);
                } else if (nativeLibraryDir.getParent().equals(dataPathString)) {
                    /*
                     * If this is an internal application or our
                     * nativeLibraryPath points to our data directory, unpack
                     * the libraries. The native library path pointing to the
                     * data directory for an application in an ASEC container
                     * can happen for older apps that existed before an OTA to
                     * Gingerbread.
                     */
                    Slog.i(TAG, "Unpacking native libraries for " + path);
                    mInstaller.unlinkNativeLibraryDirectory(dataPathString);
                    NativeLibraryHelper.copyNativeBinariesLI(scanFile, nativeLibraryDir);
                } else {
                    mInstaller.linkNativeLibraryDirectory(dataPath.getPath(),
                    Slog.i(TAG, "Linking native library dir for " + path);
                    mInstaller.linkNativeLibraryDirectory(dataPathString,
                            pkg.applicationInfo.nativeLibraryDir);
                }
            }