新消息:Helius 收购 Light Protocol
发布 Solana 移动应用:操作指南
博客/开发

发布 Solana 移动应用:操作指南

集成工程师X 上的 0xSolanaGirl
阅读需 8 分钟

应用商店对加密应用发布者从来都不友好。Apple App Store 的指南禁止使用加密货币进行应用内购买,并对通过 Apple 完成的付款收取 30% 的佣金。开发者还受到另一项限制:不得通过区块链发放应用内激励。这些因素导致很少有独立开发者推出移动 dApp。Solana Saga 推出 dApp store,打破了移动 dApp 行业的现状。这是一个免手续费的去中心化应用商店,支持微交易,没有各种限制性政策。Solana Mobile 让开发者能够构建 dApp 并发布到 dApp store,无需承受传统应用商店带来的阻力和成本。

与此同时,用户可以继续获得奖励并享受 Saga 的专属权益。一款全新的 dApp 已发布到 dApp store——Chonky dApp。这款由 Helius 提供支持的 dApp 在上线后的前 12 小时内,就通过 dApp store 被 7,500 多台不同设备下载。Chonky dApp 仅在 dApp store 提供,用户连接 Saga Genesis 钱包后即可领取一份 Chonky。

Chonky 在不到一周的时间内发布到 dApp store,并亲自验证了本指南中的流程。你将了解发布 Solana Mobile dApp 的完整流程,从准备材料到提交至 dApp store。本指南旨在帮助开发者了解发布流程的要求、估算时间,并设定合理的发布预期。

材料

按照本指南收集发布所需的材料,最终生成可供发布的 Android Package Kit (APK)。以下是发布过程中需要收集和准备的材料清单。

清单

  • 可供发布的构建版本
  • Android Build Tools
  • 版本信息
  • Sentry 等错误报告工具
  • dApp 和 dApp store 素材
  • Helius RPC URL
  • 应用签名密钥 
  • 发布者密钥
  • 条款与协议 
  • 许可证
  • 隐私政策
  • 版权声明

在应用商店发布应用时,发布者和消费者都需要遵守相关条款与条件。这对于保护用户和限制发布者责任非常重要。发布到 Solana dApp store 前,发布者需要同意发布者政策、dApp 发布协议和dApp store 使用条款。

发布者必须在发布流程中提供最终用户许可协议 (EULA)、隐私政策和版权声明。作为开发者,你需要获取这些文档并将其发布到网上,因为发布流程中需要提供文档链接。你可以参考隐私政策生成器、版权声明示例等资源,也可以使用 ChatGPT 生成这些文档。

准备工作

准备发布 dApp 的第一步,是配置一个用于发布的构建版本。 

首先,清理代码仓库。删除控制台日志,并使用错误报告工具监控 dApp。你还需要检查环境变量,并针对生产环境进行更新。

接下来,确保所有素材的尺寸正确,并删除不需要的文件。dApp store 的预览图片必须采用 1080p 分辨率(1920px × 1080px),而且所有图片必须统一为横向或纵向。dApp store 图标的最大尺寸为 512x512px,且文件必须是正方形。

发布到 dApp store 时,需要一个 Solana 密钥对。使用 solana-keygen 生成新的密钥对,并存入一些 Solana 以供后续使用。请妥善保管此密钥对。否则,任何持有该密钥对的人都能向 dApp store 提交该 dApp 的后续版本。

构建应用的发布版本时,必须使用应用密钥为构建签名。新应用需要使用全新的签名密钥,请勿使用与调试版本相同的密钥。与发布密钥一样,任何持有应用密钥的人都能更新应用。打开终端并粘贴以下命令,使用 keystore 生成应用签名密钥。

代码
keytool -genkey -v -keystore release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

在当前目录中创建 release-key.keystore 和 storePassword(后者也用作 keyPassword)。使用以下代码示例,在 build.gradle 中创建发布版本的 signingConfigs 和 buildTypes。

代码
signingConfigs {
        release {
            storeFile file('release.keystore')
            storePassword 'password'
            keyAlias 'release-key'
            keyPassword 'password'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            debuggable false
        }
    }

在同一文件中,设置应用的 locale(s),并更新 versionCode 和 versionName。这是最后一次更改 applicationId 的机会。

完成发布签名配置后,dApp 就可以构建生产版本了。在 dApp 目录中运行以下命令,清理调试版本中的重复资源并组装发布版本。

如果命令执行成功,将在 /android/app/build/outputs/apk 文件夹中生成一个 APK。

