<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[missingcall]]></title><description><![CDATA[,]]></description><link>https://blog.youkuaiyun.com/github_36617621</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_36617621]]></copyright><item><title><![CDATA[使用apksigner对应用进行签名(oppo市场需要打空白包)]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/125046919</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/125046919</guid><author>github_36617621</author><pubDate>Mon, 30 May 2022 15:08:55 +0800</pubDate><description><![CDATA[1.配置环境变量

2.签名指令
apksigner sign --ks D:\download\yinghua.jks D:\download\OppoSignVerify.apk
3.校验结果
apksigner verify -v --print-certs D:\download\OppoSignVerify.apk

]]></description><category></category></item><item><title><![CDATA[Android实现自动化打包：git+GitLab+蒲公英+钉钉机器人]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/123891262</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/123891262</guid><author>github_36617621</author><pubDate>Wed, 06 Apr 2022 09:08:43 +0800</pubDate><description><![CDATA[兜兜转转再次回到开发岗，新入职的公司用的自动打包，觉得挺神奇的，想自己试试怎么弄的。顺便记录一下
1. 配置gitlab
1.1 新建测试项目
第一步可以直接在gitlab上新建一个android测试项目，项目根目录会有.gitlab-ci.yml文件，这个就是CI持续集成的。一会儿我们再来配置，测试项目结构如下：

1.2 gitlab-runner
这一步需要下载runner，启动runner，最后注册runner，有不懂的可以看命令行，很简单的


runner启动后可以在gitlab的setting]]></description><category></category></item><item><title><![CDATA[依赖注入和Dagger2]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961579</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961579</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:19:35 +0800</pubDate><description><![CDATA[1.依赖如果在 Class A 中，有 Class B 的实例，则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到一个 Father 对象，我们就说类 Human 对类 Father 有一个依赖。public class Human {
    ...
    Father father;
    ...
    public Human() {
        f]]></description><category></category></item><item><title><![CDATA[图解HashMap]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961570</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961570</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:19:14 +0800</pubDate><description><![CDATA[概念:其实HashMap也是用到这种思路，HashMap作为一种数据结构，像数组和链表一样用于常规的增删改查，在存数据的时候(put)并不是随便乱放，而是会先做一次类似“分类”的操作再存储，一旦“分类”存储之后，下次取(get)的时候就可以大大缩短查找的时间。我们知道数组在执行查、改的效率很高，而增、删(不是尾部)的效率低，链表相反，HashMap则是把这两者结合起来，看下HashMap的数据结构从]]></description><category></category></item><item><title><![CDATA[ViewPager(分发+无限滑动)]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961565</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961565</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:18:53 +0800</pubDate><description><![CDATA[viewpager1.父布局的touch事件分发至viewPager(否则只能滑动中间的一个view对象)//1.设置幕后item的缓存数目
viewPager.setOffscreenPageLimit(2);
//2.设置页与页之间的间距
viewPager.setPageMargin(10);
//3.将父布局的touch事件分发至viewPager,否则只能滑动中间的一个view对象
con]]></description><category></category></item><item><title><![CDATA[DecimalFormat类使用(快速Format几位小数)]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961550</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961550</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:18:09 +0800</pubDate><description><![CDATA[模式和符号// 0  一个数字
// # 一个数字,不包括
// . 小数的分隔符的占位符
// , 分组分隔符的占位符
// ; 分隔格式
// - 缺省负数前缀
// % 乘以100 和作为百分比显示
// ? 乘以1000和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替.如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符
// X 前缀或后缀中使用的任何其他字符,用来]]></description><category></category></item><item><title><![CDATA[ScheduledExecutorService与Timer]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961539</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961539</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:17:23 +0800</pubDate><description><![CDATA[#一：简单说明ScheduleExecutorService接口中有四个重要的方法，其中scheduleAtFixedRate和scheduleWithFixedDelay在实现定时程序时比较方便。下面是该接口的原型定义java.util.concurrent.ScheduleExecutorService extends ExecutorService extends Executor接口sche]]></description><category></category></item><item><title><![CDATA[获取最上方应用包名]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961528</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961528</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:16:44 +0800</pubDate><description><![CDATA[/**
     * 获取在最上方的应用包名
     *
     * @param context
     * @return
     */
    public static String getPackageNameOnTop(Context context) {
        Log.i(TAG, "getPackageName()");
        String result;]]></description><category></category></item><item><title><![CDATA[启动第三方应用详解]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78961514</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78961514</guid><author>github_36617621</author><pubDate>Wed, 03 Jan 2018 15:15:29 +0800</pubDate><description><![CDATA[启动第三方应用详解http://blog.youkuaiyun.com/TTKatrina/article/details/50755024]]></description><category></category></item><item><title><![CDATA[String.format()方法]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/78643277</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/78643277</guid><author>github_36617621</author><pubDate>Mon, 27 Nov 2017 11:30:07 +0800</pubDate><description><![CDATA[一直对String.format不了解,而且也记不住那么多,记录一下以后查起来方便  原贴地址:http://blog.youkuaiyun.com/lonely_fireworks/article/details/7962171/重载方法format(String format, Object… args) 新字符串使用本地语言环境，制定字符串格式和参数生成格式化的新字符串。 
format(Locale l]]></description><category></category></item><item><title><![CDATA[android 6.0 动态权限]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77367417</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77367417</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 11:16:00 +0800</pubDate><description><![CDATA[从简书上看到的,自己写了一下学习下,原链接在最后
  作者：李晨玮
  
  链接：http://www.jianshu.com/p/a37f4827079a
  
  來源：简书
  
  著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
权限的分组在Android6.0（M）之后，对权限进行了分类，大致有这三种：
普通权限
危险权限
特殊权限
普通权限也就是正常权限，是对手机]]></description><category></category></item><item><title><![CDATA[View学习(三)--颜色]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77367354</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77367354</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 11:13:01 +0800</pubDate><description><![CDATA[颜色
  简要介绍安卓中的颜色相关内容，包括颜色的定义，创建颜色的几种方式，以及颜色的混合模式等。
一.简单介绍颜色安卓支持的颜色模式：颜色模式    备注
ARGB8888    四通道高精度(32位)
ARGB4444    四通道低精度(16位)
RGB565  屏幕默认模式(16位)
Alpha8  仅有透明通道(8位)  PS：其中字母表示通道类型，数值表示该类型用多少位二进制来描述。如A]]></description><category></category></item><item><title><![CDATA[View学习(二)--角度与弧度]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77367245</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77367245</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 11:07:57 +0800</pubDate><description><![CDATA[GcsSloop安卓中角度(angle)与弧度(radian)的有关问题。一.前言1.为什么讲这个？在我们自定义View，尤其是制作一些复杂炫酷的效果的时候，实际上是将一些简单的东西通过数学上精密的计算组合到一起形成的效果。这其中可能会涉及到画布的相关操作(旋转)，以及一些正余弦函数的计算等，这些内容就会用到一些角度、弧度相关的知识。2.为什么对角的描述存在角度与弧度两种单位？简单来说就是为了方便，]]></description><category></category></item><item><title><![CDATA[View学习(一)--坐标系]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77367047</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77367047</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 10:57:30 +0800</pubDate><description><![CDATA[https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Base/%5B01%5DCoordinateSystem.md安卓中的坐标系一.屏幕坐标系和数学坐标系的区别由于移动设备一般定义屏幕左上角为坐标原点，向右为x轴增大方向，向下为y轴增大方向， 所以在手机屏幕上的坐标系与数学中常见的坐标系是稍微有点差别的，详情如下：（PS：其]]></description><category></category></item><item><title><![CDATA[android RXJava2.0(二)--线程控制]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77366987</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77366987</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 10:55:26 +0800</pubDate><description><![CDATA[正题还是以之前的例子, 两根水管:正常情况下, 上游和下游是工作在同一个线程中的, 也就是说上游在哪个线程发事件, 下游就在哪个线程接收事件.怎么去理解呢, 以Android为例, 一个Activity的所有动作默认都是在主线程中运行的, 比如我们在onCreate中打出当前线程的名字:@Override
    protected void onCreate(Bundle savedInstanc]]></description><category></category></item><item><title><![CDATA[android 签名打包时去掉log日志打印(仅在debug包中打印log信息)]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77366955</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77366955</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 10:54:49 +0800</pubDate><description><![CDATA[偷的,先上链接  Android：签名打包后关闭Log打印第一步:自定义buildconfig标明log的打印与关闭在app->buile.gradle中的buildTypes中添加下面字段：buildTypes {
        release {
            // 使用签名打包时不显示Log
            buildConfigField "boolean", "LOG_]]></description><category></category></item><item><title><![CDATA[android图形动画]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77366936</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77366936</guid><author>github_36617621</author><pubDate>Fri, 18 Aug 2017 10:53:47 +0800</pubDate><description><![CDATA[学习View的时候看到的,记录下Android图形动画作者  朱才：http://cnblogs.com/zhucai/朱才  微博：http://weibo.com/zhucai2017/8/17 14:26:19动画基础本质每帧绘制不同的内容。基本过程开始动画后，调用View的invalidate触发重绘。重绘后检查动画是否停止，若未停止则继续调用invalidate触发下一帧（下一次重绘），直]]></description><category></category></item><item><title><![CDATA[android RXJava2.0(一)]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77113175</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77113175</guid><author>github_36617621</author><pubDate>Sat, 12 Aug 2017 11:24:00 +0800</pubDate><description><![CDATA[原链接作者：Season_zlc 
链接：http://www.jianshu.com/p/464fa025229e 
來源：简书 
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。  看了之后只是学习记录而已要在Android中使用RxJava2, 先添加Gradle配置:compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile ']]></description><category></category></item><item><title><![CDATA[android ApplicationId 与 PackageName]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77097032</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77097032</guid><author>github_36617621</author><pubDate>Fri, 11 Aug 2017 14:18:32 +0800</pubDate><description><![CDATA[Android 应用都有自己的包名。包名是设备上每个应用程序的唯一标识，同样也是 Google Play 商店里的唯一标识。就是说，假如你已经使用某个包名来发布应用，就不能再去改变应用的包名，因为这样做会导致你的应用被视为一个全新的应用，你现有的用户也不会收到应用的更新通知。旧版的 Android Gralde 构建系统中，应用的包名由 manifest 中根节点的 package 属性决定：And]]></description><category></category></item><item><title><![CDATA[android RXJava入门(Rxjava1.0)]]></title><link>https://blog.youkuaiyun.com/github_36617621/article/details/77096878</link><guid>https://blog.youkuaiyun.com/github_36617621/article/details/77096878</guid><author>github_36617621</author><pubDate>Fri, 11 Aug 2017 14:07:53 +0800</pubDate><description><![CDATA[学习记录,全是抄的,看完之后仅做个记录以后好找而已关于作者朱凯（扔物线），Flipboard 北京 Android 工程师。微博：扔物线GitHub：rengwuxian学习地址http://gank.io/post/560e15be2dca930e00da1083#toc_1https://mp.weixin.qq.com/s__biz=MzIwMzYwMTk1NA==&mid=224748424]]></description><category></category></item></channel></rss>