Browse Source

Fix issue causing export to fail with "Could not unzip temporary unaligned APK" error and improve command output logging.

Fredia Huya-Kouadio 4 years ago
parent
commit
3a033c44b6
1 changed files with 28 additions and 10 deletions
  1. 28 10
      platform/android/export/export.cpp

+ 28 - 10
platform/android/export/export.cpp

@@ -1819,7 +1819,7 @@ public:
 			p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST;
 			p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST;
 		}
 		}
 
 
-		String tmp_export_path = EditorSettings::get_singleton()->get_cache_dir().plus_file("tmpexport.apk");
+		String tmp_export_path = EditorSettings::get_singleton()->get_cache_dir().plus_file("tmpexport." + uitos(OS::get_singleton()->get_unix_time()) + ".apk");
 
 
 #define CLEANUP_AND_RETURN(m_err)                         \
 #define CLEANUP_AND_RETURN(m_err)                         \
 	{                                                     \
 	{                                                     \
@@ -1836,6 +1836,7 @@ public:
 
 
 		List<String> args;
 		List<String> args;
 		int rv;
 		int rv;
+		String output;
 
 
 		bool remove_prev = p_preset->get("one_click_deploy/clear_previous_install");
 		bool remove_prev = p_preset->get("one_click_deploy/clear_previous_install");
 		String version_name = p_preset->get("version/name");
 		String version_name = p_preset->get("version/name");
@@ -1853,7 +1854,9 @@ public:
 			args.push_back("uninstall");
 			args.push_back("uninstall");
 			args.push_back(get_package_name(package_name));
 			args.push_back(get_package_name(package_name));
 
 
-			err = OS::get_singleton()->execute(adb, args, nullptr, &rv);
+			output.clear();
+			err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
+			print_verbose(output);
 		}
 		}
 
 
 		print_line("Installing to device (please wait...): " + devices[p_device].name);
 		print_line("Installing to device (please wait...): " + devices[p_device].name);
@@ -1868,7 +1871,9 @@ public:
 		args.push_back("-r");
 		args.push_back("-r");
 		args.push_back(tmp_export_path);
 		args.push_back(tmp_export_path);
 
 
