Android.mk revision 1c83cbc4a817acbd7f9abb5b29a2d418a958e6a1
1# 2# Copyright (C) 2011 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17LOCAL_PATH := $(call my-dir) 18 19art_path := $(LOCAL_PATH) 20 21######################################################################## 22# clean-oat rules 23# 24 25include $(art_path)/build/Android.common_path.mk 26 27# following the example of build's dont_bother for clean targets 28ifneq (,$(filter clean-oat,$(MAKECMDGOALS))) 29art_dont_bother := true 30endif 31ifneq (,$(filter clean-oat-host,$(MAKECMDGOALS))) 32art_dont_bother := true 33endif 34ifneq (,$(filter clean-oat-target,$(MAKECMDGOALS))) 35art_dont_bother := true 36endif 37 38.PHONY: clean-oat 39clean-oat: clean-oat-host clean-oat-target 40 41.PHONY: clean-oat-host 42clean-oat-host: 43 rm -f $(HOST_CORE_IMG_OUT) 44 rm -f $(HOST_CORE_OAT_OUT) 45 rm -f $(HOST_OUT_JAVA_LIBRARIES)/$(ART_HOST_ARCH)/*.odex 46ifneq ($(HOST_PREFER_32_BIT),true) 47 rm -f $(2ND_HOST_CORE_IMG_OUT) 48 rm -f $(2ND_HOST_CORE_OAT_OUT) 49 rm -f $(HOST_OUT_JAVA_LIBRARIES)/$(2ND_ART_HOST_ARCH)/*.odex 50endif 51 rm -f $(TARGET_CORE_IMG_OUT) 52 rm -f $(TARGET_CORE_OAT_OUT) 53ifdef TARGET_2ND_ARCH 54 rm -f $(2ND_TARGET_CORE_IMG_OUT) 55 rm -f $(2ND_TARGET_CORE_OAT_OUT) 56endif 57 rm -rf $(DEXPREOPT_PRODUCT_DIR_FULL_PATH) 58 rm -f $(TARGET_OUT_UNSTRIPPED)/system/framework/*.odex 59 rm -f $(TARGET_OUT_UNSTRIPPED)/system/framework/*/*.oat 60 rm -f $(TARGET_OUT_UNSTRIPPED)/system/framework/*/*.art 61 rm -f $(TARGET_OUT)/framework/*/*.oat 62 rm -f $(TARGET_OUT)/framework/*/*.art 63 rm -f $(TARGET_OUT_APPS)/*.odex 64 rm -f $(TARGET_OUT_INTERMEDIATES)/JAVA_LIBRARIES/*_intermediates/javalib.odex 65 rm -f $(TARGET_OUT_INTERMEDIATES)/APPS/*_intermediates/*.odex 66ifdef TARGET_2ND_ARCH 67 rm -f $(2ND_TARGET_OUT_INTERMEDIATES)/JAVA_LIBRARIES/*_intermediates/javalib.odex 68 rm -f $(2ND_TARGET_OUT_INTERMEDIATES)/APPS/*_intermediates/*.odex 69endif 70 rm -rf /tmp/$(USER)/test-*/dalvik-cache/* 71 rm -rf /tmp/android-data/dalvik-cache/* 72 73.PHONY: clean-oat-target 74clean-oat-target: 75 adb remount 76 adb shell rm -rf $(ART_TARGET_NATIVETEST_DIR) 77 adb shell rm -rf $(ART_TARGET_TEST_DIR) 78 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/*/* 79 adb shell rm -rf $(DEXPREOPT_BOOT_JAR_DIR)/$(DEX2OAT_TARGET_ARCH) 80 adb shell rm -rf system/app/$(DEX2OAT_TARGET_ARCH) 81ifdef TARGET_2ND_ARCH 82 adb shell rm -rf $(DEXPREOPT_BOOT_JAR_DIR)/$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH) 83 adb shell rm -rf system/app/$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH) 84endif 85 adb shell rm -rf data/run-test/test-*/dalvik-cache/* 86 87ifneq ($(art_dont_bother),true) 88 89######################################################################## 90# cpplint rules to style check art source files 91 92include $(art_path)/build/Android.cpplint.mk 93 94######################################################################## 95# product rules 96 97include $(art_path)/runtime/Android.mk 98include $(art_path)/compiler/Android.mk 99include $(art_path)/dex2oat/Android.mk 100include $(art_path)/disassembler/Android.mk 101include $(art_path)/oatdump/Android.mk 102include $(art_path)/patchoat/Android.mk 103include $(art_path)/dalvikvm/Android.mk 104include $(art_path)/tools/Android.mk 105include $(art_path)/build/Android.oat.mk 106include $(art_path)/sigchainlib/Android.mk 107 108 109# ART_HOST_DEPENDENCIES depends on Android.executable.mk above for ART_HOST_EXECUTABLES 110ART_HOST_DEPENDENCIES := \ 111 $(ART_HOST_EXECUTABLES) \ 112 $(HOST_OUT_JAVA_LIBRARIES)/core-libart-hostdex.jar \ 113 $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) 114ART_TARGET_DEPENDENCIES := \ 115 $(ART_TARGET_EXECUTABLES) \ 116 $(TARGET_OUT_JAVA_LIBRARIES)/core-libart.jar \ 117 $(TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so 118ifdef TARGET_2ND_ARCH 119ART_TARGET_DEPENDENCIES += $(2ND_TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so 120endif 121 122######################################################################## 123# test rules 124 125# All the dependencies that must be built ahead of sync-ing them onto the target device. 126TEST_ART_TARGET_SYNC_DEPS := 127 128include $(art_path)/build/Android.common_test.mk 129include $(art_path)/build/Android.gtest.mk 130include $(art_path)/test/Android.run-test.mk 131 132# Sync test files to the target, depends upon all things that must be pushed to the target. 133.PHONY: test-art-target-sync 134test-art-target-sync: $(TEST_ART_TARGET_SYNC_DEPS) 135 adb remount 136 adb sync 137 138# Undefine variable now its served its purpose. 139TEST_ART_TARGET_SYNC_DEPS := 140 141# "mm test-art" to build and run all tests on host and device 142.PHONY: test-art 143test-art: test-art-host test-art-target 144 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 145 146.PHONY: test-art-gtest 147test-art-gtest: test-art-host-gtest test-art-target-gtest 148 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 149 150.PHONY: test-art-run-test 151test-art-run-test: test-art-host-run-test test-art-target-run-test 152 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 153 154######################################################################## 155# host test rules 156 157VIXL_TEST_DEPENDENCY := 158# We can only run the vixl tests on 64-bit hosts (vixl testing issue) when its a 159# top-level build (to declare the vixl test rule). 160ifneq ($(HOST_PREFER_32_BIT),true) 161ifeq ($(ONE_SHOT_MAKEFILE),) 162VIXL_TEST_DEPENDENCY := run-vixl-tests 163endif 164endif 165 166.PHONY: test-art-host-vixl 167test-art-host-vixl: $(VIXL_TEST_DEPENDENCY) 168 169# "mm test-art-host" to build and run all host tests. 170.PHONY: test-art-host 171test-art-host: test-art-host-gtest test-art-host-run-test test-art-host-vixl 172 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 173 174# All host tests that run solely with the default compiler. 175.PHONY: test-art-host-default 176test-art-host-default: test-art-host-run-test-default 177 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 178 179# All host tests that run solely with the optimizing compiler. 180.PHONY: test-art-host-optimizing 181test-art-host-optimizing: test-art-host-run-test-optimizing 182 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 183 184# All host tests that run solely on the interpreter. 185.PHONY: test-art-host-interpreter 186test-art-host-interpreter: test-art-host-run-test-interpreter 187 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 188 189# Primary host architecture variants: 190.PHONY: test-art-host$(ART_PHONY_TEST_HOST_SUFFIX) 191test-art-host$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-gtest$(ART_PHONY_TEST_HOST_SUFFIX) \ 192 test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX) 193 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 194 195.PHONY: test-art-host-default$(ART_PHONY_TEST_HOST_SUFFIX) 196test-art-host-default$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX) 197 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 198 199.PHONY: test-art-host-optimizing$(ART_PHONY_TEST_HOST_SUFFIX) 200test-art-host-optimizing$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX) 201 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 202 203.PHONY: test-art-host-interpreter$(ART_PHONY_TEST_HOST_SUFFIX) 204test-art-host-interpreter$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX) 205 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 206 207# Secondary host architecture variants: 208ifneq ($(HOST_PREFER_32_BIT),true) 209.PHONY: test-art-host$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 210test-art-host$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-gtest$(2ND_ART_PHONY_TEST_HOST_SUFFIX) \ 211 test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 212 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 213 214.PHONY: test-art-host-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 215test-art-host-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 216 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 217 218.PHONY: test-art-host-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 219test-art-host-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 220 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 221 222.PHONY: test-art-host-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 223test-art-host-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX) 224 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 225endif 226 227######################################################################## 228# target test rules 229 230# "mm test-art-target" to build and run all target tests. 231.PHONY: test-art-target 232test-art-target: test-art-target-gtest test-art-target-run-test 233 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 234 235# All target tests that run solely with the default compiler. 236.PHONY: test-art-target-default 237test-art-target-default: test-art-target-run-test-default 238 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 239 240# All target tests that run solely with the optimizing compiler. 241.PHONY: test-art-target-optimizing 242test-art-target-optimizing: test-art-target-run-test-optimizing 243 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 244 245# All target tests that run solely on the interpreter. 246.PHONY: test-art-target-interpreter 247test-art-target-interpreter: test-art-target-run-test-interpreter 248 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 249 250# Primary target architecture variants: 251.PHONY: test-art-target$(ART_PHONY_TEST_TARGET_SUFFIX) 252test-art-target$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-gtest$(ART_PHONY_TEST_TARGET_SUFFIX) \ 253 test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX) 254 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 255 256.PHONY: test-art-target-default$(ART_PHONY_TEST_TARGET_SUFFIX) 257test-art-target-default$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX) 258 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 259 260.PHONY: test-art-target-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX) 261test-art-target-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX) 262 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 263 264.PHONY: test-art-target-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX) 265test-art-target-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX) 266 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 267 268# Secondary target architecture variants: 269ifdef TARGET_2ND_ARCH 270.PHONY: test-art-target$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 271test-art-target$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-gtest$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) \ 272 test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 273 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 274 275.PHONY: test-art-target-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 276test-art-target-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 277 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 278 279.PHONY: test-art-target-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 280test-art-target-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 281 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 282 283.PHONY: test-art-target-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 284test-art-target-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) 285 $(hide) $(call ART_TEST_PREREQ_FINISHED,$@) 286endif 287 288######################################################################## 289# oat-target and oat-target-sync rules 290 291OAT_TARGET_RULES := 292 293# $(1): input jar or apk target location 294define declare-oat-target-target 295ifneq (,$(filter $(1),$(addprefix system/app/,$(addsuffix .apk,$(PRODUCT_DEX_PREOPT_PACKAGES_IN_DATA))))) 296OUT_OAT_FILE := $(call dalvik-cache-out,$(1)/classes.dex) 297else 298OUT_OAT_FILE := $(PRODUCT_OUT)/$(basename $(1)).odex 299endif 300 301ifeq ($(ONE_SHOT_MAKEFILE),) 302# ONE_SHOT_MAKEFILE is empty for a top level build and we don't want 303# to define the oat-target-* rules there because they will conflict 304# with the build/core/dex_preopt.mk defined rules. 305.PHONY: oat-target-$(1) 306oat-target-$(1): 307 308else 309.PHONY: oat-target-$(1) 310oat-target-$(1): $$(OUT_OAT_FILE) 311 312$$(OUT_OAT_FILE): $(PRODUCT_OUT)/$(1) $(DEFAULT_DEX_PREOPT_BUILT_IMAGE) $(DEX2OATD) 313 @mkdir -p $$(dir $$@) 314 $(DEX2OATD) --runtime-arg -Xms$(DEX2OAT_XMS) --runtime-arg -Xmx$(DEX2OAT_XMX) \ 315 --boot-image=$(DEFAULT_DEX_PREOPT_BUILT_IMAGE) --dex-file=$(PRODUCT_OUT)/$(1) \ 316 --dex-location=/$(1) --oat-file=$$@ \ 317 --instruction-set=$(DEX2OAT_TARGET_ARCH) \ 318 --instruction-set-features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) \ 319 --android-root=$(PRODUCT_OUT)/system --include-patch-information 320 321endif 322 323OAT_TARGET_RULES += oat-target-$(1) 324endef 325 326$(foreach file,\ 327 $(filter-out\ 328 $(addprefix $(TARGET_OUT_JAVA_LIBRARIES)/,$(addsuffix .jar,$(LIBART_TARGET_BOOT_JARS))),\ 329 $(wildcard $(TARGET_OUT_APPS)/*.apk) $(wildcard $(TARGET_OUT_JAVA_LIBRARIES)/*.jar)),\ 330 $(eval $(call declare-oat-target-target,$(subst $(PRODUCT_OUT)/,,$(file))))) 331 332.PHONY: oat-target 333oat-target: $(ART_TARGET_DEPENDENCIES) $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) $(OAT_TARGET_RULES) 334 335.PHONY: oat-target-sync 336oat-target-sync: oat-target 337 adb remount 338 adb sync 339 340######################################################################## 341# "m build-art" for quick minimal build 342.PHONY: build-art 343build-art: build-art-host build-art-target 344 345.PHONY: build-art-host 346build-art-host: $(ART_HOST_EXECUTABLES) $(ART_HOST_GTEST_EXECUTABLES) $(HOST_CORE_IMG_OUT) $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) 347 348.PHONY: build-art-target 349build-art-target: $(ART_TARGET_EXECUTABLES) $(ART_TARGET_GTEST_EXECUTABLES) $(TARGET_CORE_IMG_OUT) $(TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so 350 351######################################################################## 352# "m art-host" for just building the files needed to run the art script 353.PHONY: art-host 354ifeq ($(HOST_PREFER_32_BIT),true) 355art-host: $(HOST_OUT_EXECUTABLES)/art $(HOST_OUT)/bin/dalvikvm32 $(HOST_OUT)/lib/libart.so $(HOST_OUT)/bin/dex2oat $(HOST_OUT)/bin/patchoat $(HOST_CORE_IMG_OUT) $(HOST_OUT)/lib/libjavacore.so $(HOST_OUT)/bin/dalvikvm 356else 357art-host: $(HOST_OUT_EXECUTABLES)/art $(HOST_OUT)/bin/dalvikvm64 $(HOST_OUT)/bin/dalvikvm32 $(HOST_OUT)/lib/libart.so $(HOST_OUT)/bin/dex2oat $(HOST_OUT)/bin/patchoat $(HOST_CORE_IMG_OUT) $(HOST_OUT)/lib/libjavacore.so $(HOST_OUT)/lib64/libjavacore.so $(HOST_OUT)/bin/dalvikvm 358endif 359 360.PHONY: art-host-debug 361art-host-debug: art-host $(HOST_OUT)/lib/libartd.so $(HOST_OUT)/bin/dex2oatd $(HOST_OUT)/bin/patchoatd 362 363######################################################################## 364# targets to switch back and forth from libdvm to libart 365 366.PHONY: use-art 367use-art: 368 adb root && sleep 3 369 adb shell stop 370 adb shell setprop persist.sys.dalvik.vm.lib.2 libart.so 371 adb shell start 372 373.PHONY: use-artd 374use-artd: 375 adb root && sleep 3 376 adb shell stop 377 adb shell setprop persist.sys.dalvik.vm.lib.2 libartd.so 378 adb shell start 379 380.PHONY: use-dalvik 381use-dalvik: 382 adb root && sleep 3 383 adb shell stop 384 adb shell setprop persist.sys.dalvik.vm.lib.2 libdvm.so 385 adb shell start 386 387.PHONY: use-art-full 388use-art-full: 389 adb root && sleep 3 390 adb shell stop 391 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/* 392 adb shell setprop dalvik.vm.dex2oat-flags "" 393 adb shell setprop dalvik.vm.image-dex2oat-flags "" 394 adb shell setprop persist.sys.dalvik.vm.lib.2 libart.so 395 adb shell start 396 397.PHONY: use-artd-full 398use-artd-full: 399 adb root && sleep 3 400 adb shell stop 401 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/* 402 adb shell setprop dalvik.vm.dex2oat-flags "" 403 adb shell setprop dalvik.vm.image-dex2oat-flags "" 404 adb shell setprop persist.sys.dalvik.vm.lib.2 libartd.so 405 adb shell start 406 407.PHONY: use-art-smart 408use-art-smart: 409 adb root && sleep 3 410 adb shell stop 411 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/* 412 adb shell setprop dalvik.vm.dex2oat-flags "--compiler-filter=interpret-only" 413 adb shell setprop dalvik.vm.image-dex2oat-flags "" 414 adb shell setprop persist.sys.dalvik.vm.lib.2 libart.so 415 adb shell start 416 417.PHONY: use-art-interpret-only 418use-art-interpret-only: 419 adb root && sleep 3 420 adb shell stop 421 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/* 422 adb shell setprop dalvik.vm.dex2oat-flags "--compiler-filter=interpret-only" 423 adb shell setprop dalvik.vm.image-dex2oat-flags "--compiler-filter=interpret-only" 424 adb shell setprop persist.sys.dalvik.vm.lib.2 libart.so 425 adb shell start 426 427.PHONY: use-artd-interpret-only 428use-artd-interpret-only: 429 adb root && sleep 3 430 adb shell stop 431 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/* 432 adb shell setprop dalvik.vm.dex2oat-flags "--compiler-filter=interpret-only" 433 adb shell setprop dalvik.vm.image-dex2oat-flags "--compiler-filter=interpret-only" 434 adb shell setprop persist.sys.dalvik.vm.lib.2 libartd.so 435 adb shell start 436 437.PHONY: use-art-verify-none 438use-art-verify-none: 439 adb root && sleep 3 440 adb shell stop 441 adb shell rm -rf $(ART_TARGET_DALVIK_CACHE_DIR)/* 442 adb shell setprop dalvik.vm.dex2oat-flags "--compiler-filter=verify-none" 443 adb shell setprop dalvik.vm.image-dex2oat-flags "--compiler-filter=verify-none" 444 adb shell setprop persist.sys.dalvik.vm.lib.2 libart.so 445 adb shell start 446 447######################################################################## 448 449endif # !art_dont_bother 450