uos打包——appimage包转uos的deb包

这篇文章主要介绍appimage包如何转化为符合uos规范的deb包

***已做快速打包工具 *** upTool

一,获取appimage包并解压

1,本文档使用obsidian程序进行演示从appimage包改成uos的deb包的过程示例.

2,从obsidian官网下载appimage包

3,在桌面创建obsidian文件夹,将下载好的appimage包放到该目录

uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage
uos@uos-PC:~/Desktop/obsidian$ 

4,使用 --appimage-extract对appimage进行解包,解包完成的内容都放到了squashfs-root目录

uos@uos-PC:~/Desktop/obsidian$ chmod +x Obsidian-0.12.3.AppImage 
uos@uos-PC:~/Desktop/obsidian$ ./Obsidian-0.12.3.AppImage --appimage-extract
uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root
uos@uos-PC:~/Desktop/obsidian$ 

二,制作uos规范目录

1,uos规范目录可以参考官方其他文档,这里不做过多叙述

2,使用脚本来制作符合uos规范的目录,将脚本放到obsidian文件夹下,参考脚本如下

mkdir -p  test/DEBIAN/

echo  "----------------------创建control文件----------------------"
touch test/DEBIAN/control
read -p "(输入Package名):" package
read -p "(输入Version名):" version
read -p "(输入Architecture名):" architecture
read -p "(输入Section名):" section
read -p "(输入Maintainer名):" maintainer
read -p "(输入Depends名):" depends
read -p "(输入Homepage名):" homepage

cat>test/DEBIAN/control<<EOF
Package: $package
Version: $version
Architecture: $architecture
Section: $section
Maintainer: $maintainer
Depends: $depends
Priority: optional
Homepage: $homepage
Description: 欢迎使用$package
EOF

echo  "----------------------control文件创建完成----------------------"

mkdir -p  test/opt/apps/$package/entries/applications/
mkdir -p  test/opt/apps/$package/files/bin
mkdir -p  test/opt/apps/$package/entries/icons
touch  test/opt/apps/$package/info
echo  "----------------------创建info文件----------------------"
read -p "(输入name名):" name
cat > test/opt/apps/$package/info <<EOF
 {
	 "appid": "$package",
	 "name": "$name",
	 "version": "$version",
	 "arch": ["amd64","arm64","mips64el"],
	 "permissions": {
	     "autostart": false,
	     "notification": false,
	     "trayicon": false,
	     "clipboard": false,
	     "account": false,
	     "bluetooth": false,
	     "camera": false,
	     "audio_record": false,
	     "installed_apps": false
   }
 }
EOF
echo  "----------------------info创建完成----------------------"


echo "-----------------------desktop文件创建--------------------"
touch  test/opt/apps/$package/entries/applications/$package.desktop
read -p "(输入Comment):" comment
read -p "(输入Exec):" exece
read -p "(输入GenericName):" genericname
read -p "(输入Icon):" icon
read -p "(输入Name):" name
cat > test/opt/apps/$package/entries/applications/$package.desktop <<EOF
[Desktop Entry]
Categories=Utility;Calculator;
Comment=$comment
Exec=$exece
GenericName=$genericname
Icon=$icon
Name=$name
StartupNotify=true
Type=Application
EOF

3, 新建uos_standard.sh文件,将上边脚本复制到脚本文件,执行脚本,制作打包目录,按照要求的内容去填写,不确定的内容可以稍后修改,执行完成后会生成test文件夹

uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$ chmod +x uos_standard.sh 
uos@uos-PC:~/Desktop/obsidian$ ./uos_standard.sh 
----------------------创建control文件----------------------
(输入Package名):md.obsidian
(输入Version名):0.12.3
(输入Architecture名):amd64
(输入Section名):x11
(输入Maintainer名):uos uos@uniontech.com
(输入Depends名):
(输入Homepage名):https://obsidian.md/
----------------------control文件创建完成----------------------
----------------------创建info文件----------------------
(输入name名):obsidian
----------------------info创建完成----------------------
-----------------------desktop文件创建--------------------
(输入Comment):obsidian
(输入Exec):
(输入GenericName):obsidian
(输入Icon):
(输入Name):obsidian
uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root  test  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$