-		err = OS::get_singleton()->execute(adb, args, nullptr, &rv);
+		output.clear();
+		err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
+		print_verbose(output);
 		if (err || rv != 0) {
 		if (err || rv != 0) {
 			EditorNode::add_io_error("Could not install to device.");
 			EditorNode::add_io_error("Could not install to device.");
 			CLEANUP_AND_RETURN(ERR_CANT_CREATE);
 			CLEANUP_AND_RETURN(ERR_CANT_CREATE);
@@ -1885,7 +1890,9 @@ public:
 				args.push_back(devices[p_device].id);
 				args.push_back(devices[p_device].id);
 				args.push_back("reverse");
 				args.push_back("reverse");
 				args.push_back("--remove-all");
 				args.push_back("--remove-all");
-				OS::get_singleton()->execute(adb, args, nullptr, &rv);
+				output.clear();
+				OS::get_singleton()->execute(adb, args, &output, &rv, true);
+				print_verbose(output);
 
 
 				if (p_debug_flags & DEBUG_FLAG_REMOTE_DEBUG) {
 				if (p_debug_flags & DEBUG_FLAG_REMOTE_DEBUG) {
 					int dbg_port = EditorSettings::get_singleton()->get("network/debug/remote_port");
 					int dbg_port = EditorSettings::get_singleton()->get("network/debug/remote_port");
@@ -1896,7 +1903,9 @@ public:
 					args.push_back("tcp:" + itos(dbg_port));
 					args.push_back("tcp:" + itos(dbg_port));
 					args.push_back("tcp:" + itos(dbg_port));
 					args.push_back("tcp:" + itos(dbg_port));
 
 
-					OS::get_singleton()->execute(adb, args, nullptr, &rv);
+					output.clear();
+					OS::get_singleton()->execute(adb, args, &output, &rv, true);
+					print_verbose(output);
 					print_line("Reverse result: " + itos(rv));
 					print_line("Reverse result: " + itos(rv));
 				}
 				}
 
 
@@ -1910,7 +1919,9 @@ public:
 					args.push_back("tcp:" + itos(fs_port));
 					args.push_back("tcp:" + itos(fs_port));
 					args.push_back("tcp:" + itos(fs_port));
 					args.push_back("tcp:" + itos(fs_port));
 
 
-					err = OS::get_singleton()->execute(adb, args, nullptr, &rv);
+					output.clear();
+					err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
+					print_verbose(output);
 					print_line("Reverse result2: " + itos(rv));
 					print_line("Reverse result2: " + itos(rv));
 				}
 				}
 			} else {
 			} else {
@@ -1938,7 +1949,9 @@ public:
 		args.push_back("-n");
 		args.push_back("-n");
 		args.push_back(get_package_name(package_name) + "/com.godot.game.GodotApp");
 		args.push_back(get_package_name(package_name) + "/com.godot.game.GodotApp");
 
 
-		err = OS::get_singleton()->execute(adb, args, nullptr, &rv);
+		output.clear();
+		err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
+		print_verbose(output);
 		if (err || rv != 0) {
 		if (err || rv != 0) {
 			EditorNode::add_io_error("Could not execute on device.");
 			EditorNode::add_io_error("Could not execute on device.");
 			CLEANUP_AND_RETURN(ERR_CANT_CREATE);
 			CLEANUP_AND_RETURN(ERR_CANT_CREATE);
@@ -2335,6 +2348,7 @@ public:
 			return ERR_FILE_CANT_OPEN;
 			return ERR_FILE_CANT_OPEN;
 		}
 		}
 
 
+		String output;
 		List<String> args;
 		List<String> args;
 		args.push_back("sign");
 		args.push_back("sign");
 		args.push_back("--verbose");
 		args.push_back("--verbose");
@@ -2350,7 +2364,9 @@ public:
 			print_verbose("Signing debug binary using: " + String("\n") + apksigner + " " + join_list(args, String(" ")));
 			print_verbose("Signing debug binary using: " + String("\n") + apksigner + " " + join_list(args, String(" ")));
 		}
 		}
 		int retval;
 		int retval;
-		OS::get_singleton()->execute(apksigner, args, nullptr, &retval);
+		output.clear();
+		OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
+		print_verbose(output);
 		if (retval) {
 		if (retval) {
 			EditorNode::add_io_error("'apksigner' returned with error #" + itos(retval));
 			EditorNode::add_io_error("'apksigner' returned with error #" + itos(retval));
 			return ERR_CANT_CREATE;
 			return ERR_CANT_CREATE;
@@ -2368,7 +2384,9 @@ public:
 			print_verbose("Verifying signed build using: " + String("\n") + apksigner + " " + join_list(args, String(" ")));
 			print_verbose("Verifying signed build using: " + String("\n") + apksigner + " " + join_list(args, String(" ")));
 		}
 		}
 
 
-		OS::get_singleton()->execute(apksigner, args, nullptr, &retval);
+		output.clear();
+		OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
+		print_verbose(output);
 		if (retval) {
 		if (retval) {
 			EditorNode::add_io_error("'apksigner' verification of " + export_label + " failed.");
 			EditorNode::add_io_error("'apksigner' verification of " + export_label + " failed.");
 			return ERR_CANT_CREATE;
 			return ERR_CANT_CREATE;
@@ -2673,7 +2691,7 @@ public:
 		FileAccess *dst_f = nullptr;
 		FileAccess *dst_f = nullptr;
 		io2.opaque = &dst_f;
 		io2.opaque = &dst_f;
 
 
-		String tmp_unaligned_path = EditorSettings::get_singleton()->get_cache_dir().plus_file("tmpexport-unaligned.apk");
+		String tmp_unaligned_path = EditorSettings::get_singleton()->get_cache_dir().plus_file("tmpexport-unaligned." + uitos(OS::get_singleton()->get_unix_time()) + ".apk");
 
 
 #define CLEANUP_AND_RETURN(m_err)                            \
 #define CLEANUP_AND_RETURN(m_err)                            \
 	{                                                        \
 	{                                                        \