Error: Code too large

Error: Code too large

我正在制作一个应用程序,它可以在数据库(我目前正在构建的)上查找。当我收到 error:code too large 作为 Gradle 构建消息时,我已经完成了超过 10/12。

java 文件几乎只是一个 "database"(数据在另一个 class 中使用)。

它具有以下形式:

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

每个数组数组中有80个数组(其中12个):

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...

终于有函数可以return请求数组到另一个class。

public static int[][] Chordlookup(int chordpart1, int chordpart2){

    return dbDatabase[chordpart1-1][chordpart2-1];
}

现在从网上看了一下这个问题的理解,跟database.java class太大有关。我该如何解决?

我乐于接受建议,因为我对 java...

的经验不多

编辑:

对代码作用的一些描述:

每个mDatabase都是一个和弦(例如Cm7) 每组 6 个整数是演奏该和弦的位置: {1, 0, 0, 0, 11, 22} 有些和弦可能有其中之一,有些和弦有更多。

然后在 dbDatabase 中每个块(mDatabaseX0 到 mDatabaseX3a)都是一个根(如 A、B、C、D、E、F、G)

代码限制为 64K 字节,当您初始化数组时,您可以在代码中执行此操作。

最好的选择是将数据存储在文件中并读取您需要的数据。注:该文件可以随应用一起部署,直接从存档中获取。

另一种选择是使用字符串代替(多个字符串的长度不受限制)并解析它。

编辑:

我建议您以人类可读的形式编写数据,例如

Cm7 Bm6 Am7 ....
Dm8 Cm7 Dm8 ....
....