首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Flutter android生成的.so文件里面有什么?

Flutter是一种跨平台的移动应用开发框架,可用于快速构建高性能、美观且可扩展的移动应用程序。Flutter提供了一个统一的代码库,可以同时在Android和iOS上运行。Flutter使用Dart语言编写,它提供了一种革命性的编程方式,通过自绘引擎将用户界面渲染为原生控件,使应用程序的性能接近原生应用。

在Flutter中,当我们构建一个Android应用时,会生成一个.so文件(共享对象文件),这是一个包含了编译后的Dart代码的二进制文件。.so文件在Android系统中被称为共享库,用于存储一组可重用的函数和代码段。这些.so文件可以在Android设备上直接执行,无需再次编译。

.so文件里面包含以下内容:

  1. Flutter Engine:Flutter引擎是Flutter的核心部分,负责处理Flutter应用的逻辑、布局和绘制。它是C/C++代码编写的,与平台无关,将Dart代码转换为原生代码,并与设备的操作系统进行交互。
  2. Dart运行时环境:.so文件中还包含了Dart运行时环境,它是一个用于解释和执行Dart代码的虚拟机。它提供了一些必要的功能和工具,使得Dart代码能够在Android设备上运行。
  3. Flutter框架库:.so文件中还包含了Flutter框架库,这些库提供了一系列的API和工具,用于构建用户界面、处理用户交互、进行网络通信等功能。

总而言之,Flutter android生成的.so文件里面包含了Flutter引擎、Dart运行时环境和Flutter框架库,这些内容组成了一个完整的移动应用程序的运行环境。通过.so文件,Flutter应用能够在Android设备上高效地执行,并且具备良好的性能和稳定性。

关于腾讯云相关产品和产品介绍链接地址,请参考腾讯云官方文档或咨询腾讯云技术支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

安卓so文件解密_Android是什么文件

前言 一道so文件动态加解密的CrackMe,运行时解密要执行的函数,且在执行后立马加密CrackMe:dex文件加的数字壳,so文件无壳,因为反调试,所以so文件采用全静态分析 分析环境:脱壳工具:FART...libnative-lib.so文件中的test函数 2.3 分析so文件 首先分析so文件提前加载的三处函数(init、init_array、JNI_OnLoad) 用readelf -d查看是否有init...JNI_OnLoad函数,导入jni.h头文件,用于解析JNI函数 接着分析ooxx函数 sub_8930函数的内容如下: 其中sub_8A88函数的作用是获取so文件的加载基址,如下: 获取so...头文件解析ELF文件的结构体 在sub_8930函数中,根据上面得到的so文件的加载基址、xxoo函数的相对虚拟地址和大小等信息,接着就是修改内存属性,解密xxoo函数,还原内存属性,最后刷新指令缓存,...(“android.app.ActivityThread”).currentApplication(); //1.获取app的文件目录files,/data/user/0/$package_name/files

