FSA全栈行动 FSA全栈行动
首页
  • 移动端文章

    • Android
    • iOS
    • Flutter
  • 学习笔记

    • 《Kotlin快速入门进阶》笔记
    • 《Flutter从入门到实战》笔记
    • 《Flutter复习》笔记
前端
后端
  • 学习笔记

    • 《深入浅出设计模式Java版》笔记
  • 逆向
  • 分类
  • 标签
  • 归档
  • LinXunFeng
  • GitLqr

公众号:FSA全栈行动

记录学习过程中的知识
首页
  • 移动端文章

    • Android
    • iOS
    • Flutter
  • 学习笔记

    • 《Kotlin快速入门进阶》笔记
    • 《Flutter从入门到实战》笔记
    • 《Flutter复习》笔记
前端
后端
  • 学习笔记

    • 《深入浅出设计模式Java版》笔记
  • 逆向
  • 分类
  • 标签
  • 归档
  • LinXunFeng
  • GitLqr
  • AndroidUI

  • Android第三方SDK

  • Android混淆

  • Android仓库

  • Android新闻

  • Android系统开发

  • Android源码

  • Android注解AOP

  • Android脚本

  • AndroidTv开发

  • AndroidNDK

  • Android音视频

  • Android热修复

  • Android性能优化

  • Android云游戏

  • Android插件化

    • DroidPlugin

    • RePlugin

      • RePlugin集成Fresco
      • RePlugin强制退出App
      • RePlugin集成AndroidAutoSize
      • RePlugin集成ARouter
      • RePluginX - 兼容AndroidX并加入新特性开发纪要
  • iOSUI

  • iOS工具

  • iOS底层原理与应用

  • iOS组件化

  • iOS音视频

  • iOS疑难杂症

  • iOS之Swift

  • iOS之RxSwift

  • iOS开源项目

  • iOS逆向

  • Flutter开发

  • 移动端
  • Android插件化
  • RePlugin
GitLqr
2021-01-05

RePlugin集成Fresco

欢迎关注微信公众号:[FSA全栈行动 👋]

# Fresco版本说明

目前fresco最新版本2.3.0,但无法直接在插件中集成

  • 从1.14开始要求使用AndroidX ,向下选择1.13.0

  • 从1.10.0开始没有armeabi, 向下选择1.9.0

  • 从1.8.0开始强制使用SoLoader,向下选择1.7.1

# 插件集成Fresco遇到的问题

这里需要重点说明一下SoLoader问题,fresco在1.8.0版本开始,就使用SoLoader替换了SoLoaderShim,原文:

SoLoader has been released for a while now, and updated just last week. We've made the decision to add a hard dependency on it and make SoLoader the one and only native code loader that we use in Fresco. API-wise, this means SoLoaderShim is gone. If you were using some other native loading library (e.g. ReLinker), you can either:

keep both and just delete your SoLoaderShim implementation, but this will make your APK size bigger switch to SoLoader for the rest of your app as well and remove the other dependency

插件中的SoLoader在加载时会使用到一个宿主无权操作的路径:/data/user/0/插件包名/lib-main(但这个路径并不存在!),导致宿主在加载插件时,直接报错,因此插件并不会成功启动。

# 插件集成Fresco的解决方案

解决办法有2种:

  • 方案1:fresco降级,使用1.7.1版本。

  • 方案2:宿主compile fresco,插件provided fresco。

方案2需要修改fresco源码,因为provided不支持依赖aar,详情见:https://mp.weixin.qq.com/s/ICjLCTWIeHy58ayp_cEvSQ。

方案2示例中没有具体的操作步骤说明,感觉去折腾Fresco的源码也有点麻烦,1.7.1跟1.9.0相差似乎也不是很大。所以,最终选择方案一,在插件工程中集成1.7.1版本的Fresco:

compile "com.facebook.fresco:fresco:1.7.1"

有时间了再回头研究怎么使用方案2集成~

#插件化#RePlugin
DroidPlugin手札 - home键强杀处理
RePlugin强制退出App

← DroidPlugin手札 - home键强杀处理 RePlugin强制退出App→

最近更新
01
Flutter - Xcode16 还原编译速度
04-05
02
AI - 免费的 Cursor 平替方案
03-30
03
Android - 2025年安卓真的闭源了吗
03-28
更多文章>
Theme by Vdoing | Copyright © 2020-2025 FSA全栈行动
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×