|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 项目中遇到的错误: 使用jectPack时的依赖: · androidx.appcompat: appcompat
- 依赖中已经带了livedata、viewmodel等,可以不用再依赖,再依赖时出现了异常编译错误,未解决 且 依赖版本不同,对应的livedata等版本也不同
-
- 使用sqlcipher 需要在application 实现 : SQLiteDatabase.loadLibs(this)
-
- kotlin 泛型 单例实现 扩展实现 导航实现
-
- svg
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:name="triangle" //定义矢量图的名称
- android:height="64dp" //drawable的固定高度,支持所有的尺寸单位,一般使用dp
- android:width="64dp" //drawable的固定宽度,支持所有的尺寸单位,一般使用dp
- android:viewportHeight="600"//视图的高度,可以理解为画布的高度
- android:viewportWidth="600" > //视图的宽度,下面的pathData中的内容便会在600宽高的画布内操作
- <group //定义一个组,可以包含path 及子group, 同时可以定义转换信息,如旋转,伸缩,位移
- android:name="rotationGroup"//组名
- android:pivotX="300.0" //X坐标中心点,默认为0
- android:pivotY="300.0" //Y坐标中心点,默认为0
- android:rotation="45.0" > //旋转角度,顺时针
- <path android:name="v" //路径的名称
- android:fillColor="#000000"//填充颜色
- android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> //路径的数据
- </group>
- </vector>
-
- apk唯一数据源:
- 设备唯一 : UUID 存值
- 第一次启动时间
- 课程包信息通过合成进行加解密,获取用户的课程数据
-
- 数据复制方案:
- 1: 使用两个apk方式:
- A.apk中自带数据库文件 包含功能: 复制数据文件到共有目录(document)
- B.apk中不包含课程数据: 运行时检查本地外置存储是否有需要的课程,如果没有,则检查共有目录(document)中是否存在有对应文件,有则复制到本地,没有则提示资源加载失败,应用无法使用
- 2: 只有一个apk方式
- 动态打包: 将需要的课程资源动态复制到asset中,再使用命令进行apk打包,这样打出的apk包只有固定的资源
- 3: 一个apk,包含所有课程资源... 体积超大
-
- 用户记录保存:
- 读取唯一数据源
-
- google 给与的唯一标识符最佳做法:
- 1、避免使用硬件标识符(权限限制,硬件定制)
- 2、只针对用户剖析或广告用例使用广告 ID
- 3、尽一切可能针对防欺诈支付和电话以外的所有其他用例使用实例 ID 或私密存储的 GUID。对于绝大多数非广告用例,使用实例 ID 或 GUID 应已足够。
- 4、使用适合您的用例的 API 以尽量降低隐私权风险
-
- 如何实现防快速点击 aspectJ
-
- SpellTipsLinearLayout onDraw为什么不调用?为什么设置背景后就有效过了?
- 实现dialog动画:从底部进入和从底部滑出
- DialogFragment原理
- BottomSheetDialog 固定高度和原理
- BottomSheetDialog中使用TextView滑动的冲突?
- Behavior
- MMKV实现和保存原理
|