1.6K40
  • ★ Android基础篇 初步NDK开发 .SO文件生成与JIN调用

    就是生产个so文件,并且可以调用C里面的方法。但为什么要写一篇满论坛多的是的文章呢,就是因为我踩了N多个坑,希望可以帮助大家,让大家少走弯路。...之后就会生成一个.h的文件 创建一个.c的文件,include后面的是生成.h文件的名字 里面的(JNIEXPORT jstring JNICALL Java_com_example_lxndk_JniTest_getString...然后我发现我貌似缺少了东西,Android.mk… 创建Android.mk文件 # 构建系统提供的宏函数 my-dir 将返回当前目录(包含 Android.mk 文件本身的目录)的路径,基本上是固定的...) # 需要构建模块的名称,会自动生成相应的 libNDKSample.so 文件,每个模块名称必须唯一,且不含任何空格 LOCAL_MODULE := jary # 包含要构建到模块中的 C 或...C++ 源文件列表 LOCAL_SRC_FILES := jary.c # 指定这个模块里会用到哪些原生 API,详见:https://developer.android.google.cn/ndk/

    1.1K10

    Flutter里的Widget 到底是什么

    Widget 到底是什么呢? Widget 是 Flutter 功能的抽象描述,是视图的配置信息,同样也是数据的映射,是 Flutter 开发框架中最基本的概念。...Flutter 的核心设计思想便是“一切皆 Widget”。...这3者之间的关系如下: Widget Widget 是 Flutter 世界里对视图的一种结构化描述,你可以把它看作是前端中的“控件”或“组件”。...Flutter 渲染过程,可以分为这么三步: 首先,通过 Widget 树生成对应的 Element 树; 然后,创建相应的 RenderObject 并关联到 Element.renderObject...其中,布局和绘制在 RenderObject 中完成,Flutter 采用深度优先机制遍历渲染对象树,确定树中各个对象的位置和尺寸,并把它们绘制到不同的图层上。

    19710

    Android的.so文件你需要知道那些知识

    .so文件的前世今生 早期的Android系统几乎只支持ARMv5的CPU架构,而现在它可以支持7种,几乎涵盖了市面上大部分的CPU架构。...在Android中调用动态库文件(*.so)都是通过jni的方式。...比较常见的百度地图等sdk一般都会提供好几套的架构库。 ? Android平台生成.so文件 说了这么多,那么如何在Android平台上生成.so文件呢?...生成.so文件 其实到这一步就已经完成了,那么我们怎么验证我们是否成功的创建了.so文件呢?...每个支持的CPU架构都需要一套对应的.so文件 这个就好比32位的软件没办法运行在64位的CPU上,必须为每一个CPU架构提供一套.so文件。 参考:Android中.so文件的Hook

    1.5K50

    【CMake教程】(四)CMake 配置生成lib或者so的库文件

    (1)系列教程介绍   上面几个教程我们的程序都是生成可执行文件。但是我们在合作开发算法的时候经常需要交付的是一个模块,该模块提供特定的算法功能,用于给整体的项目进行调用。...安装cmake: sudo apt install cmake (3)设置设置我们的程序输出为lib文件   配置输出库文件(lib和so)主要是通过函数add_subdirectory进行配置,使用STATIC...... ...) (4)使用CMake进行编译 CMake在生成文件的过程中会生成很多中间缓存文件,为了使项目更简洁,文件路径更清楚,一般会在项目的root目录下建立一个文件夹,用于存储CMake...生成的中间文件。...命令生成makefile文件 cmake

    12.8K30

    HTML文件里的!Doctype有什么作用?

    所以,我仔细研究了一下DOCTYPE 的作用。 DOCTYPE是什么?...DOCTYPE是document type的简写,它并不是 HTML 标签,也没有结束标签,它是一种标记语言的文档类型声明,即告诉浏览器当前 HTML 是用什么版本编写的。...DOCTYPE声明中指出阅读程序应该用什么规则来解释文档中的标记。在Web文档的情况下,阅读程序通常是浏览器或者校验器这样的一个程序,规则是W3C所发布的一个文档类型定义 DTD 中包含的规则。...我们还可以通过W3C提供的验证工具来检查页面的内容是否符合在DOCTYPE中声明的标准。 常见问题 如果不声明doctype会发生什么?如何解决?...如果你的页面添加了那么,那么就等同于开启了标准模式,那么浏览器就得老老实实的按照W3C的标准解析渲染页面,这样一来,你的页面在所有的浏览器里显示的就都是一个样子了。

    3.1K30

    Android tombstone文件是如何生成的

    因为android系统是运行在Linux Kernel内核之上的,当内核出现异常,则内核异常机制会分辨出是什么原因,处理不了的直接panic。...当android系统出现异常时,会在/data/tombstones目录生成对应的tombstone文件 root:/data/tombstones # ls -l -rw-r----- 1 tombstoned...,我们目前只贴一部分,本节的内容不是分析tombstone内容的含义,本节重点分析此文件生成的过程,明白了是如何生成的,后续再分析此文件的内容是什么含义,以及如何去分析解决此类问题。...,通过/proc/PID/cmdline获取进程的名字 获取此进程总共打开了多个文件,通过/proc/PID/fd/就可以获取此进程打开了多少个文件,每个文件都有一个文件描述符fd { ATRACE_NAME...文件中 则就在/data/tombstones下生成了此次对应的tombstone_XX文件

    5.7K21

    Android 的 so 文件加载机制提问源码总结参考资料

    所涉及的整个流程应该都在这个方法里,如果可以找到,会返回 so 文件的绝对路径,然后交由 doLoad() 去加载。...abi 兼容 so 文件加载的流程,及应用运行在 32 位或 64 位的依据我们都梳理完了,以上内容足够掌握什么场景下,该去哪些目录下加载 so 文件的判断能力了。...,你们会发现,蛮多文章里都会说:arm64-v8a 的设备能够向下兼容,支持运行 32 位的 so 文件,如 armeabi-v7a。...这句话没错,64 位的设备能够兼容运行 32 位的 so 文件,但别只看到这句话啊,良心一些的文章里还有另一句话:不同 cpu 架构的 so 文件不能够混合使用,例如,程序运行期间,要么全部使用 arm64...有些文章里也说了,如果在 64 位的设备上,你选择使用 32 位的 so 文件,那么此时,你就丢失了专门为 64 位优化过的性能(ART,webview,media等等 )。

    2K50

    Android平台DNG文件的生成与读取

    在之前的文章中讲述了如何使用Camera2拍摄RAW图并保存为DNG文件 Android 手机如何拍摄RAW图,本文主要通过源码分析一下DngCreator写文件的基本过程和如何读取DNG文件 什么是...DNG遵循所有TIFF6.0的格式规则,所以把文件后缀名dng改为tif/tiff后都是可以直接预览图片的 用mac自带的预览工具查看DNG文件时可以看到dng文件是不支持直接编辑的 什么是TIFF文件...,lossless jpeg和任意数据宽度的原始无压缩数据都可以方便的嵌入到TIFF中去,所以在数字影像,遥感和医学等领域都获得了广泛的应用 DngCreator源码分析 通过DngCreator生成DNG...nativeDestroy释放NativeContext 源码分析4个主要步骤 frameworks/base/core/jni/android_hardware_camera2_DngCreator.cpp...DngCreator类加载的时候准备依赖的一些jni对象 初始化DngCreator实例的时候,准备NativeContext Java层调用writeImage方法时,内部主要分为两个步骤 第一步是生成

    2.2K30

    Android项目开发填坑记-so文件引发的攻坚战

    、couldn't find "libcyberplayer-core.so"等等 尝试的解决方案: 1.在gradle里指定包含的so文件 android { ......3.在src/main/里复制一份so文件: 在src/main/里创建一个jniLibs文件夹,然后再建一个armeabi-v7a文件夹,最后把libcyberplayer-core.so和libcyberplayer.so...然而,为什么项目A就没有这样的问题呢? 然而,为什么项目A就没有这样的问题呢? 然而,为什么项目A就没有这样的问题呢?...如果你有两个文件夹armeabi和arm64-v8a,两个文件夹,armeabi里面有a.so 和 b.so,arm64-v8a里面只有a.so,那么arm64-v8a的手机在用到b的时候发现有arm64...,要么armeabi里面有的so库,arm64-v8a里面也必须有 于是我使用ROOT之后的手机,去/data/app/-x的lib和安装包里证实了一下: 项目A中的

    1.4K30

    Flutter 产物分析与减包方案

    所谓减包,前提条件是必须知道产物内容有什么?产物里有哪些部分可以减?被减掉的部分我们要怎么加回来?...gn:负责生成 ninja 编译需要的 build 文件,特别像 Flutter 这种跨多种操作系统平台跨多种 CPU 架构的,就需要通过 gn 生成很多套不同的 ninja build 文件。...第三步,使用 ninja 配合 gn 生成的配置文件来编译 engine,想编译什么平台架构的 engine 就使用 gn 生成一份配置,之后 ninja 执行编译即可。如下图所示: ?...文件,而 libflutter.so 即引擎产物,icudtl.dat 依然是国际化支持文件,最后一些 Java 是暴露给业务侧调用 Flutter 的接口。...步骤如下: 挪走 libapp.so,libflutter.so,flutter_assets 等文件,发布到云端 通过定制 flutter.jar 中的 FlutterLoader.java 逻辑,来加载自定义位置的库路径

    2.6K40

    给 Android 和 iOS 开发人员不一样的 Flutter 基础讲解

    原生的打包过程输出也被重定向输出到这里; lib 目录,用来写 dart 代码的,入口文件一般是 main.dart; pubspec.yaml 文件,Flutter 工程里最重要的文件之一,不管是静态资源引用....flutter_plugins 和 .flutter-plugins-dependencies 的文件,它们是 git ignore 的文件,Android 和 iOS 中会根据这个文件对本地路径的插件进行引用...release 打包后的 Android 会生成 app.so 和 flutter.so 两个动态库;iOS 会生成 App.framework 和 Flutter.framework 两个文件。...这个问题看过网上有不少文章解释得很奇怪,存在一些误导性的解释,其实这个问题很简单: Flutter 里一切皆是对象, 就连 int 、 double 、bool 也是对象,你觉得对象传递的是什么?...image 而对于这个操作,只需要要去 dart vm 看看 Double 对象在进行加减乘除时做了什么,如下图所示,看完相信就知道方法里传递 int 、double 对象后进行操作会是什么样的结果。

    1.5K20

    2022 年 Flutter 适合我吗?Flutter VS Other 量化对比

    、百度地图 这些数据来源于 Android 的 Apk ,以是否存在libflutter.so 、libreactnativejni.so 和 libweexcore.so 等动态库为依据,如果项目使用了插件化下发可能会被忽略...“Compose 上 Kotlin/JVM 为 JVM 和 Android 平台生成 jar/aar 文件、通过 Kotlin/Native 为 IOS 平台生成 framework 文件、通过 Kotlin.../JS 为 Web 平台生成 JavaScript 文件,最终调用的还是原生 API,这使得采用 Compose Multiplatform 不会导致性能损耗,且不会像 Flutter 那样明显增大应用体积...(Android) 是最常见的问题,为什么说这个?...当然,如果不上架 Google Play ,那么 Android 热更新 so 动态库本来就不是什么门槛,所以如果你其实可以在 Android 上粗暴地使用已有的插件化方案解决。

    4K30

    Deferred Components-实现Flutter运行时动态下发Dart代码

    Flutter代码编译后,所有的业务逻辑都会打包在libapp.so一个文件里。但如果使用了延迟加载,便可以分拆为多个so文件,甚至一个Dart文件也可以编译成一个单独的so文件。...flutter: deferred-components: 4.在flutter工程里新增box.dart和some_widgets.dart两个文件,DeferredBox就是要延迟加载的控件,...3.3 本地验证 运行 flutter build appbundle --release --target-platform android-arm64 命令生成app-release.aab文件。...apk,继续解压此apk文件,在生成的scoreComponent-arm64_v8a_2文件夹里找到lib/arm64-v8a/libapp.so-2.part.so 文件。...将第3步找到的lipase.so-2.part.so push到指定文件夹下,命令如下 adb push libapp.so-2.part.so /storage/emulated/0/Android/

    2.1K10

    Flutter与Native(一)

    一、初始项目 1、现有目录 现有一个最简单的iOS项目MyApp,将iOS项目和Android项目分别放入放入HybridApp文件夹中,目录结构如下: HybridApp ├── Android └...── AndroidProject └── iOS └── MyApp 2、建立Flutter模块 flutter create -t module xxx 在HybridApp文件夹的根目录执行以下命令....iOS的隐藏文件夹,里面有个文件Flutter/Generated.xcconfig,查看可以看到里面有一些flutter的信息 我们需要将将这个文件里的一些信息导入到iOS项目中,做法如下: ==...>新建一个FlutterDebug.config的文件, 内容为导入Generated.xcconfig文件路径: #include "../.....flutter_tools/bin/xcode_backend.sh" embed 注意将Run Scrpt移到列表的前方 运行项目,在iOS项目文件夹内会生成一个Flutter的文件夹,将这个文件夹添加到项目中

    87520
    领券