新闻详情

新闻详情

首页 / 资讯中心 / 详情

GeoLibre移动端构建指南:Tauri v2打包Android AAB与iOS IPA完整教程

发布时间:2026/9/16 10:23:25来源:尧图网络
GeoLibre移动端构建指南:Tauri v2打包Android AAB与iOS IPA完整教程
GeoLibre移动端构建指南Tauri v2打包Android AAB与iOS IPA完整教程【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibreGeoLibre 是一款轻量级云原生 GIS 平台可以在浏览器、桌面端、Jupyter 和移动端中可视化、探索与分析地理空间数据。本文基于 Tauri v2 Mobile手把手带你把 GeoLibre 打包成 Android 应用AAB和 iOS 应用IPA——无需维护第二套代码同一份 React 代码库即可产出双端原生应用。 为什么 GeoLibre 选择 Tauri v2 打包移动端Tauri v2 将 WebView 界面直接打包进 APK/IPA应用外壳离线可用地图瓦片与重型引擎如 WebAssembly 地理处理工具按需加载与桌面版行为一致。移动端保留了完整地图工作台、数据添加、Whitebox 地理处理工具箱1000 工具、SQL 工作区DuckDB-WASM PGlite/PostGIS、Python 控制台Pyodide、AI 助手与故事地图。仅依赖本地桌面进程的功能Python sidecar 栅格处理、本地 PostgreSQL 等会在移动端自动隐藏。 详细功能对照见 docs/android.md 与 docs/ios.md⚙️ Android 工具链一次性配置JDK SDK NDK构建 GeoLibre 的 Android AAB 需要三件套JDK 17/21、Android SDK NDK、Rust Android 目标。首先克隆代码仓库git clone https://gitcode.com/GitHub_Trending/ge/GeoLibre cd GeoLibre然后配置环境全部放在用户可写的~/Android/Sdk无需 rootexport JAVA_HOME/path/to/jdk-21 export ANDROID_HOME$HOME/Android/Sdk yes | sdkmanager --sdk_root$ANDROID_HOME --licenses sdkmanager --sdk_root$ANDROID_HOME \ platform-tools platforms;android-36 \ build-tools;36.0.0 ndk;27.3.13750724 export NDK_HOME$ANDROID_HOME/ndk/27.3.13750724 # Tauri 需要 NDK_HOME rustup target add aarch64-linux-android armv7-linux-androideabi \ i686-linux-android x86_64-linux-android两个关键版本约束记牢即可避免 80% 的构建失败组件要求版本原因API 级别36Android 16Tauri v2.11 模板生成compileSdk 36且 2026-08-31 起 Google Play 的最低门槛NDKr27 LTSTauri v2 的官方支持线⚠️ 必配16 KB 内存页对齐Play 审核硬门槛Google Play 会拒绝目标 Android 15 且原生库未按 16 KB 内存页对齐的应用。NDK r27 不会自动对齐必须通过RUSTFLAGS环境变量显式传入写进.cargo/config.toml会被 Tauri CLI 静默忽略这是最常见的踩坑点export RUSTFLAGS-C link-arg-Wl,-z,max-page-size16384 -C link-arg-Wl,-z,common-page-size16384 构建 Android 发布包一键生成 AAB在apps/geolibre-desktop目录下执行npx tauri android init # 首次生成 src-tauri/gen/android npx tauri android build --aab # 生成 Google Play 用的通用 AAB产出位置速查构建目标命令产出与用途通用AABbuild --aabGoogle Play 上传格式Play 会自动按设备拆分分架构APKbuild --apk --split-per-abi侧载安装每架构约 40 MBarm64用于真机几点实用建议务必构建 release 版本release 的 APK 约 40 MB/架构debug 构建因含未裁剪的.so会膨胀到约 200 MB。AAB 不要加--split-per-abi——Play 只要一个通用 bundle。应用名GeoLibre与包名org.geolibre.app在 apps/geolibre-desktop/src-tauri/tauri.android.conf.json 中独立配置刻意与桌面版的org.geolibre.desktop区分避免影响桌面用户的设置目录与 Linux/macOS 打包。 给 APK 签名发布前必做tauri android build产出的是未签名包。侧载安装或分发自建 APK 时需先 16 KB 对齐、再签名BT$ANDROID_HOME/build-tools/36.0.0 $BT/zipalign -P 16 -f 4 app-arm64-release-unsigned.apk aligned.apk $BT/apksigner sign --ks $HOME/.android/debug.keystore \ --ks-pass pass:android --ks-key-alias androiddebugkey \ --key-pass pass:android --out geolibre-arm64.apk aligned.apk $BT/apksigner verify geolibre-arm64.apk正式发布建议自建上传密钥keytool -genkeypair -v -keystore upload.jks -alias upload -keyalg RSA -keysize 2048 -validity 10000。 iOS 打包只在 Mac 上构建 IPAiOS无法从 Linux 交叉编译必须在 Mac 上完成。一次配置工具链xcode-select --install # 命令行工具 sudo xcodebuild -license accept # 首次打开 Xcode 接受许可 brew install cocoapods rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios其中aarch64-apple-ios对应真机与 App Store IPAaarch64-apple-ios-sim对应 Apple Silicon Mac 的模拟器。 位置权限字符串iOS 特有的必配项与 Android 不同iOS 在没有任何位置用途说明字符串时会直接终止应用。GeoLibre 在 apps/geolibre-desktop/src-tauri/Info.ios.plist 中声明了NSLocationWhenInUseUsageDescription构建时自动合并进生成的Info.plist覆盖野外采集、GPS 轨迹与地图定位三个场景。 最低系统版本iOS 15.0最低版本在 apps/geolibre-desktop/src-tauri/tauri.ios.conf.json 中一行设定bundle: { iOS: { minimumSystemVersion: 15.0 } }不配置时 Tauri CLI 默认值为 14.0低于 Apple 的最低门槛App Store Connect 会发ITMS-90068警告2027 春季后直接拒收。 构建并导出 App Store IPAcd apps/geolibre-desktop npx tauri ios init # 首次生成 src-tauri/gen/apple npx tauri ios dev # 模拟器/真机调试 npx tauri ios build --no-sign # 无签名 archive无需 Apple 账号⚠️避坑tauri ios build --export-method app-store-connect无法直接出包——生成的工程把CODE_SIGN_IDENTITY iPhone Developer写死在配置里自动签名会去找开发描述文件而失败。正确姿势是先无签名归档再用xcodebuild -exportArchive做分发签名Xcode 会自动创建 Apple Distribution 证书与 App Store 描述文件Gsrc-tauri/gen/apple # 写入 ExportOptions-appstore.plistmethodapp-store-connect、teamID你的TeamID、signingStyleautomatic xcodebuild -exportArchive -allowProvisioningUpdates \ -archivePath $G/build/geolibre-desktop_iOS.xcarchive \ -exportOptionsPlist $G/ExportOptions-appstore.plist \ -exportPath $G/build/appstore产物build/appstore/GeoLibre.ipa即为可提交 App Store 的包Apple Distribution 签名、get-task-allowfalse、内嵌 App Store 描述文件。上传前用codesign -dvvv验证签名。 CI 自动化一键产出签名的 AAB 与 IPAGeoLibre 的 CI 工作流已把整条签名-归档管线固化下来本地打包前可先参考.github/workflows/android.yml构建签名后的分架构 APK 与通用 AAB配置ANDROID_KEYSTORE_BASE64等 4 个 secrets 后使用真实发布密钥签名否则回退到调试密钥调试签名包仅供测试Play 拒收。.github/workflows/ios.yml在macos-15Runner需 Xcode 16上执行无签名归档 手动签名导出校验 bundle id、签名与MinimumOSVersion后产出geolibre-ios-ipa工件配置APPLE_IOS_*四个 secrets证书、密码、描述文件、Team ID即可全自动化。 CI 会用递增的运行号为 iOS 包自动盖章CFBundleVersion——App Store 要求每次上传的构建号必须严格大于上一次这是发布时最容易卡住的细节之一。❓ 常见问题速查问题解答AAB 能直接装到手机上吗❌ 不能。AAB 是 Google Play 专属上传格式侧载请用分架构 APK换了签名密钥后装不上新包先adb uninstall org.geolibre.app再安装——Android 拒绝签名不一致的覆盖更新security find-identity列表为空是不是签名失败未必。Cloud Managed 证书不出现在该列表中直接检查.ipa的签名桌面端和移动端包名冲突吗不冲突。移动端统一org.geolibre.app桌面端保持org.geolibre.desktopGeoLibre 会发布可侧载的 IPA 吗不会。iOS 通过 App Store 与 TestFlight 分发发布包中的 IPA 仅作提交存档 延伸阅读Android 完整构建文档含模拟器测试与 Play 上架清单docs/android.mdiOS 完整构建文档含签名密钥管理与 TestFlight 流程docs/ios.md移动端功能差异与已知限制说明见上述两篇文档的Known limitations章节按本文流程操作你只需几行命令就能把 GeoLibre 这个完整的移动端 GIS 工作台送上 Google Play 与 App Store——工具链配置一次到位后后续每次发版只需构建、签名、上传三步。【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

