Common

Posted by OOFTF Blog on April 12, 2021

layout: post author: “ooftf” tags: Android —

获取密钥详情

需要Java环境 keytool -list -v -alias master -keystore C:\StudioProjects\Master\app\lihang.jks

项目打印依赖

gradlew :app:dependencies

在kotlin项目中 注解处理器要使用kapt代替annotationProcessor,annotationProcessor(可能会失效?)

1
                         添加 apply plugin: 'kotlin-kapt'

可变参数

{一个数组}或者{多个参数}都可以

Intent

Intent.resolveActivity 用来检查是否有隐式注册

Toast如果show两次在某些机型(小米的部分手机)会不显示toast

Dumping Heap

Manifest merger failed with multiple errors MMKV 最低版本16

如果断点放到return 语句上 会走两次

compileSdkVersion 决定了查看源码的版本


签名选择V1和V2的时候要,两个都选,如果只选v1,没有v2安全,如果只选v2有可能在android低版本上安装出现[install_parse_failed_no_certificates]


在保存图片到本地的需求中,最好将图片保存在一级目录,因为在小米系统中保存在一级目录 (MyImage/sample.png)在打开相册是会提示新图片,但是如果保存到二级目录 (MyImage/download/sample.png)中则不不会有提示

类的内部各个部分调用顺序

1
(加载类)静态变量赋值 ---> 静态代码块 --(实例化)-->  进入构造方法 ---> super构造方法 ---> 非静态变量赋值---> 非静态代码块---> 构造方法实体 # LocalMaven publish 后  主项目不需要同步和Clean直接run就可以

手机抓包教程 https://www.jianshu.com/p/724097741bdf

渐变色 https://uigradients.com/#Opa

ObservableField和LiveData set同一个对象 不会触发change事件,可以用ObservableField 的notifyChange ?????

LiveData设置同一个对象,也会触发change事件,LiveData.getValue的初始值为null

ObservableField设置同一个对象,不会触发change事件,需要用的notifyChange触发.设置不同的对象可以触发;ObservableField.get()初始值为null

LiveData和ObservableField的内部属性设置新值都不会触发改变

广告

1
2
3
4
5
6
7
8
  try {
            Drawable drawable = GlideApp.with(this).load("").apply(new RequestOptions().onlyRetrieveFromCache(true)).submit().get();
            GlideApp.with(this).load("").preload();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

androidx

1
2
   java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/multidex/MultiDex;
   clean 以下就可以了

gradle_plugin_android_aspectjx java.lang.ClassNotFoundException

如何查看Apk引用

为什么声明变量中的泛型类型无法获取,而继承时的泛型类型可以获取

例如

1
ArrayList<String> list  

声明泛型变量并不会产生新的 class ,所以并不能通过 class 确定泛型类型,其类型还是 ArrayList
但是如果是继承

1
class Test extends ArrayList<String>{}

这里是产生了新的 class 类型 并且在 类型信息 Signature 中储存了泛型类型,所以可以通过 class 确定泛型类型