安装snap再安装flutter再安装localsend@Ubuntu(FreeBSD下未成功)

Localsend介绍

localsend是一个跨平台的文件传送软件,可以在Windows、MacOS、Linux、Android和IOS下互相传送文件,只要在同一个局域网即可。

localsend官网:LocalSend

尝试安装localsend,发现需要使用flutter, 安装flutter发现需要snap,于是先安装snap

ubuntu下:apt install snapd

FreeBSD下:pkg install snap (失败,FreeBSD下的软件包并不是我们需要的)

snap介绍

Snap软件包是一种新型的Linux包管理工具,它采用了容器的概念,使得每个应用程序都拥有自己独立的文件和库,从而解决了应用程序之间的依赖问题,使得应用程序更易于管理。

Snap软件包的主要特点是自包含性和跨平台性。每个Snap软件包都包含了应用程序及其所有依赖项,这意味着用户无需担心依赖关系的问题,只需安装Snap软件包即可轻松使用应用程序。此外,Snap软件包的设计也考虑了跨平台性,使得同一个Snap软件包可以在不同的Linux发行版上运行,从而提高了软件的可移植性。

是在FreeBSD使用linux兼容安装的ubuntu,刚开始使用apt install snap安装没成功,以为就不支持。后来发现要使用apt install snapd 来安装就可以了。

兼容模式下除了最后不能使用Xwindows,其它跟普通ubuntu一模一样。

在ubuntu@FreeBSD安装snap

apt install snapd

Flutter介绍

Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。Flutter 支持跨平台、原生、开源免费,具有响应式框架、富有表现力和灵活的UI,以及跨平台自绘引擎等特点。

flutter官网文档:选择你的开发平台,开始使用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

 用snap安装flutter

sudo snap install flutter --classic

然后配置中文地址(国内加速):

export PUB_HOSTED_URL="https://pub.flutter-io.cn"

export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

然后flutter doctor ,看到提示:

Telemetry is not sent on the very first run. To disable reporting of telemetry,
run this terminal command:

    flutter --disable-analytics

这样就算是安装好了。但是后面碰到很多小坑,所以再详细记录一下。

安装flutter详细步骤

官方手册:在中国网络环境下使用 Flutter | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

直接到官网下载flutter tar包,解压后发现可以使用

tar -xvf flutter_linux_3.19.3-stable.tar.xz 
cd flutter
./bin/flutter 

在.profile文件中最后一句加入路径,这样就可以直接使用flutter命令了

PATH="$PATH:/home/linuxskywalk/tools/flutter/bin"

 也可以在.shrc文件中加入:

set PATH=/home/skywalk/download/flutter/bin:$PATH

 按照flutter手册,加入环境变量配置:

# 将 PUB_HOSTED_URL 设置为镜像站点。export PUB_HOSTED_URL="https://pub.flutter-io.cn"# 将 FLUTTER_STORAGE_BASE_URL 设置为镜像站点。export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

 如果不加,国内是无法自动下载软件的。

配置好后flutter后,开始安装localsend

编译安装localsend

下载localsend,解压缩。刚开始是从官网下载压缩文件,后来也尝试了git下载源代码:git clone https://github.com/localsend/localsend

然后到localsend/app 目录(~/tools/localsend-1.14.0/app),执行:

flutter build linux

如果没有报错,就算成了!

但是有报错,详见调试部分,开始一步步解决报错问题。。

首先:

使用flutter doctor查找问题

发现linux部分有3个问题,按照提示安装三个软件包:

执行

sudo apt install libgtk-3-dev clang ninja-build 

后面build还有报错,根据提示安装下面两个库,解决build问题:

sudo apt install libappindicator3-1 libappindicator3-dev

还有报错需要修改文件:

修改pubspec.yaml文件

参考:https://github.com/fluttercandies/flutter_photo_manager/issues/1021

Adding this to pubspec.yaml worked as temporary fix, ty @den0206

dependency_overrides: photo_manager: ^3.0.0-dev.2

当前还存在的问题:

flutter build linux 之后报错,见最后一个调试问题。

目前没有解决。

=====================================

解决问题的分界线

后来才明白,原来pubspec.yaml文件那里少修改了一个地方,

还需要修改这里:

dependencies:wechat_assets_picker: ^8.9.0-dev.1

修改之后,再run,有报错:

(localsend_app:253856): Gtk-WARNING **: 11:39:19.837: cannot open display

这其实证明基本已经成功了。只是没有窗体报错罢了。

