Error: code too large

I am creating an application where it is looking for a database (which I am currently creating). I made over 10/12 of this when I received the message : code too large as a Gradle Build message.

A java file is just a "database" (with data used in another class).

It has the following form:

static int[][] mDatabase10 = new int[][]{{1, 0, 0, 0, 11, 22}, {1, 53, 42, 0, 41, 0}, {7, 34, 11, 33, 32, 0}}; 

Each array of arrays (12 of them) has 80 arrays:

 static int[][][][] dbDatabase = {{mDatabase10, mDatabase10a, mDatabase10b, mDatabase10c, mDatabase10d, mDatabase10e, mDatabase10f, mDatabase10g, mDatabase10h, mDatabase10i, mDatabase10j, mDatabase10k, mDatabase10l, mDatabase10m, mDatabase10n, mDatabase10o, mDatabase10p, mDatabase10q, mDatabase10r, mDatabase10s, mDatabase10t, mDatabase10u, mDatabase10v, mDatabase10w, mDatabase10x, mDatabase10y, mDatabase10z, mDatabase11a, mDatabase11b, mDatabase11c, mDatabase11d, mDatabase11e, mDatabase11f, mDatabase11g, mDatabase11h, mDatabase11i, mDatabase11j, mDatabase11k, mDatabase11l, mDatabase11m, mDatabase11n, mDatabase11o, mDatabase11p, mDatabase11q, mDatabase11r, mDatabase11s, mDatabase11t, mDatabase11u, mDatabase11v, mDatabase11w, mDatabase11x, mDatabase11y, mDatabase11z, mDatabase12a, mDatabase12b, mDatabase12c, mDatabase12d, mDatabase12e, mDatabase12f, mDatabase12g, mDatabase12h, mDatabase12i, mDatabase12j, mDatabase12k, mDatabase12l, mDatabase12m, mDatabase12n, mDatabase12o, mDatabase12p, mDatabase12q, mDatabase12r, mDatabase12s, mDatabase12t, mDatabase12u, mDatabase12v, mDatabase12w, mDatabase12x, mDatabase12y, mDatabase12z, mDatabase13a}, {mDatabase20, mDatabase20a, mDatabase20b, mDatabase20c, mDatabase20d, mDatabase20e, mDatabase20f, mDatabase20g, mDatabase20h, mDatabase20i, mDatabase20j, mDatabase20k, mDatabase20l, mDatabase20m, mDatabase20n, mDatabase20o, mDatabase20p, mDatabase20q, mDatabase20r, mDatabase20s, mDatabase20t, mDatabase20u, mDatabase20v, mDatabase20w, mDatabase20x, mDatabase20y, mDatabase20z, mDatabase21a, mDatabase21b, mDatabase21c, mDatabase21d, mDatabase21e, mDatabase21f, mDatabase21g, mDatabase21h, mDatabase21i, mDatabase21j, mDatabase21k, mDatabase21l, mDatabase21m, mDatabase21n, mDatabase21o, mDatabase21p, mDatabase21q, mDatabase21r, mDatabase21s, mDatabase21t, mDatabase21u, mDatabase21v, mDatabase21w, mDatabase21x, mDatabase21y, mDatabase21z, mDatabase22a, mDatabase22b, mDatabase22c, mDatabase22d, mDatabase22e, mDatabase22f, mDatabase22g, mDatabase22h, mDatabase22i, mDatabase22j, mDatabase22k, mDatabase22l, mDatabase22m, mDatabase22n, mDatabase22o, mDatabase22p, mDatabase22q, mDatabase22r, mDatabase22s, mDatabase22t, mDatabase22u, mDatabase22v, mDatabase22w, mDatabase22x, mDatabase22y, mDatabase22z, mDatabase23a}, //so on until mDatabase123a... 

Finally, there is a function to return the requested array to another class.

 public static int[][] Chordlookup(int chordpart1, int chordpart2){ return dbDatabase[chordpart1-1][chordpart2-1]; } 

Now, from my understanding on the Internet about this problem, this is because the database.java class is too large. How can i solve this?

I am open to suggestions since I am not very versed in java ...

EDIT:

A little description of what the code does:

each mDatabase is a chord (for example, Cm7) each group of 6 ints is a place where you can play this chord: {1, 0, 0, 0, 11, 22} Some chords may have one of them, some more .

then in dbDatabase each block (mDatabaseX0 - mDatabaseX3a) is a root (as in A, B, C, D, E, F, G)

+5
source share
1 answer

The code is limited to 64 Kbytes, and when you initialize the array, you do this in code.

The best option is to save the data in a file and read the necessary data. Note: the file can be deployed with the application and retrieved directly from the archive.

Another option is to use String instead (several lines are not so limited in length) and parse it.

EDIT:

I suggest you write the data in a form convenient for humans, for example

 Cm7 Bm6 Am7 .... Dm8 Cm7 Dm8 .... .... 
+4
source

Source: https://habr.com/ru/post/1212181/


All Articles