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

Commit 14f6c3c7 authored by Songchun Fan's avatar Songchun Fan
Browse files

[incremental] respect extractNativeLibs in native lib config

Makes sure the behavior is consistent with legacy installs:

When the flag is on, the native libs will be extracted to subdirs under
lib/.
When the flag is off, the lib/ subdirs will be created but the native
libs are not extracted.
When the flag is off, check if the native libs are uncompressed and well
aligned.

Test: atest android.extractnativelibs.cts.CtsExtractNativeLibsHostTest
BUG: 157173358
Change-Id: Idb57fd7ca1115f787faf5cde3056c32ff3f60890
parent 2cdbcea8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -106,9 +106,9 @@ interface IIncrementalService {
    void deleteStorage(int storageId);

    /**
     * Setting up native library directories and extract native libs onto a storage.
     * Setting up native library directories and extract native libs onto a storage if needed.
     */
    boolean configureNativeBinaries(int storageId, in @utf8InCpp String apkFullPath, in @utf8InCpp String libDirRelativePath, in @utf8InCpp String abi);
    boolean configureNativeBinaries(int storageId, in @utf8InCpp String apkFullPath, in @utf8InCpp String libDirRelativePath, in @utf8InCpp String abi, boolean extractNativeLibs);

    /**
     * Waits until all native library extraction is done for the storage
+5 −2
Original line number Diff line number Diff line
@@ -469,12 +469,15 @@ public final class IncrementalStorage {
     * @param apkFullPath Source APK to extract native libs from.
     * @param libDirRelativePath Target dir to put lib files, e.g., "lib" or "lib/arm".
     * @param abi Target ABI of the native lib files. Only extract native libs of this ABI.
     * @param extractNativeLibs If true, extract native libraries; otherwise just setup directories
     *                          without extracting.
     * @return Success of not.
     */
    public boolean configureNativeBinaries(String apkFullPath, String libDirRelativePath,
            String abi) {
            String abi, boolean extractNativeLibs) {
        try {
            return mService.configureNativeBinaries(mId, apkFullPath, libDirRelativePath, abi);
            return mService.configureNativeBinaries(mId, apkFullPath, libDirRelativePath, abi,
                    extractNativeLibs);
        } catch (RemoteException e) {
            e.rethrowFromSystemServer();
            return false;
+2 −1
Original line number Diff line number Diff line
@@ -506,7 +506,8 @@ public class NativeLibraryHelper {
        }

        for (int i = 0; i < apkPaths.length; i++) {
            if (!incrementalStorage.configureNativeBinaries(apkPaths[i], libRelativeDir, abi)) {
            if (!incrementalStorage.configureNativeBinaries(apkPaths[i], libRelativeDir, abi,
                    handle.extractNativeLibs)) {
                return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
            }
        }
+3 −2
Original line number Diff line number Diff line
@@ -276,8 +276,9 @@ binder::Status BinderIncrementalService::startLoading(int32_t storageId, bool* _

binder::Status BinderIncrementalService::configureNativeBinaries(
        int32_t storageId, const std::string& apkFullPath, const std::string& libDirRelativePath,
        const std::string& abi, bool* _aidl_return) {
    *_aidl_return = mImpl.configureNativeBinaries(storageId, apkFullPath, libDirRelativePath, abi);
        const std::string& abi, bool extractNativeLibs, bool* _aidl_return) {
    *_aidl_return = mImpl.configureNativeBinaries(storageId, apkFullPath, libDirRelativePath, abi,
                                                  extractNativeLibs);
    return ok();
}

+2 −1
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ public:

    binder::Status configureNativeBinaries(int32_t storageId, const std::string& apkFullPath,
                                           const std::string& libDirRelativePath,
                                           const std::string& abi, bool* _aidl_return) final;
                                           const std::string& abi, bool extractNativeLibs,
                                           bool* _aidl_return) final;
    binder::Status waitForNativeBinariesExtraction(int storageId, bool* _aidl_return) final;

private:
Loading