自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

goup的专栏

Stay hungry,Stay foolish!

  • 博客(45)
  • 资源 (19)
  • 收藏
  • 关注

原创 AFNetWoking中UIWebView导致苹果包不通过的完美方案

从2020年4月1日起,Apple对新发布的应用ipa中使用了UIWebView的直接不予上传,即使你通过Xcode将包Upload成功了,在App Store Connect中也看不到,同时你会收到这样的邮件:ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability.

2020-05-22 09:26:12 2877

原创 XCode11创建项目iOS13适配,以及运行黑屏问题处理

Xcode 11创建的工程,一开始运行时会出现黑屏现象。里面也多出SceneDelagate的文件。原因:Xcode 11 默认是会创建通过UIScene管理多个UIWindow的应用,工程中除了 AppDelegate外会多一个SceneDelegateAppDelegate和SceneDelegate是iPadOS带来的新多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。在...

2019-11-28 14:51:09 1593 1

原创 一、逆向环境配置和常用工具

前言Android逆向是一个各方面能力的应用。它需要逆向人员需要有一定的Android开发能力,能理解Android程序的结构和运行流程,并熟悉Android的API。开发语言需要了解Java、C++,这两门语言逆向出来的对应的语言是Smali和Arm,这是一种挑战,也是它的乐趣所在。Android简介Android应用程序采用Java语言开发,当然最近几年Google也开始推Kotlin...

2019-11-18 19:12:30 537

原创 Android 通过JNI C++进行MD5加密

Android Studio使用JNI之前觉得是一件比较麻烦的事,官方文档也不多,有点无从下手。本篇以CMake方式说说如何利用JNI方式使用C++进行MD5加密,这样经过Native的方式不容易被反编译出来,所以加点复杂的盐,安全性会更高。

2017-12-01 16:51:29 5917 1

原创 Python数据库(MySQL、MongoDB、Redis)编程

MySQL数据库系统解决的问题:持久化存储,优化读写,保证数据的有效性当前使用的数据库,主要分为两类 文档型,如sqlite,就是一个文件,通过对文件的复制完成数据库的复制服务型,如mysql、postgre,数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作E-R模型当前物理的数据库都是按照E-R模型进行设计的E表示entry,实体R表示rela

2017-09-29 11:23:21 1174

原创 Python网络编程

TCP/IP协议族 用端口在网络上区分进程。大于1024的端口是动态端口,小于的是操作系统预留端口。 大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;一般PC机使用小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。一些服务器使用

2017-09-16 21:15:17 616 1

原创 Python进程和线程

python实现多任务有三种方式:进程、线程、协程。主进程中`os.getpid()`和子进程中调用`os.getppid()`会得到同一个值。一般子进程的`os.getpid()` 比父进程的大,自增产生。`pid = os.fork()` 在父进程中返回的值是子进程的id值,在子进程中返回0。父子进程谁先执行不确定。主进程结束,子进程不会结束,直到子进程自己结束

2017-09-09 16:48:34 734

原创 Python高级编程

模块重新导入当import moduleName 的时候,python是通过sys.path 来查找的。可以使用sys.path.append('newPath') 可以添加搜索路径。 当import了一个module之后,修改了module的代码,那么在当前运行时不会更新module修改后的功能。需要重新导入:form imp import *reload(moduleName)循环导入:

2017-09-07 23:32:19 6719 1

原创 Python基础

Python语言主要有两个版本。Python2和Python3。在命令行中python默认是Python2,使用Python3则使用Python3。注释使用#开头的是单行注释。三个单引号或者三个双引号是多行注释

2017-09-03 09:20:06 538

原创 Linux系统命令及Vim

在Ubuntu的Terminal界面,Ctrl+Shift++三个键可以放大显示终端; Ctrl+-两个键缩小。ls 查看当前目录所有文件 直接跟后面的是参数,在横线-后面的是选项。如 ls / -alh 命令后面加–help 或 man 加命令 查看帮助可以使用*、?、[m-n]等通配符,类似于正则表达式pwd 查看当前所在目录cd 切换目录 两个tab键可以进一步查看备选

