开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 32757|回复: 7
收起左侧

[android源码] E4A 魔改版V1.5 支持java1.8更新多dex打包,优化原编译器体验

[复制链接]
发表于 2021-3-5 12:45:27 | 显示全部楼层 |阅读模式   重庆市重庆市
本帖最后由 宇智波·佐助 于 2021-4-8 18:49 编辑

E4A 魔改版V1.5 支持java1.8更新多dex打包,优化原编译器体验
版本V1.5
优化插件编译流程无需两次编译才能成功
优化编译体验不弹出插件做到无声编译具体可以在E4A\build.ini文件中配置即参考说明
支持分包dex,在方法数超过65536后会可以自动打包多个dex,E4A\multidex-config.txt为主dex中保留的类,注意数量不能超过64k,不懂请勿动。
可以选择是否编译发布版dex,E4A\build.ini,发布版dex编译时会优化掉堆栈轨迹和记录异常时会用到的一些信息,可能会找不到错误地方,建议调试时编译调试版dex而不是发布版,具体可查看配置文件注释。
优化编译器逻辑如发生错误会直接输出错误日志,可简单得了的看到具体的错误原因。
此版本无需手动打开编译插件,也不用手动打开插件,编译器内部会自行调用。
优化不是E4A的安装目录无法使用的问题

此次主要是优化了1.4版本的许多问题,算一个正式版,建议立即更新此版本。

还望大家多多支持,赞助可以获得,绿色版绿色版编译器,编译插件都没有群号广告,更可以获得V1+V2签名的功能可以显著提升android7.0以上设备的app安装速度,以及apk安全性还可以获得技术支持,可直接添加我为好友进行赞助。

注意事项:
安装需要先安装原版6.8E4A然后替换原版的所有文件才行。











版本V1.4
主要更新内容:
jdk 1.7=>jdk1.8
sdk 23(android6.0)=>30(android11)
签名V1=>V1+V2
编译器dx=>d8
E4A的jdk和sdk版本相信大家都知道,使用java1.7,目前有大量java1.8的SDK支持库无法使用,SDK更是只有23(android6.0)导致大量的新api新无法使用,比如无障碍的手势操作,添加后将会导致无法成功编译R.java文件,无法调用androidx等新的Android支持库,此次更新将JDK更新到java1.8.0.181版本,sdk直达30(android11)处理好资源冲突等问题可以使用最新版的原生SDK,这将带来巨大的可扩展性支持,签名算法目前采用java的Signature工具进行v1签名,导致打包出来的apk安装速度慢,更新了v2签名后将显著提升新版安卓中apk的安装速度及apk安全性。
Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature来自JDK。
V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。
注意事项:
1.更新java1.8后编译的类库都会自动基于java1.8,无法给使用java1.7的e4a使用,如必须用建议保留两个版本的e4a。
2.之前我的的动态权限工具在新版中可能会出现闪退的情况,可以找我拿新版。
3.清明查错工具无法用于新版,新的查错工具请等待后续版本发布。
4.关于无法找到R资源,编译器会自动唤醒插件中的编译插件,再次点击编译即可,也可以使用取资源索引方法。

版本V1.3
重写了e4a的事件管理者EventDispatcher在不影响原本事件正常流程的情况下配合超级事件监听器可以实现监听任意组件的任意事件,而不是像官方自带那样只能监听固定的几个
E4A的事件监听器相信大家应该都用过只是有一个很致命的问题,只能监听固定的那几个e4a官方自己带的组件的事件,其他第三方的一些类库都不能成功监听到。这样的话就很大的制约了e4a开发的自由度,经过对 e4a事件管理者EventDispatcher 的分析,对齐进行了修改后做出此魔改版+类库,经过仔细测试不会对原本e4a的事件派发产生影响。
下面分享一下我对e4a EventDispatcher 流程和实现原理的分析
EventDispatcher 一共有两个方法一个内部类,在可视页面添加一个控件或者写一个全局变量,那么e4a会自动生成代码对这个组件进行注册 调用这个方法registerEvent 它一共有三个参数Object object, String dataMemberName, String eventName 注册方法中 使用传入的这三个参数创建EventDispatcher.EventHandlerClosure 并添加到  private static Map<String, List<EventDispatcher.EventHandlerClosure>> registry = new HashMap();中在调用dispatchEvent派发事件方法后根据添加的eventName从  private static Map<String, List<EventDispatcher.EventHandlerClosure>> registry = new HashMap();查询事件名对应的List<EventDispatcher.EventHandlerClosure>
遍历List数据使用EventHandlerClosure的getDataMemberObject()通过反射获取到注册位置的变量,进行判断如果相等那么就调用相等对象invokeEvent对事件进行派发,EventHandlerClosure的构造方法中会先通过注册时传入的对象使用反射获取到class,判断该类中是否有对应的方法,如果有才会去给getDataMemberObject()中用到的对象赋值,否则也不会使用反射进行派发。



下载地址: https://share.weiyun.com/CqCp9c2w
结帖率:0% (0/2)
发表于 2024-4-11 21:53:34 | 显示全部楼层   山东省*
555555555555555
回复 支持 反对

使用道具 举报

签到天数: 25 天

发表于 2023-6-2 14:18:05 | 显示全部楼层   山东省济南市
支持一下楼主辛苦了
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-6-1 07:45:26 | 显示全部楼层   四川省绵阳市
支持一下楼主辛苦了
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2023-5-25 11:20:52 | 显示全部楼层   广东省广州市
支持一下
回复 支持 反对

使用道具 举报

结帖率:17% (1/6)

签到天数: 28 天

发表于 2023-5-10 06:58:50 | 显示全部楼层   辽宁省铁岭市

支持一下楼主辛苦
回复 支持 反对

使用道具 举报

发表于 2022-11-13 09:35:00 | 显示全部楼层   青海省海南藏族自治州
本帖最后由 一水孤隐 于 2022-11-13 09:38 编辑

请问大神,我之前做了个内部通讯录,来电读取号码的功能(自带的组件 手机)只能应用于安卓6.0及6.0以下的手机,之后的新手机有极低的几率读取成功,可否解决这个问题,有偿求助!!!另外请帮忙测试,使用你的编译器后,自带例程中的手机来电显示号码可否使用。挂断电话可否生效事件。
回复 支持 反对

使用道具 举报

结帖率:83% (33/40)

签到天数: 8 天

发表于 2021-3-29 19:58:36 | 显示全部楼层   广东省东莞市
支持一下楼主辛苦了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表