[IncrementalService] fix native lib check after OTA

The lib dir should always be at the same dir level as the APK file.

Test: manual with OTA
Test: atest CtsExtractNativeLibsHostTestCases
BUG: 160826412
Change-Id: I87d715c4739c78bb56b85d375838db08bafa1594
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 3450c3a..a5f0d04 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -1422,6 +1422,11 @@
 }
 
 // Extract lib files from zip, create new files in incfs and write data to them
+// Lib files should be placed next to the APK file in the following matter:
+// Example:
+// /path/to/base.apk
+// /path/to/lib/arm/first.so
+// /path/to/lib/arm/second.so
 bool IncrementalService::configureNativeBinaries(StorageId storage, std::string_view apkFullPath,
                                                  std::string_view libDirRelativePath,
                                                  std::string_view abi, bool extractNativeLibs) {
@@ -1433,9 +1438,13 @@
         return false;
     }
 
+    const auto targetLibPathRelativeToStorage =
+            path::join(path::dirname(normalizePathToStorage(*ifs, storage, apkFullPath)),
+                       libDirRelativePath);
+
     // First prepare target directories if they don't exist yet
-    if (auto res = makeDirs(*ifs, storage, libDirRelativePath, 0755)) {
-        LOG(ERROR) << "Failed to prepare target lib directory " << libDirRelativePath
+    if (auto res = makeDirs(*ifs, storage, targetLibPathRelativeToStorage, 0755)) {
+        LOG(ERROR) << "Failed to prepare target lib directory " << targetLibPathRelativeToStorage
                    << " errno: " << res;
         return false;
     }
@@ -1486,7 +1495,7 @@
         auto startFileTs = Clock::now();
 
         const auto libName = path::basename(fileName);
-        auto targetLibPath = path::join(libDirRelativePath, libName);
+        auto targetLibPath = path::join(targetLibPathRelativeToStorage, libName);
         const auto targetLibPathAbsolute = normalizePathToStorage(*ifs, storage, targetLibPath);
         // If the extract file already exists, skip
         if (access(targetLibPathAbsolute.c_str(), F_OK) == 0) {