2017-08-31 18:23:57 556

原创 Android最佳实践之后台任务

Android的四大组件都是运行在UI(主)线程的。Service组件没有界面,也是运行在主线程中的,如果在Service中运行耗时操作,我们一般采用新建子线程的方式。其实Android Framew

2017-08-29 14:15:34 3409

原创 Java之JSP和Servlet基础知识。

JSP,Java Server Pager的简称。由SUN倡导并联合其它公司创建。JSP是一门脚本语言JSP可以嵌入到HTML中JSP拥有Java语言的所有特性面向对象、健壮、多线程、安全、可移植、高性能JSP运行于JSP容器中Tomcat、Jetty等。JSP会被转换成ServletJSP->Servlet->Class

2016-06-24 01:06:12 13290

原创 Android最佳实践之UI

为多屏设计(一) - 支持多个屏幕尺寸参考地址:http://developer.android.com/training/multiscreen/index.html Android UI设计提供了一个灵活的框架,允许应用程序为不同设备显示不同的布局,创建自定义UI部件,在App外部控制系统的Window。 Android的设备尺寸参差不齐,从几寸的小手机到几十寸的TV设备,我们需要学会

2016-06-03 10:15:56 7140 1

原创 Android最佳实践之高效的应用导航

设计(一)- 规划Screens和他们之间的关系原文地址:http://developer.android.com/training/design-navigation/screen-planning.html#beyond-simplistic-design设计和开发Android应用程序的第一个步骤是确定用户能够查看和处理应用。一旦你知道用户与之交互的应用程序之间交互什么数据,下一步就

2016-05-18 09:31:33 8505

原创 Android动画最新最全详解包含Material Design动画

以前写动画也是零零种种,需要的时候就查API或找现成的,不够系统。现在通过学习将Android整个动画体系勾勒出来,做到有的放矢。 安卓框架提供了2个动画系统:属性动画(Android 3.0)和View动画。这两种动画系统都是可行的,但是,在一般情况下,属性动画是首选的方法,因为它是更灵活,提供更多的功能。除了这两个系统,你可以利用Drawable动画,它允许你一帧一个的加载显示Drawable

2016-05-10 21:34:55 4861

原创 Android最佳实践之Notification、下拉刷新、内存及性能建议等

通知(Notification)是Android中使用的非常多的一个事件提示机制。Android平台提供了下拉刷新(swipe-to-refresh)的组件,让用户可以手动拉动去刷新数据。尽管Dalvik虚拟机有内存回收机制,但关于内存的分配和释放必须重视的事情,每个App都有限制的可使用内存。为了让垃圾回收器能及时回收内存,要避免引起内存泄漏(Memory Leak)。Android如何彻底地清理A

2016-05-04 21:18:09 6528

原创 Java基础数据结构和算法

