Android 增量更新
本文介绍的是如何实现Android 增量更新,而不是增量更新的深层次的原理 什么是增量更新 应用越做越大,可能只是一个小小的改动就需要重新下载安装整个APP,这种方式即增加了服务器的压力,又浪费了用户的流量,因此每当我们发布新版本的时候,一些用户升级并不是很积极,这就造成了新版本的升级率并不高。而google为了解决了这个问题,提出了Smart App Update,即增量更新(也叫做差分升级)。 ...
本文介绍的是如何实现Android 增量更新,而不是增量更新的深层次的原理 什么是增量更新 应用越做越大,可能只是一个小小的改动就需要重新下载安装整个APP,这种方式即增加了服务器的压力,又浪费了用户的流量,因此每当我们发布新版本的时候,一些用户升级并不是很积极,这就造成了新版本的升级率并不高。而google为了解决了这个问题,提出了Smart App Update,即增量更新(也叫做差分升级)。 ...
由于android碎片化严重,而且各大厂商极有可能去修改相关API的实现,其中遇到了不少坑,包括实时相机高斯模糊,自动对焦的兼容问题,以及一系列性能问题。换过很多搜索引擎,访问过很多网站,访问过很多网站,拜读过很多代码,没有发现对于相机实时自动对焦特别完美的实现方式。现对相机的自动对焦问题单独做一个记录,算是对这部分的一个总结。也希望后人在这部分能够快速地解决问题,不必浪费过多的时间。测试手机包括:MX4 pro,小米4,华为荣耀3C等等。 ...
同时使用parceler、butterknife和dagger2这几个库时,可能是因为都用到了annotation,gradle报错: Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/services/javax.annotation.processing.Processor File1: /Volumes/Android/gradle/gradle/caches/modules-2/files-2.1/com.google.dagger/dagger-compiler/2.0.2/1170f75c1ce293f80755bbc9fcd60e0765022bd0/dagger-compiler-2.0.2.jar File2: /Volumes/Android/gradle/gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/7.0.1/d5d13ea991eab0252e3710e5df3d6a9d4b21d461/butterknife-7.0.1.jar 解决方法: packagingOptions { exclude 'META-INF/services/javax.annotation.processing.Processor' // butterknife }
项目中发现,RecyclerView在5.0以上版本滑动不流畅,滑动的手指一离开屏幕,列表就不动了,没有惯性效果。调查原因,发现应该是与ScrollView的有关。 在网上找了找解决方案,有人说把targetSDK改成21可以解决问题,但是并不好用。 解决: 为recyclerView设置禁止嵌套滑动 setNestedScrollingEnabled(false);
译文来自 http://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition android M 的名字官方刚发布不久,最终正式版即将来临! android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响。惊讶的是android社区鲜有谈论这事儿,尽管这事很重要或许在不远的将来会引发很严重的问题。 这是今天我写这篇博客的原因。这里有一切关于android运行时权限你需要知道的,包括如何在代码中实现。现在亡羊补牢还不晚。 ...
!!! 原文出处:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=498 0、写在前面本文涉及到屏幕密度的讨论,这里先要搞清楚 DisplayMetrics 的两个变量,摘录官方文档的解释: density:The logical density of the display. This is a scaling factor for the Density Independent Pixel unit, where one DIP is one pixel on an approximately 160 dpi screen (for example a 240x320, 1.5”x2” screen), providing the baseline of the system’s display. Thus on a 160dpi screen this density value will be 1; on a 120 dpi screen it would be .75; etc. This value does not exactly follow the real screen size (as given by xdpi and ydpi, but rather is used to scale the size of the overall UI in steps based on gross changes in the display dpi....
1.是用场景 当一个应用上线发布首,突然发现了一个bug需要进行修复,如果真个bug不是严重,或者可以通过服务端进行避免还好说。但是如果这个bug很严重,影响了主功能,必须更新才行,那重新打包,重新上传市场和渠道(近百的渠道)。这些还不是主要问题,用户刚刚升级现在又提示升级大大影响了用户体验。 ...
public static void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { e.printStackTrace(); } }