React-narice安卓打包流程

**1. 生成签名密钥

在项目的 android/app 目录下生成签名密钥的步骤:

  1. 打开终端或命令提示符:导航到您的 React Native 项目的 android/app 目录。

  2. 运行以下命令生成密钥库文件

keytool -genkeypair -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
​

 

参数说明:

  • -keystore:指定生成的密钥库文件名。

  • -alias:为密钥指定别名。

  • -keyalg:指定加密算法,这里使用 RSA。CSDN博客

  • -keysize:指定密钥长度,通常为 2048。

  • -validity:指定密钥的有效期(天),例如 10000 天。

将生成的 my-release-key.keystore 文件放入 android/app 目录中。博客园

效果展示 (内容自己输入自己记住):

2. 配置签名信息

android/app/build.gradle 文件中,添加签名配置:博客园

android {...signingConfigs {release {storeFile file("my-release-key.keystore")storePassword "your-store-password"keyAlias "my-key-alias"keyPassword "your-key-password"}}buildTypes {release {...signingConfig signingConfigs.release}}
}

 

注意:storePasswordkeyPassword 替换为您在生成密钥时设置的密码。

并且有了signingConfig signingConfigs.release就要注释掉原有的

3. 生成发布版本的 APK

在项目根目录下,运行以下命令:

cd android
./gradlew assembleRelease
注意:在windos里用: gradlew.bat assembleRelease命令

 

此命令将在 android/app/build/outputs/apk/release/ 目录下生成 app-release.apk 文件。

4. 将 APK 安装到手机

确保手机已开启 USB 调试模式,并连接到电脑。然后运行:

adb install android/app/build/outputs/apk/release/app-release.apk

把这个apk文件用qq发到手机 然后点击安装就行

成功后,您即可在手机上找到并运行该应用。

注意事项

  • 签名密钥的保存: 请妥善保存生成的 my-release-key.keystore 文件和相关密码信息,后续应用更新需要使用相同的签名。博客园

  • 测试发布版本: 在发布前,建议在多种设备上测试生成的 APK,以确保兼容性和稳定性。

按照上述步骤,您即可将 React Native 项目打包成 APK 并安装到手机上运行。

前端打包和上线流程对于动态数据和静态数据来说是相同的。区别在于:

  • 数据来源: 静态数据是直接写在代码里的,动态数据则是通过接口获取。

  • 代码逻辑: 静态数据通常直接作为变量导入或嵌入,而动态数据通过 API 请求获取和渲染。


一、打包和上线流程(动态数据和静态数据相同)

  1. 安装依赖:

    npm install

    yarn install
  2. 配置环境变量:

    • 在项目根目录创建或修改 .env.production 文件:

      REACT_APP_API_URL=https://api.example.com
    • 在代码中使用环境变量:

      const apiUrl = process.env.REACT_APP_API_URL;
      fetch(`${apiUrl}/products`).then((res) => res.json()).then((data) => console.log(data));
  3. 打包:

    npm run build

    yarn build
    • 打包后生成的静态文件在 build/ 文件夹中。

  4. 部署到服务器:

    • 上传打包文件:将 build/ 文件夹中的所有文件上传到服务器。

    • 服务器配置:使用 Nginx、Apache 或其他 Web 服务器托管静态文件。

      • Nginx 示例配置:

        server {listen 80;server_name yourdomain.com;root /var/www/html/build;index index.html;
        ​location / {try_files $uri /index.html;}
        }
    • 重启服务器:

      sudo systemctl restart nginx
  5. 访问前端项目: 打开浏览器,访问 http://yourdomain.com


