Hide implementation of swift framework when distributing

In this article, I will demonstrate how to create a Swift NiceLogger framework and push to Cocoapods without sharing source code. You can download the final project from NiceLogger 1. Create a Swift framework 1.1 Create a new framework project  Product Name NiceLogger, Set language to Swift  1.2 Create a new file NiceLogger.swift… Continue reading Hide implementation of swift framework when distributing

How to generate **.cer** and **.p12** file for iOS push notification

Every time I created a new app with push notifications, iOS, I'm sure I've got everything right and then something refused to work. So this time I'm writing it down so I can't possibly get it wrong again.  Generally, we need 2 files for push notification: * .cer file * .p12 file Generate cer… Continue reading How to generate **.cer** and **.p12** file for iOS push notification

VI常用命令

vi / vim 删除以及其它命令 Commands Comments dd 删除一行 d$ 删除以当前字符开始的一行字符 D 与d$同义 d 回车删除2行 ndd 删除以当前行开始的n行 dw 删除以当前字符开始的一个字 ndw 删除以当前字符开始的n个字 d) 删除到下一句的开始 d} 删除到下一段的开始 ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。 d0 删至行首。 d$ 删至行尾。 ndd 删除当前行及其后 n-1 行。 x 或X 删除一个字符。 Ctrl+u 删除输入方式下所输入的文本。 R 恢复u的操作 J 把下一行合并到当前行尾 V 选择一行 ^V 按下^V后即可进行矩形的选择了 vaw 选择单词 viw 内部单词(无空格)… Continue reading VI常用命令

Vim notes

Column selection: Ctrl + V Replace Replace all A with B %s/A/B Find in current line find < f< Remove content between 2 characters For example, remove the content between [ and ]: [routeName] {ExampleRoutes[routeName].name}</Text Vim commands(go to the beginning of the line, find [, delete around ]): 0f[da[ Record/Play Macro command Begin to record… Continue reading Vim notes

How to use Android Battery Historian

1. Install Docker: https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac 2. Run Docker docker run -p 5001:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999 3. Fetch battery report To obtain a bug report from your development device running Android 7.0 and higher: $ adb bugreport bugreport.zip For devices 6.0 and lower: $ adb bugreport > bugreport.txt Then the bugreport will be exported & downloaded to… Continue reading How to use Android Battery Historian

Android perssions group

https://developer.android.com/guide/topics/permissions/requesting.html All dangerous Android system permissions belong to permission groups. If the device is running Android 6.0 (API level 23) and the app's targetSdkVersion is 23 or higher, the following system behavior applies when your app requests a dangerous permission: If an app requests a dangerous permission listed in its manifest, and the app does… Continue reading Android perssions group

Java Effective

Chapter 2. Creating and Destroying Objects Item 1: Consider static factory methods instead of constructors Item 2: Consider a builder when faced with many constructor parameters Item 3: Enforce the singleton property with a private constructor or an enum type Item 4: Enforce noninstantiability with a private constructor Item 5: Avoid creating unnecessary objects Item… Continue reading Java Effective