Flutter插件

Flutter只是一个UI框架,运行在宿主平台上,Flutter本身无法提供一些系统能力,比如蓝牙、相机、GPS等。插件是一种特殊的包,和纯dart包的主要区别是插件中除了dart代码,还包括特定平台的代码。

插件实现原理

Flutter提供了平台通道(platform channel)用于Flutter和原生平台的通信,通信本质上是一个远程调用(RPC),通过消息传递实现:

  • 应用的Flutter部分通过平台通道将调用消息发送到宿主
  • 宿主监听平台通道,并接收改消息。然后调用平台API,并将响应发送回Flutter
Read More

Flutter项目结构

文件夹目录

最基础的helloworld项目结构如下:

  • .dart_tool:记录了一些dart工具库所在的位置和信息
  • .idea:android studio 是基于idea开发的,.idea 记录了项目的一些文件的变更记录
  • android:Android项目文件夹
Read More

AppBar

概述

AppBar(应用栏)由一个工具栏和其他小部件组成,应用栏通常使用IconButton公开一个或多个操作,使用PopMenuButton作为点击后展开的菜单。

AppBar通常用于Scaffold.appBar属性,它将应用栏固定高度的小部件放置在屏幕顶部。对于可滚动的应用栏,则使用SliverAppBar,它将AppBar嵌入到sliver中。

常用属性

  • leading → Widget - 在标题前面显示的一个控件,在首页通常显示应用的 logo;在其他界面通常显示为返回按钮。
Read More

Android逆向记录

1
2
3
4
5
6
7
8
9
10
11
12
13
#反编译apk文件
apktool d app-release.apk

如果出现编译assets文件夹中的dex文件失败,则使用--only-main-classes参数。

#编译修改后的应用
apktool b app-release -o output.apk

#对编译好的apk进行签名
apksigner sign --ks keystore文件路径 output.apk

~/Android/sdk/build-tools/29.0.3/apksigner sign --ks ~/Android/tools/keys/test_keystore lizhi_output.apk

签名参考:https://developer.android.com/studio/command-line/apksigner?hl=zh-cn

META-INF文件夹的内容

MINFEST.MF:声明了资源,与CERT.SF文件相似。
CERT.RSA:公钥证书。keytool -printcert -file CERT.RSA 输出证书内容

Read More