android
文章平均质量分 65
DarkFallYou
这个作者很懒,什么都没留下…
展开
-
App埋点
不能忘记埋点的初衷,要有目的的去埋点。其中各个渠道的下载量,用户留存情况是很重要的,还有首页等重要界面按钮,banner等的点击量,直接关系到我是否有必要把它放在首页。统计某些页面的访问量有助于我们分析,这个页面使用频率不高是不是可以放在更边角的地方,或者说是不是设计有问题需要改进。比如有一个流程操作,他是分好几个步骤进行的,我们可以统计用户的每步操作,这样我们就能建立一个漏斗模型,观察到在整个流程中用户在每个步骤的留存情况,借此来改进这个步骤操作。下面这些是比较常见的需要统计的方向:用户数据:新增原创 2022-01-26 15:36:28 · 580 阅读 · 0 评论 -
加载插件Apk中的类
方法1:使用类加载器将插件Apk打包放到手机中,这里路径是PluginApkPath。然后构建DexClassLoader类加载器加载该Apk,之后可以该类加载器的 loadClass(全类名) 方法来加载apk中的类。之后通过反射来获取他的成员变量和方法。 DexClassLoader pluginClassLoader = new DexClassLoader(PluginApkPath, getDir("my_dir", MODE_PRIVATE).getAbs原创 2022-01-18 17:08:38 · 2195 阅读 · 0 评论 -
SharedPreferences
SharedPreferences用于Android本地存储,使用较简单。SharedPreferences本身是一个接口,它的实现类是SharedPreferencesImpl,通过源码可以发现他的put和get方法都有synchronized锁,因此它是线程安全的。SharedPreferences基本使用存值 SharedPreferences sp = context.getSharedPreferences("sp_storage", Context.MODE_PRIV原创 2022-01-11 16:42:40 · 2011 阅读 · 0 评论 -
手写路由框架
我们平时Activity的跳转用的是下面的代码 Intent intent = new Intent(activity, SecondActivity.class); activity.startActivity(intent);但是在组件化中各个module都是可插拔的,可能上面的SecondActivity所在的module没有被依赖,那么上面的代码就会报红。为了解决这个问题,我们可以用一个映射表来存储路径key和对应的Activity,这么一来就不会报红,我们可原创 2022-01-07 16:19:04 · 655 阅读 · 0 评论 -
Android内置存储和sdcard存储(路径)详解
内置存储(external storage,/data/data下)context.getCacheDir().getPath() //路径为data/user/0/{packageName}/cache,不需要权限 context.getFilesDir().getPath() //路径为data/user/0/{packageName}/files,不需要权限 context.getDir("myDir", MODE_PRIVATE).getPath() //路径为data/user/0/{..原创 2021-12-30 17:24:50 · 9553 阅读 · 2 评论 -
插件化解析
什么是插件化将App功能拆分成多个模块,每个模块都是一个apk,最终打包成宿主apk和多个插件apk,插件apk放到云端通过接口动态下发到宿主apk,实现功能集成。插件化的优势宿主apk和插件是分开编译的,是两个apk,更利于多人开发。 插件模块功能的迭代更新和bug修复可以通过服务端接口动态下发,不需要重新下载安装整个apk,更加灵活方便 主apk的各个功能模块,用户可以按需下载,可以减小主apk的包体积 可以解决65535问题插件化的原理通过一个宿主Activity成为插件apk原创 2021-12-30 15:14:43 · 1463 阅读 · 0 评论 -
Apk打包、安装、签名
1.aapt工具会在我们编码时打包res资源文件,生成R.java、resources.arsc和res文件。2.aidl工具解析接口定义文件然后生成相应的Java代码接口供程序使用。如果项目没有用到aidl则不会执行这一步。3.Java Compiler阶段,将R.java,aidl生成的java文件,以及我们程序的java代码,通过Java编译器(javac)编译成.class文件。4.通过dx工具,将所有.class文件处理成.dex文件。5.通过apkbuilder工具将resour原创 2021-12-02 23:40:38 · 1092 阅读 · 0 评论 -
Bitmap和图片相关优化
Bitmap优化可做1:像素优化,过大的原图缩小适当尺寸使用 2:内存复用 3:缓存缓存一般有三级缓存:先内存中找,再磁盘中找,最后网络找。Bitmap内存优化,如下可以调整bitmap大小和设计图一致,不失真。并且启用Bitmap复用public class BitmapUtil { public static Bitmap resizeBitmap(Context context, int id, int maxW, int maxH, boolean hasAlpha, Bitm原创 2021-11-10 00:02:06 · 745 阅读 · 0 评论 -
Android编译提示文件路径过长,Gradle CreateProcess error=206
可以在Project目录下的build.gradle中加入:allprojects { buildDir = "C:/tempapp/${rootProject.name}/${project.name}" ... }}原创 2021-04-14 15:28:57 · 272 阅读 · 0 评论 -
oppo上架失败重新签名
mac上操作:Jdk目录echo $PATH查看,访达command+shift+G访问路径。将OppoSignVerify.apk和签名的jks文件拷贝到jdk的bin目录下。命令(命令可能要加sudo)行切换到jdk安装目录的bin目录下。在命令行输入如下命令:jarsigner -verbose -keystore [签名文件]-signedjar [签名后的apk名字] [...原创 2019-01-29 17:09:02 · 1165 阅读 · 0 评论 -
apktool安装配置
mac环境:apktool官网下载地址:https://ibotpeaches.github.io/Apktool/install/1.下载 apktool.jar (名字中带有版本信息)重命名为 apktool.jar2.编写一个apktool.sh文件。参考:https://download.csdn.net/download/darkfallyou/109663223.将两个...原创 2019-02-20 14:13:04 · 1159 阅读 · 0 评论 -
Gradle基本配置
1.共享变量定义一个名为common_config.gradle的文件放在工程根目录下。内容如下:project.ext{ //java语言 javaVersion = 8 javaMaxHeapSize = '4G' //Android编译版本 compileSdkVersion = 27 buildToolsVersion ...原创 2019-04-02 09:26:35 · 569 阅读 · 0 评论 -
instanceof, isinstance,isAssignableFrom说明
instanceof:检测左边对象是不是右边类或接口的实例化。如果左边的是null则直接返回false。obj instanceof 类例子:String s = new String("aaa");if(s instanceof String){ System.out.println("true");}输出trueisInstance:Class类的方法,判断ob...原创 2019-05-31 14:10:27 · 174 阅读 · 0 评论