二、动态数据打包和上线注意事项:

  1. 环境变量:

    • 开发环境:

      REACT_APP_API_URL=http://localhost:5000
    • 生产环境:

      REACT_APP_API_URL=https://api.yourdomain.com
    • 在代码中根据环境变量来请求:

      const apiUrl = process.env.REACT_APP_API_URL;
      fetch(`${apiUrl}/products`);
  2. CORS(跨域)问题:

    • 如果前端和后端不在同一个域名下,可能会遇到跨域问题。

    • 解决方法:

      • 在后端添加 CORS 支持:

        const express = require('express');
        const cors = require('cors');
        const app = express();
        ​
        app.use(cors());
        app.get('/api/products', (req, res) => {res.json({ name: 'Apple', price: 10 });
        });
        ​
        app.listen(5000, () => console.log('Server running on port 5000'));
      • Nginx 反向代理:

        nginx复制编辑location /api/ {proxy_pass http://localhost:5000/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;
        }
  3. 接口请求测试:

    • 本地测试: 确保在开发环境中能正常请求接口数据。

    • 线上测试: 上线后通过浏览器开发者工具检查接口请求是否成功。

  4. 接口地址修改:

    • 打包前一定要修改 API 地址为生产环境地址,避免上线后依然请求本地数据。


三、总结:

  • 打包上线流程一致:静态数据和动态数据的前端项目在打包和上线流程上没有区别。

  • 配置环境变量:开发和生产环境要使用不同的 API 地址。

  • 后端接口准备:上线前确认后端服务正常运行,且能通过生产环境访问。

  • 跨域问题解决:生产环境中如果前后端分离,跨域配置一定要正确。

  • 线上测试验证:上线后要逐一检查接口请求和数据展示,确认动态数据是否正常加载。

 

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

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

相关文章

嵌入式AI开源生态指南:从框架到应用的全面解析

嵌入式AI开源生态指南:从框架到应用的全面解析 引言 随着人工智能技术的迅速发展,将AI能力部署到边缘设备上的需求日益增长。嵌入式AI通过在资源受限的微控制器上运行机器学习模型,实现了无需云连接的本地智能处理,大幅降低了延…

深度学习中模型量化那些事

在深度学习中模型量化可以分为3块知识点,数据类型、常规模型量化与大模型量化。本文主要是对这3块知识点进行浅要的介绍。其中数据类型是模型量化的基本点。常规模型量化是指对普通小模型的量化实现,通常止步于int8的量化,绝大部分推理引擎都…

Redis-list类型

这里只是介绍命令使用 列表是用来存储多个有序的字符串 可以用来充当栈和队列的角色 列表特点: 列表中的元素是有序的,可以通过索引下标来获取某个元素或者某个范围的元素 获取和删除有区别 元素可以重复 命令 LPUSH 将一个或者多个元素从左侧放入到list中(头插法) lp…

Business English Certificates (BEC) 高频词汇背诵

Business English Certificates {BEC} 高频词汇背诵 References Cambridge English: Business Certificates, also known as Business English Certificates (BEC), are a suite of three English language qualifications for international business. abandon /əˈbndən/ …

第十四届蓝桥杯省赛真题解析(含C++详细源码)

第十四届蓝桥杯省赛 整数删除满分思路及代码solution1 (40% 双指针暴力枚举)solution 2(优先队列模拟链表 AC) 冶炼金属满分代码及思路 子串简写满分思路及代码solution 1(60% 双指针)solution 2&#xff0…

AI Agent开发大全第二十一课-如何开发一个MCP(从0开发一个MCP Client)

开篇 上一章《AI Agent开发大全第二十课-如何开发一个MCP(从0开发一个MCP Server)》里我们讲了如何从0开始开发一个MCP Server。可以看到文中大量细节为MCP发明者官网Claude都不曾或者是遗漏的,而且还有那么多点遗漏,想要真正要在企业生产级环境使用MCP是需要做分布式开发的…

TypeScript面试题集合【初级、中级、高级】

初级面试题 什么是TypeScript? TypeScript是JavaScript的超集,由Microsoft开发,它添加了可选的静态类型和基于类的面向对象编程。TypeScript旨在解决JavaScript的某些局限性,比如缺乏静态类型和基于类的面向对象编程&#xff0c…

无锡无人机驾驶证培训费用

无锡无人机驾驶证培训费用,随着科技的迅速发展,无人机在众多行业中发挥着举足轻重的作用。从影视制作到农业监测,再到物流运输与城市规划,无人机的应用场景不断扩展,因此越来越多的人开始意识到学习无人机驾驶技能的重…