进入xwindows窗口,再执行flutter run ,哇,localsend 终于成功运行了!

android版本,直接下载:https://github.com/localsend/localsend/releases/download/v1.14.0/LocalSend-1.14.0.apk

windows版本,直接下载:https://github.com/localsend/localsend/releases/download/v1.14.0/LocalSend-1.14.0-windows-x86-64.exe

总结:

localsend是一个非常不错的文件传送软件,只是在linux安装的时候,需要修改少量代码,增加了一定难度。

调试

编译flutter报错

 flutter build linux
Resolving dependencies... (1:42.1s)
Git error. Command: `git clone --mirror https://github.com/Tienisto/tray_manager.git /home/linuxskywalk/.pub-cache/git/cache/tray_manager-ad808f1c5d07229907508d5b7c74bd2e20923421`
stdout:
stderr: Cloning into bare repository '/home/linuxskywalk/.pub-cache/git/cache/tray_manager-ad808f1c5d07229907508d5b7c74bd2e20923421'...
fatal: unable to access 'https://github.com/Tienisto/tray_manager.git/': Failed to connect to github.com port 443: Connection timed out
exit code: 128

换用国内镜像

flutter doctor报错

[✗] Linux toolchain - develop for Linux desktop
    ✗ clang++ is required for Linux development.
      It is likely available from your distribution (e.g.: apt install clang), or
      can be downloaded from https://releases.llvm.org/
    ✗ ninja is required for Linux development.
      It is likely available from your distribution (e.g.: apt install
      ninja-build), or can be downloaded from
      https://github.com/ninja-build/ninja/releases
    ✗ GTK 3.0 development libraries are required for Linux development.
      They are likely available from your distribution (e.g.: apt install
      libgtk-3-dev)

根据linux部分的报错,

执行:sudo apt install libgtk-3-dev clang ninja-build

flutter build报错 because localsend_app depends on path 1.8.3,

$ flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you
trust this source!
Resolving dependencies... (3.8s)
Note: path is pinned to version 1.9.0 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.


Because localsend_app depends on flutter_localizations from sdk which depends on
  path 1.9.0, path 1.9.0 is required.
So, because localsend_app depends on path 1.8.3, version solving failed.


You can try the following suggestion to make the pubspec resolve:
* Try upgrading your constraint on path: flutter pub add path:^1.9.0

按照提示执行:flutter pub add path:^1.9.0

这里失误了,应该是:flutter pub add path:^1.8.3

新报错The `system_tray` package requires ayatana-appindicator3-0.1 or appindicator3-0.1.

$ flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you
trust this source!

CMake Error at flutter/ephemeral/.plugin_symlinks/system_tray/linux/CMakeLists.txt:29 (message):


  The `system_tray` package requires ayatana-appindicator3-0.1 or
  appindicator3-0.1.


Building Linux application...     

Adding this to pubspec.yaml worked as temporary fix, ty @den0206

解决问题方法,执行:sudo apt install libappindicator3-1 libappindicator3-dev

报错:Error: Type 'DecoderCallback' not found.

flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you
trust this source!

ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:71:5: Error: Type 'DecoderCallback' not found.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:96:5: Error: Type 'DecoderCallback' not found.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:71:5: Error: 'DecoderCallback' isn't a type.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: ../../../.pub-cache/hosted/pub.flutter-io.cn/photo_manager-2.8.1/lib/src/internal/image_provider.dart:96:5: Error: 'DecoderCallback' isn't a type.
ERROR:     DecoderCallback decode, // ignore: deprecated_member_use
ERROR:     ^^^^^^^^^^^^^^^
ERROR: Target kernel_snapshot failed: Exception
Building Linux application...                                           
Build process failed

解决了这个问题,参见issue:About DecoderCallback cannot found error( Type 'DecoderCallback' not found.) · Issue #1021 · fluttercandies/flutter_photo_manager · GitHub

Adding this to pubspec.yaml worked as temporary fix, ty @den0206

dependency_overrides: photo_manager: ^3.0.0-dev.2

重新在另一台机器做实验,发现报错: localsend_app depends on path 1.8.3,

 flutter build linux
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure
you trust this source!
Resolving dependencies... (12.7s)
Note: path is pinned to version 1.9.0 by flutter_localizations from the flutter SDK.
See https://dart.dev/go/sdk-version-pinning for details.


Because localsend_app depends on flutter_localizations from sdk which depends
  on path 1.9.0, path 1.9.0 is required.
So, because localsend_app depends on path 1.8.3, version solving failed.