微调电路实战:从电位器到电阻网络的参数调整与故障排查 2026/9/16 10:47:38

微调电路实战:从电位器到电阻网络的参数调整与故障排查

前几天帮朋友处理一块控制板的信号异常,现象是传感器通道输出偏差很大,查了一圈最后问题锁定在两个元器件上:一个是板上的PTA3043-2015CPB103微调电位器,另一个是丝印R7KA8D2KFLCAC的贴片电阻网络。调完参数、重新标定之后&#x…

阅读更多 →
MAX30102与R7KA8D2KFLCAC构建可信血氧监测系统 2026/9/16 10:47:38

MAX30102与R7KA8D2KFLCAC构建可信血氧监测系统

1. 这不是“血氧仪DIY”,而是一套可复现的生理信号闭环监测系统你搜“MAX30102”出来的结果,90%是“手把手教你用Arduino测血氧”的入门帖——接线、烧录、串口打印一串数字,然后戛然而止。但真正做过连续72小时监护设备的人知道:…

阅读更多 →
光耦选型与系统级隔离设计实战指南 2026/9/16 10:47:38

光耦选型与系统级隔离设计实战指南

1. 项目概述:为什么光隔离不是“加个光耦就完事”,而是系统级抗扰设计的起点你手头正调试一块工业传感器采集板,刚把信号线接到PLC上,示波器一探,原本干净的4–20mA模拟信号里突然冒出50Hz工频毛刺,叠加在有…

阅读更多 →
SpringBoot+Layui+Shiro+Ehcache学生管理系统实践 2026/9/16 10:47:38

SpringBoot+Layui+Shiro+Ehcache学生管理系统实践

简介:这是一套基于Spring Boot和Layui搭建的学生管理系统,同时整合Shiro安全框架与Ehcache缓存框架,主要面向全栈初学者、课程设计及毕业设计人群。项目源码已通过本地编译测试,配套环境配置文档齐全,整体难度适中&…

阅读更多 →
Sentinel滑动时间窗口源码解析:从数据结构到参数配置实践 2026/9/16 10:47:38

Sentinel滑动时间窗口源码解析:从数据结构到参数配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
回执失败为何不触发重试?解构调度链中的契约断层 2026/9/16 10:44:36

回执失败为何不触发重试?解构调度链中的契约断层

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