Android tips

2017-07-14  本文已影响11人  7ff53e360bcc

将一些项目中遇到,并且使用的tip 记录下来,以后找也方便

资源文件

获取color

ContextCompat.getColor(self(), R.color.common_yello)

上下文

通过view 获取activity : AppCompatActivity

public class Activities {

    public static Activity getActivity(View view) {
        Context context = view.getContext();
        while (context instanceof ContextWrapper) {
            if (context instanceof Activity) {
                return (Activity) context;
            }
            context = ((ContextWrapper) context).getBaseContext();
        }
        return null;
    }
}

65535问题

继承 MultiDexApplication ,与使用MultiDex.install(this),均在assemableDebug出现65535
Android debug 出现65535的问题,而release没有出现,是因为release开启混淆,去掉了没有使用的方法。

通过配置依赖

// project 
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.3'
// app
apply from: 'version.gradle'

可以使用下面的命令得到dex的方法总数。

assemableDebug

Total methods in app-server1-debug.apk: 189297 (288.85% used)
Total fields in app-server1-debug.apk: 160297 (244.60% used)
Total classes in app-server1-debug.apk: 23033 (35.15% used)

assembleRelease

Total methods in app-igetcool-release.apk: 136792 (208.73% used)
Total fields in app-igetcool-release.apk: 105736 (161.34% used)
Total classes in app-igetcool-release.apk: 17240 (26.31% used)

当App minSdkVersion 小于21的时候,会使用multidex进行分包,大于21的时候art直接支持dex分包。

当前解决方案:

productFlavors{devbuild{ minSdkVersion 21}}
./gradlew :app:assembleDevbuildDebug installDevbuildDebug

具体为什么multiDex失效不清楚。做个记录

上一篇 下一篇

猜你喜欢

热点阅读