- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 APK 签名轮替方案 v3
Android 9 支持 APK 密钥轮替,使得应用能够在 APK 更新过程中更改其签名密钥。为了实现轮替,APK 必须指示新旧签名密钥之间的信任级别。为了支持密钥轮替,我们将 APK 签名方案从 v2 更新为 v3,以允许使用新旧密钥。V3 签名特性在 Android 9 及更高版本中,可以根据 APK 签名方案 v3、v2 或 v1 验证 APK。较旧的平台会忽略 v3 签名而尝试验证 v2 签名,然后尝试验证 v1 签名。签名轮替后,android 9 上升级到新版本后,不能再安装旧版签名的 a
2021-04-02 18:59:13 2717 1
原创 Android 11 签名压缩 so 库
Android 11 要求,预装的apk,target sdk 为 30 以上,必须在 apk 中使用未压缩的 so 库。检查方式,运行命令 unzip -v your_app.apk ‘lib//.so’如果 so 库文件显示 Defi,表示经过压缩$ unzip -v demo.apk 'lib/*/*.so'Archive: demo.apk Length Method Size Cmpr Date Time CRC-32 Name-------- --
2021-03-29 15:56:51 2196
原创 HTTP 常用知识
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写:基于TCP/IP通信协议来传递数据;客户端/服务端(C/S)的架构模型;无状态的请求/响应协议。Http 报文格式请求报文一个HTTP请求的消息以下四个部分组成:请求行(request line)、请求头部(header)、空行和请求数据。GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zl.
2021-03-19 18:16:01 655
原创 int 包装类型 Integer
int 是 java 内置的基本数据类型,对应有一个包装类型 Integer。Integer 内部有一个缓存 IntegerCache,通过享元模式,将最常用的 Integer 缓存,节省内存。private static class IntegerCache { static final int low = -128; static final int high; static final Integer[] cache; static Integer[] archiv
2021-03-17 13:44:25 3257
原创 阅读 jdk 代码之导入 idea
下载代码https://github.com/openjdk/jdk 下载 jdk 最新代码。git clone https://github.com/openjdk/jdk.git导入 idea ide打开 idea,open 下载的 jdk 代码目录,等待导入。设置项目的 sdk, idea 菜单 File -> Project Structure :添加 sdk, 选中左侧 Platform Settings 下面的 SDKs,点击中间的 +,添加 sdk;Name 栏修改名称,
2021-03-16 11:05:18 490
原创 String长度限制
String长度有限制吗?是多少?Java中String是有长度限制的,在JVM编译中还有规范。String其实是使用的一个char类型的数组来存储字符串中的字符的。public final class String implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc { @Stable private f
2021-03-15 18:41:43 631
原创 Android System Server
System ServerAndroid 系统服务进程 system_server,运行着各种服务,比如 PMS, AMS, WMS 等等。 该进程是启动时,由 Zygote 启动。frameworks/base/core/java/com/android/internal/os/ZygoteInit.javaprivate static Runnable forkSystemSer...
2019-04-28 15:18:14 321
原创 Android Zygote Fork
Zygotezygote 孵化器是 Android 应用进程的模板,通过其 fork 出来。 Zygote初始化最后进入 select 循环, 等待客户端的请求 fork 应用进程。frameworks/base/core/java/com/android/internal/os/ZygoteServer.javaRunnable runSelectLoop(String abi...
2019-04-28 15:16:17 483
原创 Android Zygote
Android 启动Android 底层是 Linux 系统,Linux 启动后的第一个进程是 init, init 通过 init.rc 配置文件启动一系列的进程,其中 zygote 进程是 Android 系统的核心,是一个 Android 进程的孵化器,所有 Android 进程都是基于这个进程克隆出来的,包括 system_service。initinit.zygot...
2019-04-28 15:12:52 336
原创 PHP HTTP添加自定义头
一般客户端和服务器传递数据都通过请求参数,很少添加自定义头。服务器端将头放在全局数据_SERVER里,参数都以HTTP开头,例如:客户端在http头里添加了SSOTK参数, 服务器端可这样读取:if(array_key_exists('HTTP_SSOTK', $_SERVER)) {$token = $_SERVER['HTTP_SSOTK'];}可以打印_SERVER,看看都有哪些内容:fo
2017-07-10 15:43:39 2530
原创 PHP date, time, microtime
time() Unix时间戳(1970为0),单位为秒。 microtime() 以 “msec sec” 的格式返回一个字符串,其中 sec(时间戳),msec 是微秒部分。date() 格式化时间,默认时间是time()。ps: s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒),其中:1s=1000ms,1 ms=1000μs,1μs=1000nstime()<?phpecho time()
2017-07-10 15:42:55 953
原创 PHP explode 和 implode 用法
explode() 函数把字符串分割为数组;implode() 函数把数组元素组合为一个字符串。
2017-07-10 15:41:10 3313
原创 Kotlin 集合
与 Java 不同, Kotlin 明确地区分可变的和不可变的集合(list, set, map, 等等)。可变的集合可以增删改集合元素;而不可变集合也提供了相应的方法,但是指向会创建新的集合,而不是在原来的集合上修改。Kotlin 的集合都在命名空间 kotlin.collections。Arrays数组通过 arrayOf()创建。ListsMaps和 Java 的一样, 存储键值对。
2017-06-01 15:58:01 683
原创 Kotlin 高阶函数 与 Lambda 表达式
高阶函数(higher-order function)是一种特殊的函数, 它接受函数作为参数, 或者返回一个函数. 这种函数的一个很好的例子就是 lock() 函数.
2017-06-01 15:57:21 999
原创 Kotlin 标准库扩展函数
Kotlin 标准库提供了一些扩展 Java 库的函数。apply, let, with, run, require
2017-06-01 15:56:27 1951
原创 Kotlin 扩展
Kotlin 提供了向一个类扩展新功能的能力, 而且不必从这个类继承, 也不必使用任何设计模式, 比如 Decorator 模式之类. 这种功能是通过一种特殊的声明来实现的, Kotlin 中称为 扩展(extension). Kotlin 支持 扩展函数(extension function) 和 扩展属性(extension property)。
2017-06-01 15:55:21 1081
原创 Kotlin 异常处理
Kotlin 的异常和 Java 的一样, try…catch…finally代码块处理异常,唯一一点不同是:Kotlin 的异常都是 Unchecked exceptions。
2017-05-25 15:25:34 5694
原创 Kotlin 范围
范围是指开始值和结束值之间的区间,所有可以比较的类型都可以创建范围,范围通过关键字..定义。可以用in来测试一个值是否在某个范围内, in是通过比较来确定是否在范围内。
2017-05-25 15:24:23 887
原创 Kotlin 接口
和 Java 的接口相差不大, 有两个区别: 1. 接口中可以有方法的实现。 2. Java 接口中的属性是常量, Kotlin 是可以被覆盖的属性。
2017-05-25 13:37:34 380
原创 Kotlin 可见度
Java 可见度有public, package, protected, private, 默认是 package。 Kotlin 也提供了4种:public, internal, protected, private, 默认是 public。private 表示只在这个类(以及它的所有成员)之内可以访问;protected 与 private 一样, 另外在子类中也可以访问;
2017-05-25 13:36:45 391
原创 Kotlin 类
Kotlin 和 Java 兼容, 面向对象的相关概念一致, 类的定义、继承、成员等和 Java 区别不大,Kotlin 的写法比 Java 简洁一些。类中可包含函数、属性、内部类、伴随对象。
2017-05-25 13:35:10 509
原创 Kotlin 控制流
和Java一样, Kotlin 支持常用的控制流: if else, for, while, when, break, continue 等。 if else, for, while, break, continue 和 Java 的类似, 不再赘述。 Kotlin 不提供 switch, 但是提供了增强版的 when 替代 switch。
2017-05-25 13:33:33 423
原创 Kotlin 类型
类型推断Kontlin 和 Java 一样,是强类型语言,但 Kotlin 支持类型推断,变量和方法,如果可以推断出类型,可以省略类型。
2017-05-25 13:32:50 1055
原创 Kotlin 变量和方法
变量Kotlin 有两个关键字定义变量:var 和 val, 变量的类型在后面。 var 定义的是可变变量,变量可以被重复赋值。val 定义的是只读变量,相当于java的final变量。
2017-05-25 13:32:02 1512
原创 Kotlin 和 Java 相互调用
Kotlin 的设计过程中就考虑到了与 Java 的互操作性。在 Kotlin 中可以直接调用既有的 Java 代 码, 反过来在 Java 中也可以很流畅地使用 Kotlin 代码。Kotlin 调用 Java大多数Java代码,可以直接调用import java.util.*fun demo() { val list = ArrayList<string>() list.add
2017-05-25 13:30:59 11251
原创 Hello World With Kotlin
Kotlin 和 Java 一样,可以在PC上运行,可以用IDEA进行开发,环境配置参考Getting Started with IntelliJ IDEA。 官方提供了一个学习网站,可以运行一些例子Kotlin。 也可以通过命令行的方式编译运行,参考Working with the Command Line CompilerPCfun main(args: Array<String>) {
2017-05-25 11:33:22 396
原创 Use Kotlin Android Extensions
kotlin-android-extensions用于扩展绑定关系,为了解决findViewById()的问题。背景Android开发中,findViewById()是比较烦人的一个函数,开源界已经有几个库提供了解决办法,比如:ButterKnife,DataBinding等。kotlin-android-extensions插件提供了一种方便的解决办法, 不用增加额外的代码,直接使用xml中定义的
2017-05-25 11:32:16 1067
原创 Start With Kotlin On Android
Android Studio 3.0 内置支持 Kotlin, 请安装3.0以上的 Android Studio。
2017-05-25 11:31:25 597
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人