in benchmarking/platforms/android/android_platform.py [0:0]
def preprocess(self, *args, **kwargs):
assert "programs" in kwargs, "Must have programs specified"
programs = kwargs["programs"]
benchmark = kwargs["benchmark"]
# find the first zipped app file
assert "program" in programs, "program is not specified"
if "platform" in benchmark["model"] and benchmark["model"][
"platform"
].startswith("android"):
if "app" in benchmark["model"]:
self.app = benchmark["model"]["app"]
self.degrade_constraints = benchmark["tests"][0].get("degrade")
if not self.app:
if "intent.txt" in programs:
# temporary to rename the program with adb suffix
with open(programs["intent.txt"], "r") as f:
self.app = json.load(f)
else:
return
# Uninstall if exist
package = self.util.shell(["pm", "list", "packages", self.app["package"]])
if len(package) > 0 and package[0].strip() == "package:" + self.app["package"]:
self.util.shell(["pm", "uninstall", self.app["package"]])
# temporary fix to allow install apk files
if not programs["program"].endswith(".apk"):
new_name = programs["program"] + ".apk"
shutil.copyfile(programs["program"], new_name)
programs["program"] = new_name
self.util.run(["install", programs["program"]])
del programs["program"]