- 博客(131)
- 收藏
- 关注
原创 iOS模拟器找不到证书?
在模拟器里面怎么都找不到刚刚安装的Charles证书。解决办法:1.把证书下载到本地(保存到桌面),使用命令安装证书image.png2.使用如下命令安装证书:xcrun simctl keychain booted add-root-cert <your_certificate>例如:xcrun simctl keychain booted add-root-cert /Users/xxx/Desktop/charles-ssl-proxying-c
2022-04-06 09:57:23
709
转载 iOS gcd线程死锁问题 案例分析i
同步异步决定是否具备开启线程的能力串行并行决定代码执行的先后顺序先看下这几个场景,每个场景中的代码执行后会打印什么,为什么?场景一:#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after.
2021-02-26 18:20:06
457
原创 使用jenkins自动化构建测试打包apk
1、下载Jenkins并安装官网下载地址:https://jenkins.io/download我们下载上图所示Window版本,下载下来是个.zip的压缩包,我们解压一下会得到一个安装文件,我们双击安装,一直Next,即可安装完成。2、Jenkins配置安装完jenkins会自动在浏览器中打开如下页面:提示说密码在C:\Program Files (x86)\Jenkins\...
2019-12-10 15:49:57
519
原创 在mac上配置Jenkins自动化打包
之前使用jenkins安装包配置过Jenkins,但是配置好之后因为使用安装包安装的jenkins是在机器上新建的账户,所以在配置证书时比较麻烦,会有权限问题,必须把证书和描述性文件拷贝到jenkins账户下才可以,最近使用brewinstall安装jenkins感觉比较方便,可以共用系统的证书和描述性文件1.安装之前先检查是否装有Jenkins依赖的java环境,Jenkins依赖的是JD...
2019-12-09 16:49:09
1364
原创 Android 动态创建渐变
Android Shape使用场景:1. 圆角实现2. 实现有边框,有填充的背景3. 实现一个渐变的颜色一般情况上面三种情况我们会选择android的shape,下面分别介绍shape的静态使用和动态使用1. shape的静态使用在drawable中创建一个xml文件,在布局文件中直接引用这个xml文件即可<?xml version="1.0" encoding="...
2019-04-25 15:13:18
870
原创 Groovy之task语法
任务入门定义任务任务属于一个Project对象,并且每个任务都可以执行task接口。定义一个新任务的最简单方式是,执行将任务名称作为其参数的任务方法:task hello其创建了任务,但当你执行时,它不会做任何事情。为了创建一个有用的任务,你需要添加一些动作。初学者通常会犯的一个错误是像下面这样创建任务:task hello{ println 'Hello , worl...
2019-03-12 16:58:42
2904
原创 如何在AndroidStudio中自定义Gradle插件(二)
上一篇文章中我们介绍了Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。有些时候,我们会有一些个性化的构建需求,比如我们引入了第三方库,或者我们想要在通用构建过程中做一些其他的事情,这时我们就要自己在系统默认构建规则上做一些修改。这时候我们就要自己向Gradle”下命令“了...
2019-03-12 16:27:04
407
原创 在AndroidStudio中自定义Gradle插件,并上传至maven?(一)
一、什么是Gradle简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建。有些同学可能会有疑问:”我用AS不记得给Gradle指定过什么构建规则呀,最后不还是能搞出来个apk。“ 实际上,ap...
2019-03-11 16:16:03
1291
原创 如何将将自己混淆的jar或者aar上传到jcenter?
此项目基于Github Novoda修改而来。 改进点:在publish内新增archivesPath参数,可将指定的jar包或者aar包放在此目录下,会指定上传此目录内的压缩包。这样我们便可以很容易上传自己生成的jar,比如混淆过的。新增依赖1.根目录下的build.gradle中加入上传开源库的依赖:classpath 'com.aaron.gradle:bintray-...
2019-02-22 18:02:18
684
转载 常用 Git 命令清单
常用 Git 命令清单我每天使用 Git ,但是很多命令记不住。一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库$ ...
2018-04-26 17:08:37
694
原创 Android资源混淆
Android资源混淆工具:https://github.com/shwenzhang/AndResGuard/blob/master/doc/how_to_work.zh-cn.md打包时的:用到的签名设置
2018-01-31 16:48:06
337
原创 android反射机制
一、Java反射基础介绍.详细请参考来源网站http://blog.163.com/ahszrj123@126/blog/static/109529029201261473243868/反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整
2016-12-29 13:45:03
379
原创 android动态加载外部类
基本信息 Author:kaedeaGitHub:android-dynamical-loading我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装APK就能升级应用的功能,这样一来不但可以大大提高应用新版本的覆盖率,也减少了服务器对旧版本接口兼容的压力,同时如果也可以快速修复一些线上的BUG。 这种技术并不是常规
2016-12-29 13:28:32
1364
原创 Android 自定义View 需要知道的几点
1、让View支持wrap_content 这是因为直接继承View或者Viewgroup的控件,如果不在onmesure对wrap_content做特殊处理,那么当外界在布局中使用wrap_content时就无法达到预期的效果。 2、如果有必要,让你的View支持padding 这是因为直接继承View的控件,如果不在draw方法中处理padding,那
2016-12-21 13:54:44
427
原创 使用nineoldandroid.jar包 简单实现全屏滑动
下面代码中ViewHelper需要用到nineoldandroid.jar。@Overridepublic boolean onTouchEvent(MotionEvent event) { int x =(int) event.getRawX(); int y =(int) event.getRawY(); switch (event.
2016-12-20 17:01:31
544
原创 Android的GestureDetector
手势检测,用于辅助检测用户的单机、、滑动、长按、双击等行为。要使用GestureDetector也不复杂。 首先,需要创建一个GestureDetector对象并且实现onGestureListner接口,根据需要我们还可以实现OnDoubleTapLinster从而能够监听双击行为:GestureDetector gestureDetector=new GestureDetect
2016-12-20 14:20:05
336
原创 Android Fragment中onActivityResult()方法获取不到返回数据或者无响应的解决办法
今天在项目中碰到一个需求,需要在Fragment中跳转到一个新的Activity之后在Fragment获取到新的这个Activity返回的数据,今天一直都无法获取返回的数据,在网上查了很久的资料后发现原来是这个项目的上一个逗比Coder少写了一行代码,真想分分钟拍死TA ( ▼-▼ ) 下面提供遇到问题的解决办法:我们正常情况下会从一个Activity A 跳转到另一个Acti
2016-09-12 15:39:07
1446
原创 mac上更新ruby
因为准备在项目中使用bootstrap,在安装bootstrap过程中提示需要Ruby的版本在1.9.2以上,而目前使用的Ruby版本是Mac系统自带的1.8.7。所以需要对Ruby进行升级。这里使用RVM对Ruby进行升级,升级过程如下:1、安装 RVMRVM:Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)[
2016-08-29 17:20:28
431
原创 Mac OS X 10.11.1 安装cocoapods及使用详解
一、什么是CocoaPods每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如 Java 语言的 Maven,nodejs 的 npm。随着 iOS 开发者的增多,业界也出现了为 iOS 程序提供依赖管理的工具,它的名字叫做:CocoaPods。CocoaPods项目的源码 在 Github 上管理。该项目开始于 2011 年 8 月 12 日,经过多年发展,现在已经成为 i
2016-08-29 16:55:02
637
原创 UINavigationBar 使用总结
UINavigationBar是我们在开发过程中经常要用到的一个控件,下面我会为大家介绍一些常用的用法。1. 设置导航栏的标题这个不多说,直接上代码self.navigationItem.title = @"UINavigationBar使用总结";2. 设置导航栏的背景颜色//通过barTintColor来设置背景色 self.navigationContr
2016-08-26 16:05:36
741
转载 Mac OS Xapk反编译工具包的使用
在本文中我将介绍如何在Mac OS X上使用apktool.jar、dex2jar、jd-gui来进行apk的反编译和查看源码。下面会提供每个工具的下载地址。如果觉得下载慢的话,我已经打包好了所有工具,在本文末会附上下载地址。测试环境:OS X EI Capitan 10.11.41.下载脚本右键这里,把它存储命名为apktool,记得不要带后缀,要把后缀去除。2.
2016-07-26 12:01:33
1125
原创 Android的 Parcelable和Serializable区别
大家都知道Parcelable和Serializable都能实现序列化并且都可以用intent间的数据传递,那么两者该如何选取呢? Serializable是JAVA中的序列化接口,其使用起来简单但是开销很大,序列化和反序列化过程需要大量的I/O操作。而Parcelable是Android中的序列化方式,因此更适用于Android平台上,它的缺点就是用起来比较麻烦,但它的效率很
2016-07-15 15:49:39
222
原创 AndroidView事件分发机制(二)
我们接着上次文章说的Android的View分发机制。 首先我们再举一个栗子: 当一个点击事件产生之后,他的传递过程遵循如下顺序:Activity->Window->View,即事件总是先传递给Activity,Acitivity再传递给Window,最后window再传递给顶级View,顶级View接收到事件后,就会按照事件分发机制去分发事件。再考
2016-07-14 17:02:52
440
原创 Android View的事件分发机制(一)
开发了Android2年了吧 ,开发经验确实很多了,但是说实话底层的东西知道的还是略少,今天就把我看到的有关Android View的点击事件分发和大家讲一下 在介绍点击事件的的传递规则之前,首先我们要明白我们要分析的对象就是MotionEvent,即点击事件。所谓的点击事件分发其实就对MotionEvent事件的分发过程,即当一个MotionEvent产生以后,系统需要把这个事
2016-07-14 11:40:52
303
转载 Android实战技巧:ViewStub的应用
在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Infl
2016-06-24 16:50:56
220
原创 Android studio编译问题
当Android Studio中编译java方面的代码,出现类似的警告:有关详细信息, 请使用 -Xlint:deprecation 重新编译。有关详细信息, 请使用 -Xlint:unchecked 重新编译。时,去项目对应的build.gradle中添加配置:?1234567
2016-06-24 11:39:06
442
原创 IOS开发常用宏定义
//-------------------获取设备大小------------------------- //NavBar高度 #define NavigationBar_HEIGHT 44 //获取屏幕 宽度、高度 #define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) #define SCREE
2016-05-06 15:56:02
254
原创 Android AIDL 进程之间的通信
关于IPC应该不用多介绍了,Android系统中的进程之间不能共享内存,那么如果两个不同的应用程序之间需要通讯怎么办呢?比如公司的一个项目要更新,产品的需求是依附于当前项目开发一个插件,但是呢这个插件功能以及界面比较复杂,不能和当前项目在一个进程中,同时呢,还要用到当前项目中已经写好了的一些东西,那么因为新开发的依附于当前项目的插件和当前项目不是一个进程,因此不能共享内存,就出现了问题,于是,需要
2016-04-24 10:39:51
656
原创 Android系统图册更新保存的图片
Adnroid中保存图片的方法可能有如下两种:第一种是自己写方法,如下代码:123456789101112131415161718public static File saveImage(Bi
2016-04-15 16:49:13
573
原创 ios oc 类之间相互依赖 关于import和@class的区别
1.import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编 译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,后面会再告诉你,所以在头文件中如果用@class声明某个类后,在.m的实现中如果用到声明类的具体方法或变量时还得再#import类 2.在.h头文件中进行声明时用#import的话,如果100个头文件都#import同一个头件,或者这些文件是依次
2016-03-09 10:24:25
2936
1
原创 xcode和mac一些快捷键设置
1. 文件CMD + N:新文件CMD + SHIFT + N: 新项目CMD + O: 打开CMD + S: 保存CMD + SHIFT + S: 另存为CMD + W: 关闭窗口CMD + SHIFT + W: 关闭文件2. 编辑CMD + [: 左缩进CMD + ]: 右缩进CMD + CTRL + LEFT: 折叠CMD + CTRL + RIGHT: 取消
2016-02-26 17:03:42
354
原创 Android代码混淆常用设置
* 配置签名信息* 配置ProGuard在ProGuard中添加proguard.config=proguard.cfg运行混淆器之后输出的文件有:dump.txt 描述.apk包中所有class文件的内部结构。mapping.txt 列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用的,因为它把混淆的堆栈跟踪信
2016-02-26 17:03:39
923
原创 如何让iOS从容地崩溃
虽然大家都不愿意看到程序崩溃,但可能崩溃是每个应用必须面对的现实,既然崩溃已经发生,无法阻挡了,那我们就让它崩也崩得淡定点吧。IOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler用来做异常处理,但功能非常有限,而引起崩溃的大多数原因如:内存访问错误,重复释放等错误就无能为力了,因为这种错误它抛出的是Signal,所以必须要专门做Signal处理。首
2016-02-26 17:03:37
410
原创 MAC环境下 svn的使用
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简单的配置。我们首先来看下,如何在Mac环境下搭建svn服务器端环境。创建代码仓库,用来存储客户端所上传的代码我先在/User/apple目录下新建一个svn目录,以后可以在svn
2016-02-26 17:03:34
398
原创 iOS cookie 的使用(相当重要)
一. CookieCookie是在客户端存储服务器状态的一种机制,Web服务器可以通过Set-Cookie或者Set-Cookie2HTTP头部设置Cookie。Cookie可以分为两类,会话Cookie和持久Cookie,会话Cookie是临时Cookie,当前会话结束(浏览器退出)时Cookie会被删除。持久Cookie会存储在用户的硬盘上,浏览器退出,然后重新启动后Cookie仍然
2016-02-26 17:03:26
356
原创 iOS 播放系统音效,自定义音效
播放系统音效、自定义音效工具类需求大致分为三种:1.震动2.系统音效(无需提供音频文件)3.自定义音效(需提供音频文件)我的工具类的封装: // // WQPlaySound.h // WQSound // // Created by 念茜 on 12-7-20. // Copyright (c) 2012
2016-02-26 17:03:24
407
原创 iOS常用控件尺寸大合集
元素控件尺寸(pts)Window(含状态栏)320x 480StatusBar的高度20NavigationBar的高度44含Prompt的NavigationBar的高度74NavigationBar的图标20×20(透明的png)ToolBar的高度44ToolBar的图标20×20(
2016-02-26 17:03:21
372
原创 No architectures to&nb…
出现的原因:armv7s是应用在iPhone 5 A6 的架构上的解决的方式:1,在Project target里“Architectures”设置为“Standard(armv7,armv7s)”2,修改在Project target里“Build Settings”的“ValidArchitectures”添加“i386”和“armv7”(Xcode4.6以上版本不再支
2016-02-26 17:03:19
354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人