魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
道子
向阳而生
Android

Android中Instant Run工作原理及用法

1. 前言 Instant Run,它是Android Studio2.0以后新增的一个运行机制,能够显著减少你第二次及以后的构建和部署时间。简单通俗的解释就是,当你在Android Studio中改了你的代码,Instant Run可以很快的让你看到你修改的效果。而在没有Instant Run之前,你的一个小小的修改,都肯能需要几十秒甚至更长的等待才能看到修改后的效果。 其实,Instant Run这个技术是基于Transfrom-API技术。Android Gradle 工具在 1.5.0 版本后提供了 Tra…

2018年7月16日 0条评论 7060点热度 0人点赞 daozi 阅读全文
Android

Android动态编译技术:Plugin Transform Javassist

1. 前言 动态编译技术在开源框架中的应用非常的广泛,现在市面上的插件化框架,热修复框架几乎都使用了动态编译技术,原理几乎都是在编译期间动态的在class文件中注入代码或者或修改。那就让我们来了解一下这高大上的技术吧。 2. 揭开动态编译的神秘面纱 揭开动态编译的神秘面纱只需三步: 自定义Gradle插件 介绍Transform API 及 实现步骤 实现在编译的过程中操作.class文件,对原有代码或者说逻辑进 行一些处理,修改原class代码和动态生成java类 3. 案例demo 插件目录结构: 3.1 自定…

2018年7月16日 0条评论 9689点热度 0人点赞 daozi 阅读全文
Android

在AndroidStudio中实现Gradle自定义插件

1.  前言 Android Studio 项目是使用 Gradle 构建的,构建工具 Gradle 可以看做是一个脚本,包含一系列的Task,依次执行这些 Task 后,项目就打包成功了。 而 Task 有一个重要的概念,那就是 inputs 和outputs 。 Task 通过 inputs 拿到一些东西,处理完毕之后就输出 outputs ,而下一个 Task 的 inputs 则是上一个 Task 的outputs。 例如:一个 Task 的作用是将 java 编译成 class,这个 Task 的 inp…

2018年7月15日 0条评论 6404点热度 0人点赞 daozi 阅读全文
Android

Android的热更新方案之Sophix非侵入式热修复方案

1. 简述 热修复技术可谓是百花齐放,微信的Tinker、QQ空间的Nuwa、饿了么的Amigo、美团的Robust等等,各个热修复方案争相发布,都声称自己可以做到全方位全功能的热修复。不过他们各自有自身的局限性,或者不够稳定,或者补丁过大,或者效率低下,或者使用起来过于繁琐,大部分技术上看起来似乎可行,但实际体验并不好。 终于在2017年6月11日,手淘技术团队联合阿里云正式发布了新一代Android移动热修复方案——Sophix。Sophix的核心设计理念,就是非侵入性。Sophix这个名字,是来源于Sophi…

2018年7月10日 0条评论 6185点热度 0人点赞 daozi 阅读全文
Android

Android中的线程和线程池

前言 线程在Android中是一个很重要的概念,从用途上来说,线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。由于Android的特性,如果在主线程中执行耗时操作那么就会导致程序无法及时地响应,因此耗时操作必须放在子线程中去执行。 在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都会有相应的开销。档系统中存在大量的线程时,系统会通过时间片轮转的方式调度每个线程,因此线程不可能做到绝对的并行,除非线程数量…

2018年7月5日 0条评论 5208点热度 0人点赞 daozi 阅读全文
Git

Git之多账号配置

背景介绍 为什么要配置SSH? 作为程序猿,Git 应该是目前主流的代码管理工具,而Git在提交时有两种方式:Https 和 SH 两种验证方式。 Https : 输入账号密码,每次都要输入(麻烦,程序猿从来不做重复工作) SSH : 提交代码时通过GIT服务器的公钥与本地私钥做验证。(配置一次,无须每次输入账号密码) SSH(简单原理说明) 生成一对公钥-私钥,公钥添加到Git服务器,私钥放在本地。提交代码时通过GIT服务器的公钥与本地私钥做验证,如果验证通过则提交成功,简单说就是把账号和密码托管给SSH, 账号…

2018年7月4日 0条评论 4630点热度 0人点赞 daozi 阅读全文
Android

搞定Java并发-synchronized原理

前言 线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个高尚的名称叫互斥锁,即能达到互斥访问目的的锁,也就是说当一个共享数据被当前正在访问的线程加上互斥锁后,在同一个时刻,其他线程只能处于等待的状态,直到当前线程处理完毕释放该锁。在 Ja…

2018年7月2日 0条评论 4101点热度 0人点赞 daozi 阅读全文
Android

Android中CrashHandler的实现

前言 相信大家在调试android应用程序包的时候经常会遇到“应用程序没有响应”这种情况,也就是当我们的应用程序出现crash情况,这种提示方式会给用户带来很不好的体验。而且,通常crash导致的退出,因为没有走正常的退出流程,会导致数据没保存、线程没有杀死、缓存没有清空等问题。这个时候就需要一个全局CrashHandler。 这个时候做过项目同学就知道有优秀的第三方SDK,譬如国内有:Umeng统计,腾讯的Bugly,国外有:fabric的Crashlytics  等吧,都不一一细说了,使用起来都很方便,接入也很…

2018年6月29日 0条评论 4410点热度 0人点赞 daozi 阅读全文
Android

Android NDK开发-JNI基础篇

