androidstudio插件怎么用

androidstudio插件怎么用,第1张

以Plugins插件为例
点击File,选择Settings,或者按快捷键Ctrl+Alt+S打开设置界面
选择Plugins,可以看到我们的插件列表
搜索你想要的插件,如Gson插件
选择GsonFormat,然后Install plugins,安装插件。安装插件后,需要重启Android Studio。安装好后可以看出来跟工具自带插件的区别。点击GsonFormat可以选择卸载掉插件。
不同的插件有不同的使用方法,GsonFormat是在文件中右键选择Generate或者
按下Alt+Insert按钮,选择GsonFormat格式化json。

原理:实现原理上都选择尽量少的hook,通过在manifest上预埋一些组件实现四大组件的插件化。其中Small更形成了一个跨平台、组件化的框架。

VirtulApp:
能够完全模拟app的运行环境,能够实现免安装应用和双开技术。
Atlas:
阿里出品,号称是一个容器化框架,结合了组件化和热更新技术。

Android中有两种类加载器,DexClassLoader和PathClassLoader,它们都继承于BaseDexClassLoader。

两者的区别:DexClassLoader多了一个optimizedDirectory的路径参数,这个目录必须是内部存储路径,用于缓存系统创建的Dex文件。

所以我们可以使用DexClassLoader去加载外部Apk中的类。

ClassLoader调用loadClass方法加载类采用了双亲委托机制来避免重复加载类。
首先,ClassLoader会查看自身已经加载的类中是否已经存在此类,如不存在,然后,则会使用父类来加载此类,如不能成功加载,则会使用自身重载于BaseDexClassLoader的findClass()方法来加载此类。

DexClass的DexPathList在DexClass的构造器中生成,findClass()方法则是从DexPathList下面找出对应的DexFile,循环DexElements,通过dexElementdexFile取出对应的DexFile,再通过DexFileloadClassBinaryName()加载对应的类。

作用:使用插件DexClassLoader加载出需要的类。

通过每一个插件的DexClassLoader加载出自身所需要的类,当每一个插件需要加载相同的类库时,可采用该类库的不同版本来使用。

通过把每一个插件的pathList(DexFile)合并到主app的DexClassLoader上,来使各个插件和主app直接能够相互调用类和方法,并且各个插件中相同的功能可以抽取出来作为一个Common插件供其它插件使用。

插件调用主工程
在ClassLoader构造时指定主工程的DexClassLoader为父加载器即可直接调用主工程中的类和方法。
主工程调用插件
如果是多DexClassLoader的情况,则需要通过插件的DexClassLoader加载对应的类并反射调用其方法。此种情况,主工程一般会在一个统一的地方对访问插件中的类和方法做一些访问权限的管理及配置。

如果是单DexClassLoader的情况,则可以直接调用插件中的类和方法。但是当多个插件引用的库的版本不同时,会出现错误,因此,建议采用Gradle版本依赖管理统一处理主工程及各个插件的库依赖。

Android通过Resource来加载资源,只要有插件apk,就可以使用assertManageraddAssertPath(apkPath)的方式来生成assertManager,再使用其new出对应的Resource对象即可。

注意:由于AssertManager并不是Public,所以需要通过反射的方式去调用它。并且由于一些Rom对Resource的处理,所以,需要兼容处理。

有2种处理方式:

产生的原因:由于主工程和各个插件引用的Resource id重复产生的冲突。

解决思路:Android中的资源在系统中是以8位16进制0XPPTTRRRR的方式存在,其中PP即是资源区分的区域(Android系统只用它来区分系统资源和应用资源),只要让每一个插件的PP段取不同的值即可解决资源id冲突的问题。
具体解决方式:

1修改aapt源码,编译期修改PP段。
2修改Resource的arsc文件,其中的每一条都包含了资源id和映射路径。

Activity的处理最为复杂,有两种处理方式:
1ProxyActivity的方式。
2预埋StubActivity,hook系统启动Activity的过程。

原理:VirtualAPK通过替换了系统的Instrumentation,hook了Activity的启动和创建,省去了手动管理插件Activity生命周期的繁琐,让插件Activity像正常的Activity一样被系统管理,并且插件Activity在开发时和常规一样,即能独立运行又能作为插件被主工程调用。

Android插件化方向主要有2个方向:

Android 插件化

进入到桌面 按 菜单键 有一个小部件 , 点击后可以选择一些已有的小部件进行添加
不同桌面设置可能不同,如果需要自己添加一些个性化的插件,这个需要使用一些第三方的桌面,比如Go桌面就有自己的桌面插件应用

*** 作步骤:
1、在手机的桌面空白处长按,待手机桌面上出现菜单后松开;
2、选择“Android小组件”选项
3、在d出的菜单中选择自己想要添加的桌面插件就可以了。
删除插件的方法也是非常的简单,你只要在想删除的插件上面长按一会,待手机震动后,拖动桌面插件到屏幕的最下方,就能够删除桌面插件了。

从 Firefox for Android 你可以按以下步骤访问附加组件:

轻触菜单按钮 (在某些设备的屏幕底边,或者浏览器的右上角)

轻触 工具 (您或许需要先轻触 更多)

轻触 附加组件。

轻触 浏览全部 Firefox 附加组件

你可以使用搜索框来搜索想找的附加组件。你还可以通过浏览集合来找到附加组件

轻触要安装的附加组件,然后轻触按钮 添加到 Firefox。

依照升级提示进行。有些附加组件会提示重启浏览器。然后,开始享受新的附加组件吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12629454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存