原文地址:Enabling ProGuard in an Android Instant App 原文作者:Wojtek Kaliciński 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:JayZhaoBoy 校对者:hanliuxin5 Instant Apps(即时应用)和 4 MB 字节的限制 把一个已经存在的应用程序转换成 Android Instant App(安卓即时应用程序)是很有挑战性的,但对于模块及结构化你的项目而言却是一个很好的练习,更
大家都是开发,所以应该都知道有一个东西我们永远也避免不了。不错,Bug!我们在开发阶段碰到bug那还好,直接解决就是了,大不了让测试多测一轮。可是,如果我们发出去的版本出现线上Bug,那可怎么办?大多数小的公司可能会选择,重新发新的版本去覆盖安装。这种方式成本较高,而且用户一般都比较讨厌经常需要更新版本的APP。对于小公司来说,出现线上问题影响范围还是比较小的,毕竟用户量较少。可是对于一些巨头公司,有些问题不能及时修复那是致命的。所以呢,有这么一些技术储备和能力比较高的公司为我们开了先河。
在Android早期的版本中,应用程序的运行环境是需要依赖Dalvik虚拟机的。不过,在后来的版本(大概是4.x版本),Android的运行环境却换到了 Android Runtime,其处理应用程序执行的方式完全不同于 Dalvik,Dalvik 是依靠一个 Just-In-Time (JIT) 编译器去解释字节码。
(备注:本文所讲内容的开发环境 -> Android版本9.0 AndroidStudio 3.4 gradle插件版本 3.5)
为了保证APP的质量,有一些自动化测试也是很重要的。很长一段时间Android Developement Tools缺少了对自动化测试的支持。但是最近Google让开发者们可以更容易的接入这些测试了。
Google 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,按照官方文档说明 AndroidX 是对 android.support.xxx 包的整理后产物,因为之前的 support 包过于混乱,比如之前我们如果使用support为27.1.1的相关依赖库时。可能需要所有相关的support 库都为27.1.1。如果其中有bug的话,可能需要所有的都去升级,存在一个绑定关系,而且正式版的发布周期也很长。
开发人员测试自己所开发软件的行为就像学生在完成考试后对自己的成绩进行评估,所以可能会出现下面的问题:
RecyclerView固然功能强大,然而使用过程中时常发生各种兼容性问题,,兹记录处理办法如下,方便大家查阅:
前言 好几个月之前关于Android App热补丁修复火了一把,源于QQ空间团队的一篇文章安卓App热补丁动态修复技术介绍,然后各大厂的开源项目都出来了,本文的实践基于HotFix,也就是QQ空间技术
本文介绍CardView这个控件的使用,CardView继承至FrameLayout类,是support-v7包下的一个类,使用时必须引入cardview依赖包,可在下载的sdk文件夹中找到。。。
随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java
介绍完背景以及初衷之后,我们开始搭建MVVM的框架,这一部分我们进行简单的搭建,了解MVVM架构的基本结构。
简介 什么是组件化? 项目发展到一定阶段时,随着需求的增加以及频繁地变更,项目会越来越大,代码变得越来越臃肿,耦合会越来越多,开发效率也会降低,这个时候我们就需要对旧项目进行重构即模块的拆分,官方的说法就是组件化。 组件化带来的好处 那么,采用组件化能带来什么好处呢?主要有以下两点: 1、现在Android项目中代码量达到一定程度,编译将是一件非常痛苦的事情,一般都需要编译5到6分钟。Android Studio 推出 instant run 由于各种缺陷和限制条件(比如采用热修复tinker)一般情况
本文讲述了一个开发者在Android开发中遇到的崩溃问题,通过抓取日志、定位源码、添加断点、重写类、使用反射、设置日志级别、分析二进制文件、运行时修改变量、以及使用自定义视图等方式,最终找到了问题的原因,并给出了具体的解决方法。该开发者通过这些方法,提高了程序的稳定性,并优化了代码。
最近因为业务需求变更,有考虑采用组件化架构进行开发,这方面我之前没有接触过。关于组件化的文章很多,各方大神更是提出了各种的组件化方案,我也看了很多相关文章。但是学习新东西看的再多,不如动手做一次,先不考虑复杂的东西,先动手做个简单的Demo更有助于理解组件化的思想。废话不多说,直接动手开码。
Android原生已经支持AndroidManifest去管理App跳转,为什么要有路由库,这可能是大部分人接触到Android各种Router库不太明白的地方,这里我讲一下我的理解
最近关于热修复崩溃在Android P 版本的内容持续增高,也许这个commit可以帮到你.
Android Studio 3之前,需要编写Android.mk和Application.mk文件。
写在前面 目前国内对Android领域的探索已经越来越深,不少技术领域如插件化、热修复、构建系统等都对Gradle有迫切的需求,不懂Gradle将无法完成上述事情。所以Gradle必须要学习。 Gradle 里的几乎任何东西都是基于这两个基础概念: task project 掌握了这两个,你就掌握了一大半的 Gradle 知识了。 首先讲 Task 字面理解为任务,Gradle 中所有执行的事件都是借由 Task 执行的。 例如我们新建一个 Android 工程,在其根目录中输入: gradle tasks
片段是一个应用程序的用户界面或行为,可以放在一个Activity。与碎片的交互是通过FragmentManager,可以通过Activity.getFragmentManager()和 获得 Fragment.getFragmentManager()。
Instant Run已经出来3年了,为什么现在会想写这篇文章。从Instant Run 发布就已经有文章做了详细的介绍,但主要分为两类:一类是讲其主要实现原理或是讲 Instant Run2.0中的 Application 和 ClassLoader 的替换,另一类就是两者结合。但是在Instant Run2.0 以后包括(2.3和3.0)虽然主要的实现原理没做改变,但都不再有 Application 和 ClassLoader 的替换了。
这段时间把一个App工程从原来的ADT环境(即Eclipse)迁移到Android Studio环境,发现并处理了一系列迁移问题,兹记录如下。把ADT工程迁移到AS,通常的做法是打开Android Studio,依次选择菜单“File”——“New”——“Import Module”,然后点击窗口右边的浏览按钮选择ADT工程的路径,点击“Finish”按钮,等待Android Studio识别并导入ADT工程。一般导入成功的话,接下来便能按照正常操作步骤来编译和运行了;可是老大难的旧工程往往会产生这样那样的错误,需要逐一进行格式转换或者配置调整工作。
前言 不知你是否遇到这样的情况?千辛万苦上开发了一个版本,好不容易上线了,突然发现了一个严重bug需要进行紧急修复,怎么办?难道又要重新打包App、测试,发布新个版本?就为了修改一两行的代码? 莫慌,这种问题其实可以分分钟解决。如果你学会了这项黑科技——热修复。 在用户使用App的时候,不知不觉,这个Bug就被修复了。 莫慌 热修复:热修复(也称热补丁、热修复补丁,英语:hotfix)是一种包含信息的独立的累积更新包,通常表现为一个或多个文件。这被用来解决软件产品的问题(例如一个程序错误)。——维基
类加载方案需要重启App后让ClassLoader重新加载新的类,为什么需要重启,因为类是无法卸载的,要想重新加载类就需要重启App,因此采用类加载方案的热修复框架无法及时生效。
Plaid 是一款呈现 Material Design 风格和丰富交互界面的有趣应用。最近这款应用通过现今的 Android 应用开发技术实现了一番重构。获取更多应用信息和重新设计的视觉效果,可以查阅 Restitching Plaid。
0x1、Android Support Library的由来 Android 3.0 (API 11) 为了更好地兼容平板,加入了Fragment,而想让低版本的系统也能用上,需要做一个 向下兼容,于是Android团队推出了Android Support Library。
原文地址:Migrating MediaStyle notifications to support Android O 原文作者:Nazmul Idris (Naz) 译文出自:掘金翻译计划 本文永
最近公司项目中需要集成热更新功能,由于刚开始接入的时候踩了很多坑,所以现在记录一下集成的过程.
Crash率是衡量一个App好坏的重要指标之一,如果你忽略了它的存在,它就会愈演愈烈,最后造成大量用户的流失,进而给公司带来无法估量的损失。本文讲述美团外卖Android客户端团队在将App的Crash率从千分之三做到万分之二过程中所做的大量实践工作,抛砖引玉,希望能够为其他团队提供一些经验和启发。
Android 系统预置 APP 是做 Framework 应用开发经常会遇到的工作,预置 APP 分为两种,一种是直接预置 APK,一种是预置带有源码的 APP。
Android库在结构上与Android应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和Android清单。不过,Android库将编译到可以用作Android应用模块依赖项的Android归档(AAR)文件,而不是在设备上运行的APK。与JAR文件不同,AAR文件可以包含Android资源和一个清单文件,这样除了Java类与方法外,还可以捆绑布局和可绘制对象等共享资源。
Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的。当我们创建一个Android项目时会包含两个Android build.gradle配置详解文件,如下图:
1.manifest中注册的都不能混淆,如果混淆了就找不到了,所以一下类不能被混淆,一般保持原样。
Android SDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。 ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名。最后,预校验的Java6或针对Java MicroEdition的所述处理后的码。
前言:好多 Android 开发者都在说Android Studio太坑了,老是出错,导致开发进度变慢,出错了又不知道怎么办,网上去查各种解决方案五花八门,有些可以解决问题,有些就是转来转去的写的很粗糙,让人看了云里雾里。我就很不爽这种做法,要么就不写,要写就写出让人一目了然的东西,所以在这里我就详细了总结了一下Android Studio2.X的那些坑。
上一篇文章说道tinker的热更新,可是少了点补丁包的管理,这一篇文章介绍的bugly就是增强版的,更加方便你集成tinker和包括了补丁包的后台管理。 为什么使用 Bugly 热更新?
当前市面的热补丁方案有很多,其中比较出名的有阿里的 AndFix、美团的 Robust 以及 QZone 的超级补丁方案。但它们都存在无法解决的问题,这也是正是最后使用 Tinker 的原因。先看一张图对比:
在 【Android 热修复】热修复原理 ( 类加载机制 | PathClassLoader 加载 Dex 机制 | PathDexList 查找 Class 机制 | 类查找的顺序机制 )三、 类查找的顺序机制 博客章节有讲解到 , Android 类加载时 , 必须进行分包操作 , 必须有
作者 | Michael Redlich 译者 | 张卫滨 策划 | 丁晓昀 本期的 Java 新闻包括 JDK 19、OpenJDK、Jakarta EE 10、Spring 里程碑和小版本升级以及 CVE、Payara 平台发布、Quarkus 2.9.1.Final、Micronaut 3.4.4、WildFly 16.1.1、Hibernate ORM 5.6.9.Final、Hibernate Reactive 11.5.Final、JDKMon 17.0.25、JobRunr 5.1.
Android 3.0 (API 11) 为了更好地兼容平板,加入了Fragment,而想让低版本的系统也能用上,需要做一个向下兼容,于是Android团队推出了Android Support Library。
| 导语 Fragment作为Android最基本,最重要的基础概念之一,在开发中经常会和他打交道。本文从为什么出现Fragment开始,介绍了Fragment相关的方方面面,包括Fragment的基本定义及使用、回退栈的内部实现、Fragment通信、DialogFragment、ViewPager+Fragment的使用、嵌套Fragment、懒加载等。 下文中FragmentDemo的源代码地址:https://github.com/xiazdong/FragmentDemo 基本概念 Fragmen
本篇文章:自己在混淆的时候整理出比较全面的混淆方法,比较实用,自己走过的坑,淌出来的路。请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地,打包完成以后而又不不可以了,导致了许多困惑,本片文章来问大家解决困惑,希望对大家有帮助。
在安卓的发展历程中,由于设备碎片化的原故,谷歌在app中图标的适配上做出一步又一步的改进,大体有这么几个阶段:
领取专属 10元无门槛券
手把手带您无忧上云