Use shared library when libapp.so is found (flutter/engine#9172)

This commit is contained in:
Emmanuel Garcia
2019-06-03 16:23:28 -07:00
committed by GitHub
parent c766555d1e
commit 63f6cd7409

View File

@@ -188,7 +188,11 @@ public class FlutterMain {
return;
}
try {
sResourceExtractor.waitForCompletion();
// There are resources to extract. For example, the AOT blobs from the `assets` directory.
// `sResourceExtractor` is `null` if there isn't any AOT blob to extract.
if (sResourceExtractor != null) {
sResourceExtractor.waitForCompletion();
}
List<String> shellArgs = new ArrayList<>();
shellArgs.add("--icu-symbol-prefix=_binary_icudtl_dat");
@@ -309,6 +313,13 @@ public class FlutterMain {
* This is required by the Dart runtime, so it can read the blobs.
*/
private static void initResources(@NonNull Context applicationContext) {
// When the AOT blobs are contained in the native library directory,
// we don't need to extract them manually because they are
// extracted by the Android Package Manager automatically.
if (!sSnapshotPath.equals(PathUtils.getDataDirectory(applicationContext))) {
return;
}
new ResourceCleaner(applicationContext).start();
final String dataDirPath = PathUtils.getDataDirectory(applicationContext);
@@ -389,7 +400,9 @@ public class FlutterMain {
* </ul>
*
* <p>When the blobs are contained in the native library directory,
* the format <b>`lib_%s.so`</b> is applied to the file name.
* this method looks for blobs named <b>`lib_%s.so`</b>.
*
* The shared library should have the `lib` prefix only. e.g. <b>`libapp.so`</b>.
*
* <p>Note: The name of the files can be customized in the app's metadata, but the
* format is preserved.
@@ -404,7 +417,7 @@ public class FlutterMain {
String aotVmSnapshotInstrLib = "lib_" + sAotVmSnapshotInstr + ".so";
String aotIsolateSnapshotDataLib = "lib_" + sAotIsolateSnapshotData + ".so";
String aotIsolateSnapshotInstrLib = "lib_" + sAotIsolateSnapshotInstr + ".so";
String aotSharedLibraryLib = "lib_" + sAotSharedLibraryPath + ".so";
String aotSharedLibraryLib = "lib" + sAotSharedLibraryPath;
boolean isPrecompiledBlobInLib = libs
.containsAll(Arrays.asList(