代码
yarn react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/build/intermediates/res/merged/release/ && rm -rf android/app/src/main/res/drawable-* && rm -rf android/app/src/main/res/raw/* && cd android && ./gradlew assembleRelease && cd ..

发布步骤

发布到 dApp store 需要使用该商店的 CLI 工具。本节汇总了 Solana Mobile 提供的 dApp store 设置步骤:

  1. 安装 dApp store CLI 工具。
  2. 创建并验证 config.yaml。
  3. 铸造 App、Publisher 和 Release NFT。
  4. 提交并发布。

在发布目录中运行以下命令:

代码
pnpm init
pnpm install --save-dev @solana-mobile/dApp-store-cli
npx dApp-store init

initialize 命令会创建一个 config.yaml 文件。此文件用于配置 dApp 在 dApp store 中的展示方式。需要填写三个部分:publisher、app 和 release。

这些部分都有一个地址字段,首次发布时应留空。发布步骤会为每个部分创建 NFT,并自动更新地址。

这里提供了一个空白的 config.yaml 作为参考,你也可以在 dapp-publishing GitHub 仓库中找到预填充版本。

代码
publisher:
  name:
  address:
  website:
  email:
  media:
    - purpose: icon
      uri:
app:
  name:
  address:
  android_package:
  urls:
    license_url:
    privacy_policy_url:
    copyright_url:
    website:
  media:
    - purpose: icon
      uri:
release:
  address:
  media:
    - purpose: icon
      uri:
    - purpose: screenshot
      uri:
    - purpose: screenshot
      uri:
    - purpose: screenshot
      uri:
  files:
    - purpose: install
      uri:
  catalog:
    en-US:
      name:
      short_description:
      long_description:
      new_in_version:
      saga_features:
solana_mobile_dApp_publisher_portal:
  google_store_package:
  testing_instructions:

发布部分可以在应用推出新更新时进行修改。填写媒体字段,以便在 dApp store 中显示预览图片和图标。你需要提供 APK 的路径,以便安装该文件。请将这些文件放入发布仓库,并将其相对路径作为 URI 提供。你可以在目录中编辑应用描述,google_store_package、saga_features 等字段为可选项。

填写完 config.yaml 后,使用以下命令检查发布内容是否有效,并提供 Solana 密钥对和 Android Build Tools 的路径。

如果 Android Build Tools 是随 Android Studio 安装的,可打开 Android Studio,点击 Tools 下拉菜单,然后选择 SDK Manager 来查找路径。

转到 SDK Tools 选项卡,并点击 Android_SDK_Build_Tools 34 以显示构建工具的路径。路径应如下所示:C:\Users\user\AppData\Local\Android\Sdk。

代码
npx dApp-store validate -k path_to_keypair -b path_to_android_sdk_build_tools

要发布到 dApp store,需要为 config.yaml 的每个部分创建 NFT。

首先创建 Publisher NFT。这是一次性操作,后续发布版本无需重复此步骤。将 mainnet_beta_rpc_url 替换为 Helius RPC URL。

代码
npx dApp-store create publisher -k path_to_your_keypair -u mainnet_beta_rpc_url

创建 App NFT 也只需运行一次命令。该命令会创建 App NFT,并将铸造地址记录到 config.yaml 中。

代码
npx dApp-store create app -k path_to_keypair -u mainnet_beta_rpc_url

使用以下命令创建 Release NFT。每次向 dApp store 提交新版本时,都必须创建新的 Release NFT。每次运行该命令时,铸造地址都会自动更新。

代码
npx dApp-store create release -k path_to_keypair -b path_to_android_sdk_build_tools -u mainnet_beta_rpc_url

成功创建全部三个 NFT 后,应用就可以提交到 dApp store 了。

使用以下命令发布,并传入 --requestor-is-authorized --complies-with-solana-dApp-store-policies 标志以确认符合要求。

代码
npx dApp-store publish submit -k path_to_keypair -u mainnet_beta_rpc_url --requestor-is-authorized --complies-with-solana-dApp-store-policies

dApp 提交到 dApp store 后,Solana Mobile 团队会通过发布者部分填写的电子邮箱与你联系。你也可以在 #dApp store 频道中联系 Solana Mobile 团队。新应用提交的常规审核时间为两到三天,更新版本则为一天。

发布后的思考

对于首次发布应用的人来说,将应用发布到 dApp store 可能令人望而生畏,但借助合适的工具,整个流程可以变得简单。在 Chonky dApp 发布期间,除了一些移动端小问题——例如钱包模态窗口在低电量或省电模式下无法正常工作,以及缺乏耐心的用户取消签名请求——Saga 用户基本都能一次成功领取空投。dApp 上线后,错误日志会发挥重要作用:它可以实时监控错误并记录用户行为。请利用日志工具获取重要的使用信息。目前,Solana Mobile 不会收集浏览量和应用下载量等数据,因此开发者需要自行在应用中实现适当的日志记录。 

进军移动端,就要把用户放在首位。从 UX 设计到签名工作流,移动开发者会优化每个环节,在浏览数字界面时提供无缝的一体化体验。在注意力稀缺的世界里,应用都希望在用户的主屏幕上占有一席之地。由于主流应用商店的发布政策限制重重,很少有应用能成功将具有奖励机制的加密应用带到移动端。Solana 的区块链技术让大规模奖励用户成为可能,而 Solana Mobile 有望引领人们与加密原生应用交互的新方式。随着 Saga Chapter 2 即将在 2025 年到来,现在正是为 Solana dApp store 构建 dApp 的绝佳时机。

如果这份指南激发了你打造独特 dApp 的灵感,请订阅 Helius 博客,并阅读有关 Solana 开发者教育的文章。已经拥有 Saga,并想开始使用 Solana Mobile Stack 进行开发?对于熟悉 Typescript 的 Android 新手开发者来说,Solana Mobile 上的代币门控教程非常适合跟随学习。加入 Discord 上的 Helius Hacker Society,获取更多关于 Solana 移动开发的内容。如有任何问题,Helius 会在 Helius Forum 为你提供帮助。

其他资源

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新

放大图片