Android Studio中的自动分包和方法数查看

来源:互联网 发布:mysql base64 解码 编辑:程序博客网 时间:2024/06/14 18:43
一、要求targetSdkVersion最低21(未验证其它版本是否可以分包)
二、在app/build.gradle文件中,增加如下配置:
1、android->defaultConfig->multiDexEnabled true
2、android->dexOptions {//dex配置
        preDexLibraries = false
        additionalParameters = [
                                '--multi-dex',//多分包
                                '--set-max-idx-number=60000'//每个包内方法数上限
        ]
    }
3、android->packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
4、android->lintOptions {
checkReleaseBuilds false
abortOnError false
}
5、在dependencies中增加依赖(SDK自带):
compile 'com.android.support:multidex:1.0.1'
三、将自定义Application类继承 MultiDexApplication, 或修改AndroidManifest.xml中 application标签的name属性为 android.support.multidex.MultiDexApplication

四、重新编译即可自动分包,如果内存不够,可适当提高gradle.properties文件中的 org.gradle.jvmargs=-Xmx1536m

最终的配置文件:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 21
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "com.xxx"
        minSdkVersion 17
        targetSdkVersion 21

        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
dexOptions {//dex配置
        preDexLibraries = false
        additionalParameters = [
                                '--multi-dex',//多分包
                                '--set-max-idx-number=60000'//每个包内方法数上限
        ]
    }
packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}


dependencies {
    compile 'com.android.support:support-v4:21.0.3'
    compile 'com.android.support:multidex:1.0.1'
}

补充:使用Android Sdk自带小工具,查看APK或者Jar包里面的方法数,切换目录至 %Android_Sdk%/build-tools/25.0.2, 这里是版本号,具体可能不一样:
1、查看Apk或者dex文件:
Windows下,使用管道命令将信息输出到文件,然后查看xxx.info文件,搜索 “method_ids_size”,对应的值就是方法数
> dexdump -f xxx.apk >> xxx.info
Linux下,可以使用grep直接过滤
> dexdump -f xxx.apk | grep 'method_ids_size'

2、查看Jar包,需要先将jar包转换成dex文件,再使用上面的命令即可;
window下,得到dex文件之后,再使用上面的命令查询
> dx --dex --verbose --no-strict --output=xxx.dex xxx.jar     // output是输出的dex文件,后面跟上需要查看的Jar包文件
Linux下:
# dx --dex --verbose --no-strict --output=xxx.dex xxx.jar
# cat temp.dex | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d\n"'
原创粉丝点击