安卓插件化开发实践笔记

关于如何实现插件化开发教程,网络上有很多,我转载的文章中,就有很多,如:

https://blog.csdn.net/n_fly/article/details/113785317

https://blog.csdn.net/n_fly/article/details/113865757

https://blog.csdn.net/n_fly/article/details/113865650

已经足够详细。本文旨在对我在插件化开发实践中遇到了哪些问题,以及最终是怎么解决的,做个简单的记录,如果能顺便帮助网友,那是莫大的荣幸。

问题一、在dexPath检查无误的情况下,pluginPackageArchiveInfo对象为null值

PackageManager packageManager = getPackageManager();
PackageInfo pluginPackageArchiveInfo = packageManager.getPackageArchiveInfo(dexPath, PackageManager.GET_ACTIVITIES);


问题二、在dexPath确实是插件apk所在路径,dexOutPath路径存在,且"com.kk.pluginproject.Student"类路径拼写无误,确实存在于插件app内的基础上,报类找不到异常

DexClassLoader pluginDexClassLoader = new DexClassLoader(dexPath, dexOutPath, null, getClassLoader());
Class<?> clz = pluginDexClassLoader.loadClass("com.kk.pluginproject.Student");

带着上述问题,我求助了百度、Google,看网友是否和我遇到同样的问题,无意中看到这篇文章,被我顺便转载在我的博客下:

https://blog.csdn.net/n_fly/article/details/113865424

看到如下内容:在Android9.0 之后就废弃了(为了提高用户隐私,不建议直接访问共享/外部存储设备),并且不再返回可访问的文件。

那怎么写了,官方推荐使用:

context.getExternalFilesDir(String type)

我有一种感觉,这个能解决我的问题,实践是检验真理的唯一方法,话不多说,立马干!

File downloadsDir = getExternalFilesDir(DIRECTORY_DOWNLOADS);
String downloadsPath = downloadsDir.getAbsolutePath();
String dexPath = downloadsPath+"/PluginProject.apk";

File dexOutFile = getDir("dex", MODE_PRIVATE);
String dexOutPath = dexOutFile.getAbsolutePath();

try {
    // 获取包名
    PackageManager packageManager = getPackageManager();
    PackageInfo pluginPackageArchiveInfo = packageManager.getPackageArchiveInfo(dexPath, 
            PackageManager.GET_ACTIVITIES);

    // ....
    DexClassLoader pluginDexClassLoader = new DexClassLoader(dexPath, dexOutPath, null, 
            getClassLoader());
    Class<?> clz = pluginDexClassLoader.loadClass("com.kk.pluginproject.Student");
    // ...
} catch (Exception e) {
    e.printStackTrace();
}

漂亮,问题解决了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
eclipse插件开发学习笔记源码是指记录学习eclipse插件开发过程中的笔记所对应的源代码。在学习eclipse插件开发时,我们通常会通过写笔记的方式记录自己的理解、遇到的问题以及对应的解决方案。而这些笔记所涉及的源码,就是指在实践过程中编写的相关代码。 在学习eclipse插件开发时,源码是非常重要的,因为它直接反映了我们对于插件开发知识的理解和实践能力。一般而言,我们的源码应该含以下几个方面的内容。 首先,源码应该插件的基本结构和配置信息。这插件的manifest.mf文件和plugin.xml文件。manifest.mf文件用于定义插件的基本信息插件的名称、版本号以及对其他插件的依赖关系等。而plugin.xml文件则用于定义插件的扩展点和扩展。 其次,源码应该括对于eclipse平台核心概念的理解和应用。例如,我们可以编写代码来创建和管理视图、编辑器、菜单、工具栏等界面元素,以及定义和处理事件等。 另外,源码还应该含对于第三方插件的使用和扩展。eclipse的插件生态系统非常丰富,我们可以通过使用第三方插件来快速实现一些功能。比如,我们可以使用JFace、SWT等第三方库来创建复杂的UI界面,使用EMF来定义和管理领域模型等。 总之,eclipse插件开发学习笔记的源码应该是一个不断积累和完善的过程。通过编写源码,我们可以更好地理解和掌握eclipse插件开发的知识和技术,提高自己的实践能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值