APP更新相关
文章平均质量分 52
马占柱
Android行业多年软件开发经验,从事多年移动App开发,涉及医疗健康、商城、聊天、代驾打车、特种设备防护、公安边检查验领域;目前从事汽车车载系统开发工作。
展开
-
什么是模块化,组件化, 插件化?
单工程模式移动开发诞生,我们开发移动项目,我相信大多用的是单工程单任务的开发模式,二话不说,直接就开始写起,是不是这样呢? new Project -> 分包 -> 写起。我相信都经历过,也写的比较爽,为什么呢? 这种模式不涉及乱七八糟的处理方式, 上手快,开发快,足够敏捷。那么原因是什么呢?Mobile Project 刚起步,项目都偏小,一些附加业务还没绑到App上。模块化Android Studio出来了,多出来了一个新的概念, Project, Module… 模块;当时以包原创 2020-11-25 09:47:06 · 570 阅读 · 1 评论 -
Android Studio快速获得debug、release签名的SHA1
方法:1、打开AndroidStudio右侧的Gradle,逐级找到signingReport。2、双击----------------------- 接着内心会喊“666”原创 2020-10-27 09:41:29 · 541 阅读 · 0 评论 -
android 各个存储、储存路径及获取方法总结
各个路径最长用到的就这三个位置/data/data/包名/ /sdcard/Android/data/包名/ /sdcard/xxx前两个是应用内部存储, 会随着app的卸载而自动删除, sdcard中其他的文件夹不会自动删除, 除非用户手动删除, 否则会一直存在, 换句话说就是垃圾.Google官方建议把数据存储在/sdcard/Android/data/包名/下.路径获取方法前两个应用内部存储通过 Context 来获取, 第三个作为外部存储是通过 Environment ...原创 2020-09-11 13:25:31 · 5965 阅读 · 0 评论 -
加载等待展示【Loading】
package com.zhcs.gis.app.modulecore.core.component.tool;import android.app.Activity;import android.view.LayoutInflater;import android.view.View;import com.zhcs.gis.app.modulecore.R;import java.lang.ref.WeakReference;import androidx.appcompat.app.原创 2020-08-24 13:42:55 · 364 阅读 · 0 评论 -
Android代码混淆
代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。为什么要加代码混淆--------------------不想开源应用,为了加大反编译的成本,但是并不能彻底防止反编译开启混淆 通常我们需要找到项目路径下app目录下的build.gradle文件 找到minifyEnabled这个配置,然后设置为true即可. 如下: release{ minifyEna..转载 2020-06-01 13:14:18 · 988 阅读 · 0 评论 -
android热修复方案
热补丁方案有很多,其中比较出名的有腾讯Tinker、阿里的AndFix、美团的Robust以及QZone的超级补丁方案。他们的优劣如下:一、Tinker 热修复Tinker通过 Dexdiff 算法将原apk和修复后的apk中的dex文件进行对比,生成差分包,运行时将差分包中的dex和原包中的dex进行合并,从而加载差分包中修复好的类。因为是运行时加载的dex文件,所以修复完成后不能即...转载 2020-04-16 10:42:58 · 461 阅读 · 0 评论 -
DownloadUtils【文件下载工具类】
/** * 下载的工具类 * Created by zhuzi on 2019/12/04. */public class DownloadUtils { private static final String TAG = "DownloadUtils"; private DownloadManager mDownloadManager; private sta...原创 2019-12-04 13:22:49 · 1843 阅读 · 0 评论 -
viewpager 工具类,快速实现轮播图,app引导页,tab标签。
你是否有遇到这样的问题,每次开发一个新的项目,在 viewpager 这一块上,总是在做重复的东西,比如app引导页,轮播图,viewpager+fragment 的 tab 指示器等等,这些虽然简单,但却是每个app都要的,而且很耗时,有没有每次在写这个,都很无语的感觉呢?基于上面这种情况,ViewPagerHelper 就诞生了。ViewPagerHelper 是一个能快速帮你的完成 a...转载 2018-08-02 10:46:51 · 691 阅读 · 0 评论 -
Android 8.0 解决不能自动安装APK问题
Android8.0之前未知应用安装权限默认开启,如下图所示 8.0以下手机未知应用安装权限.pngAndroid8.0之后未知应用安装权限默认关闭,且权限入口隐藏。如何开启未知应用安装权限的入口,并设置允许安装?在清单文件中添加权限<uses-permission android:name="android.permission.REQUEST_IN...转载 2018-08-02 10:50:46 · 1935 阅读 · 0 评论 -
Android Lottie动画的简单使用
简介在Android中做动画效果无非是以下几种方法:普通动画 帧动画 属性动画 通过改变LayoutParams布局参数来实现动画现如今在Github上有一个比较火的动画库Lottie,Github上关于Lottie库介绍大概是这样的: Lottie是一个为Android和iOS设备提供的一个开源框架,它能够解析通过Adobe After Effects 软件做出来的动画,动画文...转载 2018-08-24 13:22:40 · 445 阅读 · 0 评论 -
Android动态获取当前手机IP地址
public static String getIPAddress(Context context) { NetworkInfo info = ((ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();...转载 2018-08-21 18:56:15 · 564 阅读 · 0 评论 -
你的 APP 为何启动那么慢?
App启动方式冷启动(Cold start)冷启动是指APP在手机启动后第一次运行,或者APP进程被kill掉后在再次启动。可见冷启动的必要条件是该APP进程不存在,这就意味着系统需要创建进程,APP需要初始化。在这三种启动方式中,冷启动耗时最长,对于冷启动的优化也是最具挑战的。因此本文重点谈论的是对冷启动相关的优化。温启动(Warm start)App进程存在,当时Activ...转载 2018-09-26 09:59:41 · 592 阅读 · 0 评论 -
Android Studio 打包 release 版本后无法安装的问题
问题描述:今天给用studio打包安装应用的时候碰到一个怪事:打正式的安装包都是安装在手机上面的,唯独华为P9不行,就是安装不上, 一开始我以为是只是这个手机的问题呢?对吧这没有毛病,其他的测试机都可以,只是这个不行!一安装提示安装失败,安装就直接一个大红叉冒出来,那指定是你这个手机的问题,但是作为有经验的开发人员,还是慢慢的思考一下吧,为啥就不行呢~~~男人不能说不行啊!!!果断开始各种搜索...原创 2018-10-18 13:51:13 · 1638 阅读 · 0 评论 -
第三方免费加固对比
第三方免费加固功能概述及其使用1. 阿里聚安全 链接:http://jaq.alibaba.com/上传应用 提供安全扫描(漏洞扫描、恶意代码扫描、仿冒应用扫描) 可以从结果知道漏洞总数,如果是认证过的开发者,可以直接得知漏洞的具体位置。其中还有部分漏洞需要付费扫描。 然后我们可以进行应用加固,其中分快速加固和多渠道加固,可以按需选择 加固包下载(应用需要重新签名)2. 腾讯...转载 2018-10-25 10:24:44 · 3846 阅读 · 0 评论 -
Android中跳转到系统一些设置界面setting的方法
1.跳转到系统的辅助功能界面Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent);2. 跳转到添加帐户界面Intent intent = new Intent(Settings.ACTION_ADD_ACCOUNT); startActivity(i...原创 2018-11-13 13:45:49 · 4794 阅读 · 3 评论 -
跳转到其他应用【打开其他应用中的activity】
ComponentName:可以启动其他应用的Activity、Service.ComponentName chatActivity =new ComponentName(param1,param2);param1:Activity、Service所在应用的包名param2:Activity、Service的包名+类名Activity:ComponentName ch...原创 2018-12-06 16:13:53 · 2071 阅读 · 0 评论 -
通知栏notification管理工具类【直接可用】
创建通知栏,适配8.0系统final String CHANNEL_ID = "channel_id"; //通道渠道idfinal String CHANEL_NAME = "吉智警务通"; //通道渠道名称NotificationChannel channel = null;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES...原创 2019-04-28 17:17:01 · 1387 阅读 · 0 评论 -
透明Activity解决方案
采用透明主题的Activity一定要继承Activity,不然会崩溃。我就是最开始就忘了这个了,然后导致崩溃,我还想了半天,继承我自己写的父类,哎。。。一着急啥都忘了。一般会有两种方式实现第一种是直接粗暴的在你的AndroidManifest里的Activity标签里配置透明主题: android:theme=”@android:style/Theme.Translucent...原创 2019-04-25 11:29:42 · 6449 阅读 · 0 评论 -
任何一个APP开发,都可以用到的工具类!ApiUtils
/** * Created by 马占柱 on 2018/07/31. */public class ApiUtils { private final int PHONE = 0;//手机号验证 private final int HANZI = 1;//中文、数字或字母 public static String title = "title"; publ...原创 2018-07-31 16:06:16 · 1253 阅读 · 0 评论 -
彻底搞懂Android文件存储---内部存储,外部存储以及各种存储路径解惑
前言:对于任何一个应用来说,无论是PC端应用还是Android应用,存储肯定是必不可少的。对于很多做Android开发的同学来说,可能认为文件存储很简单,调用一些诸如getFilesDir,getExternalStorageDirectory方法行了,但是虽然说它们会调用相应的方法来实现简单的数据存储。但是他们未必就搞懂了他的数据到底存在了哪里,以及他的数据是否存对了地方,或者是否做好了版本...转载 2018-08-03 16:35:46 · 535 阅读 · 0 评论 -
Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~
首先按照四个部分来查询,分别如下: 一. lib和libs是否一样? 二. .so库又是什么鬼? 三. .so库又该如何存放? 四. libs下armeabi等的作用是什么?查询ING一. lib和libs是否一样? 放在lib中的是被reference的,放在libs中的是被include的。 放在libs中的文件会自动被Eclipse所include。所以不要把API放到libs里去。 lib...原创 2018-06-21 13:51:32 · 3447 阅读 · 0 评论 -
改造PullToRefresh下拉刷新和上拉加载
改造PullToRefresh下拉刷新和上拉加载前言:本篇文章主要分为两部分,一是PullToRefresh下拉刷新和上拉加载的使用,二是PullToRefresh的改造,用自定义一个动画替换掉Loading的动画,如果动画很厉害的您,就可以自己添加喜欢的动画,做出自己想要的下拉刷新和上拉加载了。欢迎关注个人CSDN博客:Hensen_的博客:http://bl转载 2017-08-09 10:58:03 · 294 阅读 · 0 评论 -
SwipeRefreshLayout自定义刷新效果MaterialRefreshLayout
SwipeRefreshLayout实现各种超炫的下拉刷新酷,适合初学者使用,来源:https://github.com/android-cjj/Android-MaterialRefreshLayout效果图:转载 2017-08-08 16:52:39 · 636 阅读 · 0 评论 -
修改源码自定义SwipeRefreshLayout样式——高仿微信朋友圈下拉刷新
上一篇文章里把SwipeRefreshLayout的原理简单过了一下,大致了解了其工作原理,不熟悉的可以去看一下:http://blog.csdn.net/u011443509/article/details/52017355上一篇里最后提到,SwipeRefreshLayout的可定制性是比较差的,看源码会发现跟样式相关的几个类都是private的而且方法是写死的,只暴露出了几个颜色转载 2017-08-08 16:36:53 · 585 阅读 · 0 评论 -
安卓实现按返回键回到桌面以及再一次按返回键退出应用
/** * 设置返回键不关闭应用,回到桌面 * * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == Ke...原创 2017-08-07 16:56:47 · 2996 阅读 · 0 评论 -
Android 支付宝和微信支付
前言:有句话说的好:不会偷懒的程序员都不是好程序员!说起来,我也是个懒人,既然脑子不想去记忆这无聊的集成步骤,也不想下次继续翻看集成文档浪费时间,就占用一会游戏时间备份一下,方便下次直接使用,也希望给需要的人一点帮助或提示。首先要说的是:支付真的不难!既然是开放给开发者的,整的我们都看不懂,搞不明白,谁还去用!对吧!所以,希望大家开发这一块时,一定要平常心,避免像我一样,一听说要集成支付,顿时转载 2017-07-21 14:39:50 · 448 阅读 · 0 评论 -
Android 7.0申请手机动态权限
方法一://权限申请组 private static String[] PERMISSIONS_STORAGE = { Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_S...原创 2017-07-03 18:42:08 · 1663 阅读 · 0 评论 -
使用DownloadManager进行版本更新(兼容7.0)
概述DownloadManager是Android SDK中封装的下载文件类,可以很方便开发者使用下载文件。其具体看官方APIhttps://developer.android.com/reference/android/app/DownloadManager.html正文使用DownloadManager下载public class DownloadUtils原创 2017-07-03 11:46:08 · 2840 阅读 · 2 评论 -
Android 获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言等工具类【设备型号】
最近在开发中,需要用到一些系统信息,这里我把这些方法写成一个工具类方便以后复用,该工具类有以下6个功能:1、获取手机制造厂商2、获取手机型号3、获取手机系统当前使用的语言4、获取Android系统版本号5、获取手机IMEI串号6、获取手机中的语言列表SystemUtil类/** * 系统工具类 * Created by zhuwentao on 20原创 2017-06-07 17:33:32 · 1269 阅读 · 0 评论 -
Android PopupWindow怎么合理控制弹出位置(showAtLocation)
说到PopupWindow,应该都会有种熟悉的感觉,使用起来也很简单// 一个自定义的布局,作为显示的内容Context context = null; // 真实环境中要赋值int layoutId = 0; // 布局IDView contentView = LayoutInflater.from(context).inflate(layoutId, null);转载 2017-08-16 17:31:32 · 682 阅读 · 0 评论 -
Android 自定义一个可以展开显示更多的文本布局
在查阅其他博主的博文中,发现了一个比较不错的文本伸展的效果,在此借鉴学习。可以先看看到底是什么样的效果看起来很眼熟吧,很多应用中都有这样的使用场景,其实就是控制textview的maxlines属性,来做的。在这里就简单的说下定义的过程1.stretchy_text_layout.xml --这是创建一个布局,用来装裱以上展示的控件[html]原创 2017-08-10 18:28:51 · 937 阅读 · 0 评论 -
Android中的各种访问权限Permission含义
访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限获取错略位置android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米获取精确位置android.permission.ACCESS_...原创 2018-03-20 16:24:36 · 578 阅读 · 0 评论 -
Android 经典笔记之五:DownloadManager下载管理器介绍
0.简单介绍关于DownloadManager简单介绍 DownloadManager是android2.3以后,系统下载的方法,是处理长期运行的HTTP下载的系统服务。客户端可以请求的URI被下载到一个特定的目标文件。客户端将会在后台与http交互进行下载,或者在下载失败,或者连接改变,重新启动系统后重新下载。还可以进入系统的下载管理界面查看进度。DownloadManger有两个内部类原创 2017-09-20 11:42:00 · 813 阅读 · 0 评论 -
RecyclerView源码分析
简介 本文将从RecyclerView实现原理并结合源码详细分析这个强大的控件。阅读本文要求:1、熟悉android控件绘制,2、了解动画,3、了解Scroller,4、You`re a fucking kind person。本文所示源码版本是23.2.0。本文欢迎转载,不需要注明出处。基本使用 RecyclerView的基本使用并不复杂,只需要提供一个RecyclerView.原创 2017-09-20 10:56:11 · 338 阅读 · 0 评论 -
【闪屏页】启动页白屏(黑屏)VS重点解决背景图片拉伸变形问题
在做项目是,需要加一个splash,以美化应用,消除app启动等待的乏味一、使用环境 使用Android Studio activity 继承 AppCompatActivity, 实现splash功能 测试环境,没有虚拟返回按键的安卓手机和带有虚拟按键的手机,测试虚拟按键对splash的影响二、目标与一般实现 一般实现spla原创 2017-09-27 16:00:43 · 1025 阅读 · 0 评论 -
Android跳转各种系统设置界面-总结
用法用法很简单,一行代码搞定 startActivity(new Intent(Settings.ACTION_SETTINGS));但是这个参数是一直改变的.这样就可以跳转系统的各种设置界面.,该类的Api路径如图所示.API文档飞机票戳我跳转下边是整理出的对照表,涵盖了大部分界面,当然有些特殊界面是没办法打开的,例如NFC等设置界面,原创 2017-09-26 18:21:41 · 1848 阅读 · 0 评论 -
一个简洁易用的 Android Web 库
AgentWeb一个很肥肠好用的webview库文件,依赖超级简单,使用超级简单原创 2017-09-24 21:30:39 · 375 阅读 · 0 评论 -
Tinker 热修复框架 简单上手教程
导言前不久,腾讯推出了"微信小程序"这一概念,对移动原生应用的影响可谓巨大.而几乎就在同时,腾讯在GitHub上开源了第一个项目Tinker,这是一个Android平台的应用热修复框架.可以在不重新安装应用的情况下,对应用的代码/库/资源进行更新.相关信息官方也已经给出详细介绍.得到这个消息时,笔者也尝试学习它给的Sample,希望能够使用到自己的项目中去.毕竟热修补是如今原生应用的一大痛点,原创 2017-09-24 18:35:51 · 338 阅读 · 0 评论