1. NDK NDK是Google开发的一套开发和编译工具集,可以生成动态链接库,主要用于Android的JNI开发。NDK 可以自动地将 so 和 Java 应用一起打包,极大地减轻了开发人员的打包工作。 NDK 提供了一份稳定、功能有限的 API 头文件声明,Google 明确声明该 API 是稳定的,在后续所有版本中都稳定支持当前发布的 API。从该版本的 NDK 中看出,这些 API 支持的功能非常有限,包含有:C 标准库(libc)、标准数学库(libm)、压缩库(libz)、Log 库(liblog)。…

2018年6月27日 0条评论 4280点热度 0人点赞 daozi 阅读全文
Android

用apksigner进行批量签名的脚本

前言 对APK进行签名,正常情况下使用Gradle进行签名或者第三方开源签名工具或插件进行签名及ADB命名,这样需要给测试或运维人员进行讲解,解释半天他们会问你有批量工具吗?那作为程序员得你,只能说有。那我给大家一个用python写的基于apksigner进行批量签名的脚本,双击就OK了。 1. V1&V2签名 在给大家放出大招之前,先卖个萌,来一起了解一下Android的签名。在Android 7.0以下版本,一直使用的是Oracle提供的V1 scheme (JAR signing)签名方案。自从9行代…

2018年6月12日 0条评论 6824点热度 0人点赞 daozi 阅读全文
Android

理解Android的Window和WindowManager

简述 在Android系统中,PopupWindow、Dialog、Activity、Toast等都有窗口的概念,但又各有不同,Android将窗口大致分为三类:应用窗口、子窗口、系统窗口。其中,Activity与Dialog属于应用窗口、PopupWindow属于子窗口,必须依附到其他非子窗口才能存在,而Toast属于系统窗口,Dialog可能比较特殊,从表现上来说偏向于子窗口,必须依附Activity才能存在,但是从性质上来说,仍然是应用窗口,有自己的WindowToken。所有的视图都是通过Window来呈现…

2018年6月9日 0条评论 5539点热度 0人点赞 daozi 阅读全文
Android

Android的ClassLoader

1. 前言 ClassLoader翻译过来就是类加载器。 阅读过JVM和Android的Dalvik与ART我们知道,Dalvik虚拟机如同其他Java虚拟机一样,在运行程序时首先需要将对应的类加载到内存中。而在Java标准的虚拟机中,类加载可以从class文件中读取,也可以是其他形式的二进制流。因此,我们常常利用这一点,在程序运行时手动加载Class,从而达到代码动态加载执行的目的。 只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源码文件会生…

2018年6月3日 0条评论 4275点热度 0人点赞 daozi 阅读全文
Android

JVM和Android的Dalvik与ART

1. JVM(Java虚拟机) JVM是Java编程语言的核心。当我们运行一个程序时,JVM负责将字节码转换为特定机器代码。JVM也是平台特定的,并提供核心的Java方法,例如内存管理、垃圾回收和安全机制等。JVM 是可定制化的,我们可以通过Java 选项(java options)定制它,比如配置JVM 内存的上下界。JVM之所以被称为虚拟的是因为它提供了一个不依赖于底层操作系统和机器硬件的接口。这种独立于硬件和操作系统的特性正是Java程序可以一次编写多处执行的原因。 JVM的结构体系 2. Dalvik 1)…

2018年5月28日 0条评论 5987点热度 0人点赞 daozi 阅读全文
Android

Android的ContentProvider

 一、概述  ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法。 ContentProvider可以指定需要共享的数据,而其他应用程序则可以在不知道数据来源、路径的情况下,对共享数据进行增删改查等操作。 在Android系统中,许多Android系统内置的数据也是通过ContentProvider提供给用户使用,例如通讯录、音视频文件和图像文件等  二、使用关系  三、类关系 CPP与CPN是一对Binder通信的C/S两端; ACR(Applicati…

2018年5月25日 0条评论 7298点热度 0人点赞 daozi 阅读全文
Android

Error:Resource shrinker cannot be used for libraries.

Error:Resource cannot be used for libraries. 意思是“library中不要使用移除无用的资源文件字段” 原因是library中使用了混淆,并移除了无用的资源文件,所以解决办法就是把该library中的shrinkResources字段移除就可以了。 大家可以试试,如果有其他解释及方案,请告知。    

2018年5月20日 0条评论 10174点热度 0人点赞 daozi 阅读全文
12345…11
搜索
联系方式

QQ群:179730949
QQ群:114559024
欢迎您加入Android大家庭
本人QQ:136049925

赐我一丝安慰
给我一点鼓励

最新 热点 随机
最新 热点 随机
解决Android 7及以上Notification.contentView为null问题 彻底解决git命令免密问题 隐藏ScrollView、RecyclerView等滚动条和去掉滑动到边界阴影的方案 Android Studio 3.4 编译Release版本广点通所有广告不显示 Android中使用System的getProperty()方法及获取Android内核版本信息 弄清楚INSTALL FAILED CONFLICTING PROVIDER问题
Android NDK开发-JNI基础篇 Android面试题12–对Context的理解、它的作用域、注意什么 Error:Resource shrinker cannot be used for libraries. Android中怎么判断是Home键或非正常退出(进入后台) Android 与 Unity 的交互 Android为什么要序列化
最近评论
宝宝 发布于 7 年前(02月27日) 哈哈哈哈
GPU Mining 发布于 7 年前(02月19日) I am just starting to learn about all of this. Tha...
Timothynix 发布于 7 年前(02月08日) Your place is valueble for me. Thanks!… http:...
趣头条 发布于 7 年前(02月08日) 鸟儿叫,花儿笑,一年一季春来到!
xing1982 发布于 7 年前(02月04日) 不错不错!内容感觉好极了!

COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备15000477号