数据结构Array数组和C/C++以及其他语言一样,Java中的数组有差不多一样的语法。只是Java中除了8中基本类型,数组也是作为对象处理的,所以创建对象时也需要使用new关键字。和大多数编程语言一样,数组一旦创建,大小便不可改变。算法二分查找对于有序数组,二分查找的效率在大数据量的情况下,效率明显:private static int find(int [] a

2016-04-22 22:46:21 33641

原创 Android最佳实践之触摸手势

普通手势参考地址:http://developer.android.com/training/gestures/detector.html#data 当用户一根或多根手指在屏幕上运动的时候,就开始产生了手势事件,我们用onTouchEvent()回调方法来处理。为Activity 或View捕捉触摸事件使用getActionMasked()来提取event中的action。public class

2016-04-10 00:27:27 9390 1

原创 Android最佳实践之性能 - 多线程

在单独线程运行代码参考地址:http://developer.android.com/training/multiple-threads/define-runnable.html Runnable对象,是一个接口,里面只有一个run方法,它只是表示一段可以运行的代码。说这句话,是说明它并不一定要运行在子线程中,它也可以运行在UI线程。如果它用来执行一段代码,通常被称为一个任务(Task)。 Th

2016-04-10 00:20:24 4313

原创 Android最佳实践之性能 - 提升Layout性能

优化布局结构参考地址:http://developer.android.com/training/improving-layouts/optimizing-layout.html布局是Android应用程序的关键部分,直接影响到用户体验。如果实现的不好,布局会消耗大量内存,应用程序UI会变得缓慢。Android SDK包含工具来帮助你识别布局性能问题,结合最佳实践,你将能够实现流畅的滚动体验和一个最

2016-04-10 00:17:02 4923 1

原创 Android最佳实践之性能 - 电池续航时间优化

Doze和App Standby的优化(API23)参考地址:http://developer.android.com/training/monitoring-device-state/doze-standby.html 从Android 6.0 (API level 23)开始,Android提供了两个节电功能用来增加电池的续航时间。Doze 可以在设备长时间不使用时,通过延迟后台CPU和网络的

2016-04-10 00:10:27 18458 1

原创 Android最佳实践之Material Design

Material概述及主题学习地址:http://developer.android.com/training/material/get-started.html 使用material design创建App:温习一下material design说明在app中应用material 主题创建遵循material design规则的布局指定投射阴影的高度使用ListView和CardVie

2016-04-09 23:53:36 6514

原创 Mac下反编译和重新编译打包APK

反编译APK需要的工具如下: - dex2jar 这个工具用于将dex文件转换成jar文件 下载地址:http://sourceforge.net/projects/dex2jar/files/ - apktool 这个工具用于最大幅度地还原APK文件中的9-patch图片、布局、字符串等等一系列的资源。 下载地址:http://ibotpeaches.github.io/Apktool

2016-04-03 22:59:09 6262

原创 Android Overdraw过渡绘制

过度绘制描述的是屏幕上一个像素在单个帧中被重绘了多少次。比如一个有背景的TextView,那么显示文本的那些像素至少绘制了两次,一次是背景,一次是文本。过度绘制是Android平台上一个很棘手的性能问题,它非常容易出现,幸运的是,它也同样容易被修复。我们可以通过手机设置里面的开发者选项,打开Show GPU Overdraw的选项,来查看某个app过度绘制的情况。显示这个像素被过度绘制的次数。一共有

2016-04-01 16:43:45 1129

原创 Android Spinner点击选中Item不再调用onItemSelected方法的方案

Android中使用Spinner有时有二级菜单需要操作,这时选中了某一项,想再点击这一项进入二级菜单重新选择时,onItemSelected方法是不会重新调用的,二级菜单出不来,影响功能。看Spinner源码,只有现在选中的position(或rowId)和点击的position(或rowId)不一样,才会触发onItemSelected回调。AdapterView.java:void check

2016-03-28 17:12:34 4243 2

原创 Java中强引用、软引用、弱引用的区别

Java中对象有四种引用级别,这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用,即StrongReference >SoftReference > WeakReference > PhantomReference。 SoftReference 、WeakReference、PhantomReference这三种引用都是继承java.lang.ref.Reference类。强引用(Stron

2016-03-23 17:58:35 695

原创 Android View Touch的事件分发机制

开发一段时间的Android,或多或少对Android的事件有一些了解,对诸如dispatchTouchEvent、onTouchEvent方法有些了解。但真正在面试中被问起,整个机制,或者具体的分析ViewGroup+ViewGroup+View的具体回调顺序,就懵了。百度出的第一位博客讲解的很到位: 当一个Touch事件(触摸事件为例)到达根节点,即Acitivty的ViewGroup时,

2016-03-23 17:01:51 737

原创 ClassLoader加载机制

当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader | extension classloader | system classloaderbootstrap classloader:启动类加载器或者叫引导类加载器,加载jdk核心的APIs,这些APIs一般位于

2016-03-21 14:52:33 491

原创 Java中如何中断线程?

这道题几乎是面试必问题目。如果不知道如何圆满的回答,只能答interrupt()方法了。但是一旦被问,interrupt方法并不一定能中断线程啊,整个人就懵了。经查资料以及对线程的进一步了解,百度知道上的答案比较符合。终止线程的三种方法: 1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和susp

2016-03-19 00:08:19 2275

原创 Mac下配置adb环境变量以及使用Android Screen Monitor

有时需要连上Mac的设备能够实时把设备屏幕的内容更新到电脑上显示,方便演示。使用asm(Android Screen Monitor)这个工具,在这之前需要设置adb环境变量。我们熟悉在windows上的方法,在mac上有些不一样。设置adb环境变量1、在终端中输入 cd ~ ,转到用户目录。 2、更新.bash_profile文件(当该文件存在时),如果该文件不存在,可通过如下命令创建:tou

2016-03-17 23:57:31 2696 2

原创 Android NFC的使用

1、NFC介绍 近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行于20cm以内,类似于蓝牙的通讯协议但传输距离更短的通讯方式。其传输速度有106Kb/s,212Kb/s或424Kb/s三种。目前近场通信已通过成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。 2、

2016-03-17 17:55:56 7404

原创 Mac下通过镜像下载Android源代码

在Android开发过程中,经常需要查看Android的源代码。而在下载的SDK中,有各个Platform版本的Framework层的源代码下载,而这些源代码是不完整的,没有C/C++的代码。我们需要下载完整的Android的源代码。 Google提供的源代码的官网是:https://source.android.com/(需要梯子) 里面有很详细的下载源代码的步骤:https://source

2016-03-04 00:19:55 4668 3

原创 Android中关于assets和raw播放音频视频的实践

Android开发中经常要播放音频视频等文件,比如扫描到二维码条形码用“嘀”一声来提示用户,比如刷微博刷新会播放一个声音,再比如有的APP在开启后会播放一段动画(视频),等等。这些文件保存在工程的assets或 /res/raw目录中,来进行调用。 比如,播放assets中的音频用到如下代码://Activity中try {AssetManager assetManager = this.ge

2016-03-01 21:31:10 22313 2

原创 自定义轮播组件PictureCarousel的实现过程

定义了PictureCarousel类,直接在项目中使用,很方便集成轮播组件。 Github地址:https://github.com/bendeng/PictureCarousel 想起两年前使用Gallery来做轮播组件,当时时不时还要OOM一下,没有使用UIL时,不知内存管理的重要性,没熟练使用ViewPager时,也不知ViewPager的机制对内存的占用是多么的友好。效果图如下: 实

2016-02-26 23:39:54 2411 1

原创 Android异步加载器Loader的使用

在Activity或Fragment中加载数据,一般的I/O或数据库操作或数据解析操作,可能会比较耗时,为了提升用户体验,一般将这一的操作放在单独的线程中运行,这样保证操作的流畅性。 Android 3.0 中引入了加载器,支持轻松在 Activity 或片段中异步加载数据。 加载器具有以下特征: - 可用于每个 Activity 和 Fragment。 - 支持异步加载数据。 - 监控其数

2016-02-18 18:32:28 691

原创 Android SQLite框架greenDAO的使用

Android中集成了SQLite数据库,Android本身提供了完备的SDK提供访问存取SQLite的接口,通过SQLiteOpenHelper类来管理SQLite数据库。在SQLiteOpenHelper类中的onCreate方法中创建数据库,在onUpgrade方法中升级数据库。 但随着应用的复杂度越来越高,表设计中的字段越来越多,我们编写的SQL语句越来越长,CURD代码越来越冗余冗长,越

2016-02-16 18:52:42 3035 1

原创 支付宝咻一咻自动无限快速点击的实现

前段时间采用小米的开源代码解决了自动抢红包的bug,从而能淡定的抢微信红包了。最近支付宝咻一咻抢红包呵呵领福又火了一把,于是在业余写了一个自动咻一咻的辅助。这个辅助真的就解放了双手,抢红包不带这么累的,手指点的累死也不一定能咻出什么东西来。废话不多说,开始分析。 看咻一咻的界面,我通过Android Device Monitor外加代码打印,发现的那个圆形按钮是一个Button类型组件,界面其它部

2016-02-02 23:26:41 3377 13

原创 iOS开发之安装和使用Cocoapods

Cocoapods是OSX 和 iOS开发中的第三方库管理工具,类似于Java开发中的Maven。它通过称为“Pods”的依赖库帮我们管理第三方库的版本。 Cocoapods意义体现在两个方面。第一,在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段、连接器选项、甚至是ARC环境下的-fno-objc-arc配置等。第二,使用CocoaPods可以很方便地查找新的第三方库,这些类

2016-01-30 22:36:28 2399

原创 百度开放平台SDK错误解决

百度开放平台给了开发者很多便利的SDK使之能够快速集成很多服务,提高开发速度减小集成难度。但是在开发过程中也会遇到很多奇葩或者不奇葩的问题。

2016-01-24 21:46:08 3983

原创 Android开发中一些疑难异常解决

Android开发中总是会遇到一些奇奇怪怪的问题,有时真不知如何下手。点滴经验,重在积累。分享我在实际开发中遇到的一些问题,以后还会继续添加或者有单独篇幅进行分析。

2016-01-22 11:49:50 8029

Mac-apktools-jd-gui.zip

Mac中反编译Android应用用到的工具。包括apktool、apktools.jar、jd-gui查看工具、dex2jar.jar,2016-04-03最新官网下载。注意是Mac中用的噢

2016-04-03

asm.jar(android screen monitor)

2016-03-17

DisplayingBitmaps

Google官方给出的对于OOM缓存Bitmap以及控制使用内存的方法,使用LruCache和DiskCache,很多有名的图片缓存框架如ImageLoader都有参考这个

2016-01-22

ThreadSample.zip

Android开发最佳实践中后台服务以及后台加载数据的样例代码。

2016-01-19

Scheduler.zip

Android最佳实践中的后台任务中保持设备唤醒的样例代码。

2016-01-19

InteractiveChart.zip

Android最佳实践中关于手势和触摸事件的样例代码。

2016-01-16

ImmersiveMode.zip

Android开发最佳实践中SystemUI部分的样例代码。状态栏通知栏的操作

2016-01-13

TabCompat.zip

Android开发最佳实践中关于兼容旧版Android版本,做的关于Tab导航的demo,使用抽象方法

2016-01-13

CustomView

Android最佳实践中自定义View部分的示例代码。学习使用ondraw,继承View等方式自定义View

2016-01-12

NewsReader

Android最佳实践中屏幕适配的样式代码,官网推荐.zip

2016-01-11

SwipeRefreshListFragment

ListFragment版本的Android官方推荐下拉刷新组件示例代码

2016-01-11

SwipeRefreshLayoutBasic

一个基本示例,展示了如何使用SwipeRefreshLayout添加下拉刷新手势。Android官方推荐

2016-01-11

NotificationExample

Android最佳实践中的Notification的示例代码,很强大的参考价值。在Android5.0之后Notification有了很多的变化,请拥抱这个变化。

2016-01-10

EffectiveNavigation

Android最佳实践之高效的应用导航的源代码,来自Android官网

2016-01-10

NavigationDrawer.zip

Android抽屉导航的最佳实践的完整实例代码

2016-01-09

the Action Bar Icon Pack

Android最佳实践中导航抽屉(Navigation Drawer)的标准icon资源。

2016-01-09

smalidea-v0.02.zip

ideaUI动态调试smali的插件。如果官网访问不了,可试下这个。

2016-01-04

仿最新手机QQ5.0侧滑菜单

最新手机QQ5.0侧滑菜单,可自行扩展其中功能。大拇指左滑右滑,比较流畅,最潮UI可参考

2014-12-15

android xml转json包

也许你苦于找到Android上可以将xml转化为json的工具。很多的同志用另一个组合json-lib (java)版的来做Android的xml到json的转化,太麻烦了,很有可能不兼容。这个jar包只有80多K,完美实现了xml到json的转化。

2014-04-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除