将一些项目中遇到,并且使用的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失效不清楚。做个记录
网友评论