三,修改test目录

1,修改control文件

a,进入test/DEBIAN目录,因为这里不需要安装额外的依赖,所以将control文件中的Depends字段删除,不删除会影响测试。如果其他程序运行过程中发现需要依赖,可以在该字段填写。

b,修改前:

Package: md.obsidian
Version: 0.12.3
Architecture: amd64
Section: x11
Maintainer: uos uos@uniontech.com
Depends: 
Priority: optional
Homepage: https://obsidian.md/
Description: 欢迎使用md.obsidian

c,修改后:

Package: md.obsidian
Version: 0.12.3
Architecture: amd64
Section: x11
Maintainer: uos uos@uniontech.com
Priority: optional
Homepage: https://obsidian.md/
Description: 欢迎使用md.obsidian

2,修改bin目录

a,将squashfs-root目录下的所有文件移动到test/opt/apps/md.obsidian/files/bin/bin目录下

uos@uos-PC:~/Desktop/obsidian$ cp -r squashfs-root/* test/opt/apps/md.obsidian/files/bin/
uos@uos-PC:~/Desktop/obsidian$ ls test/opt/apps/md.obsidian/files/bin/
AppRun                  libffmpeg.so            locales           snapshot_blob.bin
chrome_100_percent.pak  libGLESv2.so            obsidian          swiftshader
chrome_200_percent.pak  libvk_swiftshader.so    obsidian.desktop  usr
chrome-sandbox          libvulkan.so.1          obsidian.png      v8_context_snapshot.bin
icudtl.dat              LICENSE.electron.txt    resources         vk_swiftshader_icd.json
libEGL.so               LICENSES.chromium.html  resources.pak
uos@uos-PC:~/Desktop/obsidian$

b,修改bin目录下chrome-sandbox的权限,先将属主和属组改为root, 再将执行权限改为4755,必须改属主,再改权限。

uos@uos-PC:~/Desktop/obsidian$ cd test/opt/apps/md.obsidian/files/bin/
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ ls -l chrome-sandbox 
-rwxr-xr-x 1 uos uos 4708288 5月  30 10:47 chrome-sandbox
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ sudo chown root:root ./chrome-sandbox 
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ sudo chmod 4755 ./chrome-sandbox 
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ ls -l chrome-sandbox 
-rwsr-xr-x 1 root root 4708288 5月  30 10:47 chrome-sandbox
uos@uos-PC:~/Desktop/obsidian/test/opt/apps/md.obsidian/files/bin$ 

3,修改entries/icons目录

a,找到解后的icons目录,替换entries/icons目录,本例子解包后icons在usr/share目录下

四,修改entries/applications/desktop文件

1,修改Exec字段,将Exec字段改为程序安装后可执行文件的目录/opt/apps/md.obsidian/files/bin/AppRun

2,修改Icon字段,将Icon字段改为程序安装后图标的目录/opt/apps/md.obsidian/entries/icons/hicolor/48x48/apps/obsidian.png

五,压包和安装

1,使用dpkg-deb -b test/ 输出目录 ,将按照新规则放置好的目录压入deb包内

uos@uos-PC:~/Desktop/obsidian$ ls
Obsidian-0.12.3.AppImage  squashfs-root  test  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$ dpkg-deb -b test/ .
dpkg-deb: 正在 './md.obsidian_0.12.3_amd64.deb' 中构建软件包 'md.obsidian'。
uos@uos-PC:~/Desktop/obsidian$ ls
md.obsidian_0.12.3_amd64.deb  Obsidian-0.12.3.AppImage  squashfs-root  test  uos_standard.sh
uos@uos-PC:~/Desktop/obsidian$

2,使用dpkg -i 安装或者双击deb包安装,检查启动器是否有改程序且能正常使用和卸载,如果正常,打包完成。

3,启动器中程序名和desktop文件的Name字段对应

3,打包过程中遇到的问题,随时可以在QQ群交流。QQ群号:942418736

六,Q/A

1

<think>好的,用户的问题是关于如何在Unity中打包适配信创系统的应用,并希望得到兼容性配置的教程。首先,我需要明确信创系统的背景和要求。信创系统通常指的是国产化的操作系统,比如统信UOS、银河麒麟等,这些系统基于Linux内核,可能使用不同的架构,如ARM或MIPS,因此需要特别注意兼容性配置。 接下来,我需要回忆Unity打包Linux平台的一般流程。Unity支持导出为Linux的独立应用程序,但可能需要调整构建设置和目标架构。用户提到的兼容性配置可能涉及依赖库、图形接口、系统服务集成等方面。此外,信创系统可能有特定的安全认证或系统接口要求,需要查阅相关文档。 然后,结合用户提供的引用内容,引用[1]提到前端框架的兼容性和API接口,引用[2]涉及BIM模型导入。虽然这些引用主要是关于三维引擎和模型导入的,但可以联想到在Unity中可能需要处理类似的兼容性问题,比如确保使用的插件或API在信创系统上可用。 需要考虑的步骤可能括:设置正确的构建目标为Linux,选择适合的架构(x86或ARM),处理系统依赖库,确保图形驱动兼容(如OpenGL版本),以及可能的系统服务集成。此外,可能还需要处理文件路径的差异,比如信创系统可能使用不同的目录结构。 用户可能需要具体的配置教程,比如在Unity Editor中的Player Settings设置,如何打包AppImagedeb,如何处理动态链接库等问题。还需要考虑测试和调试方法,比如在信创系统上运行Unity应用时的常见错误及解决方法。 最后,生成相关问题时要围绕信创系统的适配,可能涉及优化、特定问题排查、与其他国产软件的集成等。需要确保回答结构清晰,分步骤说明配置过程,并引用相关资源或文档帮助用户进一步操作。</think>在Unity中打包适配信创系统的应用,需重点解决跨平台兼容性、系统服务集成和依赖库管理。以下是具体配置步骤: ### 一、基础环境配置 1. **切换构建平台** Unity Editor中打开`File > Build Settings`,选择**Linux**作为目标平台。若需适配ARM架构,需安装对应模块并通过脚本指定编译参数: ```bash -buildTarget Linux -architecture ARM64 ``` 2. **图形接口选择** 信创系统多采用开源图形驱动,建议在`Player Settings > Other Settings`中: - 禁用Vulkan API(部分国产GPU驱动支持有限) - 强制使用OpenGL Core 3.2+ 添加预编译指令: ```csharp #if UNITY_STANDALONE_LINUX UnityEngine.SystemInfo.graphicsDeviceType = UnityEngine.Rendering.GraphicsDeviceType.OpenGLCore; #endif ``` ### 二、系统服务适配 1. **国产中间件集成** 若需调用统信UOS的D-Bus服务(如打印服务),需通过C++插件桥接: ```cpp #include <dbus/dbus.h> DBusConnection* conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); ``` 2. **文件系统权限** 信创系统采用分级安全策略,需在应用清单文件`app.desktop`中声明: ```ini [Desktop Entry] X-KDE-SubstituteUID=true ``` ### 三、依赖库处理 1. **动态链接库打包** 将第三方.so文件放入`Plugins/x86_64`(或`aarch64`)目录,通过Link.xml指定保留项: ```xml <linker> <assembly fullname="MyAssembly"> <type fullname="MyNamespace.MyClass" preserve="all"/> </assembly> </linker> ``` 2. **Mono兼容性配置** 在`Project Settings > Scripting Runtime Version`选择**.NET 4.x Equivalent**,避免IL2CPP在龙芯架构上的编译问题[^2]。 ### 四、打包与测试 1. **生成AppImage格式** 使用linuxdeployqt工具封装: ```bash ./linuxdeployqt AppDir/usr/share/applications/myapp.desktop -appimage ``` 2. **兼容性验证** 在统信UOS中运行: ```bash ldd MyApp.x86_64 | grep "not found" # 检查缺失依赖 strace ./MyApp.x86_64 2>&1 | grep ENOENT # 跟踪文件访问 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值