2181、合并零之间的节点

2181、[中等] 合并零之间的节点 1、问题描述: 给你一个链表的头节点 head ,该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 ,请你将它们之间的所有节点合并成一个节点&#xff…

相机的曝光和增益

文章目录 曝光增益增益原理主要作用增益带来的影响增益设置与应用 曝光 参考:B站优致谱视觉 增益 相机增益是指相机在拍摄过程中对图像信号进行放大的一种操作,它在提高图像亮度和增强图像细节方面起着重要作用,以下从原理、作用、影响以…

小飞电视 2.7.0 | 高清秒播无卡顿的电视直播软件

小飞电视采用了流行的天光YY壳进行二次开发,内置了热门的肥羊源。更新后在加载速度和播放速度上有了显著提升,并提供了丰富的内容和各种分类栏目,包括4K和8K频道以及经典的直播内容如虎芽、斗鱼、歪歪等。该软件的最大特点是其稳定性和无广告…

【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!

大家好,我是唐叔!上期我们聊了 BeautifulSoup的基础用法 ,今天带来进阶篇。我将分享爬虫老司机总结的BeautifulSoup高阶技巧,以及那些官方文档里不会告诉你的实战经验! 文章目录 一、BeautifulSoup性能优化技巧1. 解析…

【愚公系列】《高效使用DeepSeek》055-可靠性评估与提升

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…

C# Winform 入门(12)之制作简单的倒计时

倒计时效果展示 控件展示 以下均是使用label来形成的 label 的 BorderStyle:Fixed3D ForeColor:Red Blackground:Black label 的属性 Name: txtyear txtmonth txtday txttime txtweek txtDays txtHour txtM…

edge webview2 runtime跟Edge浏览器软件安装包双击无反应解决方法

软件安装报错问题有需要远程文章末尾获取联系方式,可以帮你远程处理各类安装报错。 一 、edge webview2 runtime跟Edge浏览器软件安装包双击无反应 在安装edge webview2 runtime跟Edge浏览器双击无反应没有出现安装界面。这个可能是 新版本的Edge WebView2 Runti…

TDengine 从入门到精通(2万字长文)

目录 第一章:走进 TDengine 的世界 TDengine 是个啥? TDengine 的硬核特性 性能炸裂 分布式架构,天生可扩展 SQL 用起来贼顺手 写入方式花样多 内置缓存,省心又省力 TDengine 能干啥? 智能制造 能源管理 物联网平台 工业大数据 第二章:上手 TDengine:安装与…

keil5忽略警告

目录 前言 风险不多做赘述。强迫症患者使用。警告有时候就是问题关键,被屏蔽了就不会在意。小心使用 环境: 芯片:STM32F103C8T6 Keil:V5.35.0.2 一、示例 警告内容如下: 二、解决办法 1.先看这位 MDK-Keil AC6 …

【Linux】iptables命令的基本使用

语法格式 iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转]注意事项 不指定表名时,默认使用 filter 表不指定链名时,默认表示该表内所有链除非设置规则链的缺省策略,否则需要指定匹配条件 设置规则内容 -A&#xff1a…

MyBatis查询语句专题、动态SQL、MyBatis的高级映射及延迟加载

一、MyBatis查询语句专题 模块名:mybatis-008-select 打包方式:jar 引入依赖:mysql驱动依赖、mybatis依赖、logback依赖、junit依赖。 引入配置文件:jdbc.properties、mybatis-config.xml、logback.xml 创建pojo类&#xff1a…

Visual Studio Code SSH 连接超时对策( keep SSH alive)

文章目录 问题解决方法一&#xff1a;配置服务端关于ClientAliveInterval和ClientAliveCountMax1、打开终端&#xff0c;打开SSH配置文件&#xff1a;输入以下命令&#xff1a;2、打开配置文件后&#xff0c;添加以下内容&#xff1a;3、添加后&#xff0c;Esc按 <Enter>…