1 #!/bin/bash 2 # 3 # Copyright (C) 2013 The Android Open Source Project 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 # Stop if something fails. 18 set -e 19 20 # Write out files with 65500 total static fields, instance fields, and methods 21 # to exceed the dex format's limits. 22 mkdir src 23 awk ' 24 BEGIN { 25 writeFileField("FillerStatic", "static public int staticInt"); 26 writeFileField("FillerField", "public int fieldInt"); 27 writeFileMethod("FillerMethod"); 28 } 29 function writeFileField(name, type) { 30 fileName = "src/" name ".java"; 31 printf("public class %s {\n", name) > fileName; 32 for (i = 1; i <= 65500; i++) { 33 printf(" %s%d;\n", type, i) > fileName; 34 } 35 printf("}\n") > fileName; 36 } 37 function writeFileMethod(name) { 38 fileName = "src/" name ".java"; 39 printf("public class %s {\n", name) > fileName; 40 for (i = 1; i <= 65500; i++) { 41 printf(" public void meth%d() { }\n", i) > fileName; 42 } 43 printf("}\n") > fileName; 44 }' 45 46 mkdir classes 47 ${JAVAC} -d classes `find src -name '*.java'` 48 mkdir out 49 dx -JXmx1024m --dex --no-optimize --multi-dex --output=out classes 50 ls -1F out 51 52