舞影凌风

42 posts

cannot synthesize weak property because the current deployment target does not support weak references

在用 pod 依赖 dsBridge 项目后报错如下: Error:(72, 13) cannot synthesize weak property because the current deployment target does not support weak references 猜测原因是dsBridge没有指定运行最低版本,导致不支持 weak 属性。 https://github.com/wendux/DSBridge-IOS/blob/master/dsBridge.podspec 解决方案: 在 Podfile 下面添加如下代码: post_install do |installer| installer.pods_project.targets.each do |target|

阅读全文...

iOS 学习笔记

0x1 安装 CocoaPods sudo gem sources -a https://ruby.taobao.org/ sudo gem sources -r https://rubygems.org/ sudo gem sources -l sudo gem update sudo gem install -n /usr/local/bin cocoapods -v 0.39 pod setup pod --version 执行 pod setup 特别耗时间,而且看不到进度,可以选择下面方式初始化: cd ~/.cocoapods/repos git

阅读全文...

Kotlin - by 关键字介绍

概述 Kotlin 中 by 关键字用来简化实现代理 (委托) 模式,不仅可以类代理,还可以代理类属性, 监听属性变化,下面我们来介绍by的几种主要使用场景: 类的代理 class 属性延迟加载 lazy 监听属性变化 Delegates.observable ( 扩展 Delegates.vetoable ) 自定义监听属性变化 ReadWriteProperty 属性非空强校验 Delegates.notNull() Map值 映射到类属性 map 类的代理(代理/委托模式) // 定义一个接口,和一个方法 show() interface Base { fun show() } // 定义类实现 Base 接口, 并实现 show 方法 open class BaseImpl : Base { override

阅读全文...

git 获取自己的提交历史

先把命令奉上: git config user.email | xargs -n1 -I {} git log --pretty=format:"%h - %an, %ar : %s" --since=2.weeks --no-merges --author={} 效果如下 (获取排除 merge 最近两周的提交记录): edbd9e5 - pengwei, 21 hours ago : 移除 fastjson 902ed84 - pengwei, 4 days ago : version 2.0.10 e5338cf - pengwei, 4 days ago

阅读全文...

charles替换远程 JS 文件

Charles 是一个特别优秀的代理工具,可以方便的实现本地文件代理,方便我们来调试远程的网址,下面就来介绍一下怎么配置 Charles 替换远程 JS。 启用 Tools > Map Local 如果不希望 webView 缓存网页的 JS,css 等,可以开启 Tools > No Cacheing, 这样每次都会重新请求这些资源。 添加规则 Add 我们以替换当前博客的某个 JS 文件为例,例如 http://apkfuns.com/assets/js/min/index.min.js?v=8478662b4d 我们该怎么写规则呢? * 是通配符, Local path 是映射到本地的 JS 文件路径,在原内容基础下增加了 alert,内容如下:

阅读全文...

Android - Kotlin 实践

语法糖 不用写分号 println("hello world") 变量 // 定义可变变量 var name: String = "hello world" // 定义不可变变量,相当于 Java -> final val useVal: Int = 1000 var tmpId = 1 //类型推导 三元运算符 // java int code = isSuccessfully? 200: 400; // kotlin int code = if(isSuccessfully) 200 else 400 import 别名 import cn.jasonmarzw.User as Person // 添加User别名为Person

阅读全文...

SQL语句用的不多的一些小技巧

1. varchar 转 int型 SELECT cast('1' as SIGNED INTEGER) FROM image_trace_log LIMIT 10; select * from gyzd_yysinfo order by cast(yysid as SIGNED INTEGER) 2. 时间戳格式化 FROM_UNIXTIME(uptime, '%Y-%m-%d %H:%i:%S') 注意第一个参数必须精确到秒,即时间戳为10位, 如果是13位得除1000 FROM_UNIXTIME(uptime/1000, '%Y-%m-%d

阅读全文...

这也许是功能最强大的Android与Javascript交互开源库

项目中为了减少端上开发量,通常会使用一些跨平台的解决方案,而 web 就是最简单、兼容性最强的方案,但 web 又受制于浏览器,不能直接访问系统的一些属性,而且我们也需要 web 调用 native 的一些方法,所以我们需要一套 web 和 native 双向交互的方案。 目前,Android 要实现与 web 交互有以下几种常用方案: WebView addJavascriptInterface方法 拦截自定义协议链接实现数据交换 实现 prompt,console等原生方法来数据交互 方案一是官方推荐实现方案,但是在 android 4.2以下存在严重安全漏洞,而且和 JS 交换的数据仅仅局限于基本类型(int,float,double,String 等),不支持直接 JS 函数调用和回调(需要通过注入 JS 支持)

阅读全文...

Activity重建导致Fragment多次初始化问题探讨

0x1 起因 我们先来看段代码(仅关键代码) public class TestActivity extends FragmentActivity { ... protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.xxxx); getSupportFragmentManager().beginTransaction() .replace(R.id.content, new TestFragment()) .commit(); } ... } public class TestFragment extends Fragment { public TestFragment() { Log.d("TestFragment", "new TestFragment"); } ... } 运行,并切换横竖屏 或者 切换系统语言,请问TestFragment的构造函数会执行几次呢?(注意:Manifest中没有配置configChanges属性) 06-01 10:34:37.

阅读全文...

那些不常用的adb命令

显示当前activity adb shell dumpsys window w | grep \/ | grep name= | cut -d = -f 3 | cut -d \) -f 1 打开应用详情 adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:com.baidu.hi 清空应用信息 shell pm clear com.baidu.hi 多语言选择 adb shell am start -a android.settings.LOCALE_SETTINGS

阅读全文...