尝试执行:flutter pub add path:^1.8.3

解决问题

报错:Error: Type 'AssetEntityImageProvider' not found.

原来是pubspec.yaml文件少修改了一个地方。

dependencies:wechat_assets_picker: ^8.9.0-dev.1

报错: cannot open display:

EXTERNAL_USB/tools/localsend/app$ flutter run
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure
you trust this source!
Launching lib/main.dart on Linux in debug mode...
Building Linux application...                                           

(localsend_app:253856): Gtk-WARNING **: 11:39:19.837: cannot open display:
Error waiting for a debug connection: The log reader stopped unexpectedly, or
never started.
Error launching application on Linux.

因为是ssh登录的,所以有这个报错。到xwindows下执行,问题解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/543837.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现酒店客房管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现酒店客房管理平台系统演示 摘 要 随着人们的物质水平的提高,旅游业和酒店业发展的速度越来越快。近年来,市面上酒店的数量和规模都在不断增加,如何提高酒店的管理效率和服务质量成为了一个重要的问题。伴随着信息技术的发…

TT-100K数据集,YOLO格式

TT-100K数据集YOLO格式,分为train、val和test,其中train中共有6793张图片,val中共有1949张图片,test中共有996张图片。数据集只保留包含图片数超过100的类别。共计46类。

电大搜题:开启学习新时代

身处信息化时代,学习的方式已经发生了巨大的变革。在这个多元化的学习环境中,传统的学习模式已经无法满足现代学习者的需求。然而,电大搜题应运而生,为学习者提供了一个高效、便捷的学习途径。 电大搜题,作为黑龙江开…

浅易理解:卷积神经网络(CNN)

浅易理解卷积神经网络流程 本文的目录: 1 什么卷积神经网络 2 输入层 3 卷积层 4 池化层 5 全连接层 传统的多层神经网络只有 输入层、隐藏层、输出层 卷积神经网络(CNN): 在多层神经网络的基础上,加入了更加有效的特征学习部分…

三极管工作原理及典型电路

一、三极管的工作原理 三极管,也被称为双极型晶体管或晶体三极管,是一种电流控制元件。主要功能是将微弱的电信号放大成幅度值较大的电信号,工作在饱和区和截止区时同时也被用作无触点开关。 根据结构和工作原理的不同,三极管可以…

传输层/UDP/TCP协议

再谈端口号 TCP/IP协议用“源IP”,“源端口号”,“目的IP”,“目的端口号”,“协议号”,这样一个五元组来标识一个通信(可以用netstat -n来查看)。 端口号的划分和知名端口号 我们之前就说过&am…

Linux网络编程: 以太网帧Frame/ARP/RARP详解

一、TCP/IP五层模型 物理层(Physical Layer):物理层是最底层,负责传输比特流(bitstream)以及物理介质的传输方式。它定义了如何在物理媒介上传输原始的比特流,例如通过电缆、光纤或无线传输等。…

SDN网络简单认识(1)——概述

一、概述 软件定义网络(Software Defined Networking,SDN)是一种网络架构理念,旨在使网络灵活和可编程,从而更好地支持动态和高度可扩展的计算环境。SDN通过抽象网络的控制层(决策层)和数据层&a…

JavaScript 基础知识

一、初识 JavaScript 1、JS 初体验 JS 有3种书写位置&#xff0c;分别为行内、内部和外部。 示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…

多种智能搜索算法可视化还原 3D 魔方

一、写在前面 许久没有写图形化界面的程序了&#xff0c;最近学习了一些经典的盲目搜索算法与智能搜索算法&#xff0c;正好拿来还原三阶魔方&#xff01;试试手&#xff01; 提前声明 我不是专业搞人工智能的&#xff0c;理论或者实现过程有些许错误也很正常&#xff0c;评论…

linux最佳入门(笔记)

1、内核的主要功能 2、常用命令 3、通配符&#xff1a;这个在一些启动文件中很常见 4、输入/输出重定向 意思就是将结果输出到别的地方&#xff0c;例如&#xff1a;ls标准会输出文件&#xff0c;默认是输出到屏幕&#xff0c;但是用>dir后&#xff0c;是将结果输出到dir文…

学点Java打小工_Day4_数组_冒泡排序

1 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤 数据结构&#xff1a;将数据按照某种特定的结构来存储 设计良好的数据结构会导致良好的算法。 ArrayList、LinkedList 数组是最简单的数据结构。 数组&#xff1a;存放同一种类型数据的集合&#xff0c;在…