react-native开发安卓端app

前言

首先说一下我为啥要开发一个rn的app吧,其实就是想试试新技术,然后给我之前的五系统网站做一个适配,只能说感觉rn的资料确实比较少,中间也是遇到了一堆的问题,所以记录一下,后面碰到不会再踩坑。。。

正文

首先就是不得不提的expo了

第一坑:expo

expo在一开始都是很不错的,包括开发环境的整个研发过程都非常舒服(这里提一下我使用的是安卓模拟机,在电脑上的),代码语法啥的其实没有太难到我,和react比较像,唯一值得一提的大概是写样式比较特殊。。。总之,我选择expo的初衷就是,从宏观上来看,Expo是一个免费开源的用于构建React Native(RN)应用的工具链。它提供了一个开发环境和一整套服务,对开发者非常友好,特别是对初学者和中小型项目。而且他还:1.简化了开发流程:你不需要在开发机器上安装任何Android或iOS的SDK。你只需要一个expo开发客户端(在手机或模拟器上安装)就可以预览和测试你的应用。 2. Expo SDK:Expo SDK 提供了许多实用的API。你可以获取设备的硬件信息,接入推送通知服务,使用面部和指纹识别,访问设备的图片、音频、视频等等。 3. Expo Snack:Expo 提供的Snack在线工具使得你可以在Web浏览器中完成开发和测试工作。 4. 发布与更新:Expo 允许你跨过构建过程直接将你的 JS 代码发布到服务器,然后通过链接或者扫描二维码即可在 Expo 客户端中打开应用程序。 总的来说,Expo是一个非常有优势的工具,能在很大程度上帮助开发者简化React Native开发流程、提升开发效率。

总之。理想很丰满,甚至现实在开发环境的时候也很丰满,整个开发流程都非常的顺滑我只能说,知道有一天我写完一个新功能之后,我思考了一下,要不先打个apk试试?

然后就是噩梦的开始:

一开始打包(expo打包很慢,基本要20min左右,我这还是小软件,而且疑似有次数和时间的上限),到expo网站发现打出来的是abb后缀的,给我整懵了,经过查询才发现是谷歌的新的格式,你要是想发表在谷歌商场需要这个格式,然而这个格式似乎不能直接在手机上下载,所以我到配置文件里改成了打包成apk,没问题!这个解决了。

然后,我就把这个打包的apk下载了下来,好家伙一看居然有90mb(对比我之后的成功的apk,只有20多mb),不过我也没多想,当时就是觉得,什么,没问题,这就是我们node_modle的功劳,你们有这么重的东西吗()

直到安装到手机上后,我才发现,他喵的会闪退。。。。这下我其实还没急,毕竟在开发环境跑到还是挺好的,应该可以找到问题所在,于是我开始了到处查找怎么解决问题。。。。在我一一尝试过后,我绝望的发现,都没用。。。。

这下其实我有点急了,毕竟写了三四天的东西,还是花了点心血的,要是就这样夭折,那可真是让人红温

第二坑:原生rn框架

在和expo抗争了一晚上没有解决问题的本人,痛定思痛,直接转向原生的rn框架,然后想办法迁移代码,反正这些代码的语法是通用的嘛,不是大问题。

然后在这里,我为了保险,在初始化完成项目之后就直接吧本地打包了一个apk,好家伙,本地打包不仅速度很快,而且包体也没那么大,然后就是下载到手机上,测试,耶耶耶耶耶,没问题!

那么接下来就是代码迁移部分了,这个其实,改了很多东西,因为我原先很多东西都是用expo框架的玩意,所以得做很多替换,不过,历经一段小修改就成功了!!!!!

最后就是打包部分,然后我在我的手机上安装好了apk-----成功了!!!!

结语

总之,第一次app开发还是颇废了我一番功夫的,可以说红温了很多次,不过好在最终没有夭折。。。

接下来要做点啥好像暂时还没有思路,正在思考我需要点啥中。。。。

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

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

相关文章

【监控zabbix】zabbix监控误报-参数优化

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

JUC与多线程基础详解

什么是JUC? JUC(Java Util Concurrent)是 Java 5 以后新增的一组并发编程工具包,提供了一系列高效、线程安全的并发集合,方便在多线程环境下处理共享数据。 JUC其实就是JDK中的三个包: java.util.concurrent 并发相关的 java.util.concurrent.atomic 原子性 java.util.c…

idea同步yapi插件

1、前言 yapi是一个很好的接口文档维护工具,其swagger功能,可将接口信息同步到yapi平台上,但是swagger的编写,大量入侵代码,也加大了开发工作量,目前调研了idea集成yapi同步工具,无需嵌入式编写…

背靠TON公链的Notcoin游戏项目,能否杀出GameFi的红海?

4月15日消息,Telegram生态中的游戏及Meme项目Notcoin,最近在X平台公布了令市场瞩目的代币经济学方案。据悉,NOT的总供应量高达1027亿枚,其中78%将分配给矿工和Voucher持有者,余下的22%预留给未来新用户、交易者及各类上…

LLM 为什么需要 tokenizer?

文章目录 1. LLM 预训练目的1.1 什么是语言模型 2. Tokenizer一般处理流程(了解)3. 进行 Tokenizer 的原因3.1 one-hot 的问题3.2 词嵌入 1. LLM 预训练目的 我们必须知道一个预训练目的:LLM 的预训练是为了建立语言模型。 1.1 什么是语言模…

动手学深度学习——数据操作笔记

1. 张量概念 张量本质上是一个n维数组,它在numpy中为ndarray, 在pytorch中称为tensor , 两者的区别在于: numpy仅支持CPU计算tensor能支持GPU运算,并且支持自动微分,更适合深度学习 2. 张量的访问 一个二维矩阵a&a…

精度论文Generative Prompt Model for Weakly Supervised Object Localization

Generative Prompt Model for Weakly Supervised Object Localization 中国科学院大学&&浙江大学CVPR20231.Abstract 当从图像类别标签中学习对象定位模型时,弱监督对象定位(WSOL)仍然具有挑战性, 传统的鉴别训练激活模型的方法忽略了具有代表性但鉴别性较差的对象…

【UE 材质】雨滴效果

在上一篇博客(【UE 材质】表面湿润效果)的基础上继续实现物体表面附加雨滴的效果 效果 步骤 1. 下载所需纹理 2. 创建一个材质并打开,添加如下节点,我们将纹理的RG通道输出的值和1组成一个三维向量,作为基本的法线效…

SAP 变更记录表查询使用逻辑简介

通常用户在遇到问题后,经常会问某个单据的变更记录,很多模块中在前台的操作界面中都根据对应的菜单栏中可以找到对应的变更记录,像销售订单、交货单、采购申请、采购订单都在菜单栏位中都可以查询到对应的修改记录,但是对于想批量…

内容分发网络CDN分布式部署加速原理

哈喽,大家好,淼淼又来和大家见面啦,大家应该也知道,在应用开发市场中,软件产品的内测阶段对于确保产品质量与市场接受度至关重要,但是传统的内测分发方式往往面临地域分布广泛、网络环境各异的挑战&#xf…

ubuntu16.04配置rsh

Ubuntu16.04 配置rsh服务: 1:先安装以下软件: sudo apt-get rsh-server sudo apt-get rsh-client sudo apt-get rsh-redone-server sudo apt-get xinetd 2:在/etc/hosts 中添加访问的主机ip和主机名 192.168.0.66 cpci6200…

CentOS-7安装Mysql并允许其他主机登录

一、通用设置(分别在4台虚拟机设置) 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入: 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

揭秘APP广告变现秘籍:月入过万!

在移动应用的黄金时代,我们见证了无数创新和变革。然而,随着市场日益饱和,开发者和公司开始寻求新的方式来提高收益,而广告变现无疑是其中的关键。 对于移动应用来说,如何高效利用APP内的用户体验来提高广告收益是一个…

Python11个入门级知识点

Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因. Python 简介 Python 是一个高层次的结合了解释性、编…

【1431】java学习网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 学习网站系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

创建表、插入表数据和索引得准则

当你有一个较大的数据集,并且你想要在这个数据集的某个或某些列上创建FULLTEXT索引时,通常的做法是先插入数据,然后再创建索引。 这是因为在插入数据时,数据库需要同时更新索引,这会增加插入操作的开销。特别是对于FUL…

【VSCode调试技巧】Pytorch分布式训练调试

最近遇到个头疼的问题,对于单机多卡的训练脚本,不知道如何使用VSCode进行Debug。 解决方案: 1、找到控制分布式训练的启动脚本,在自己的虚拟环境的/lib/python3.9/site-packages/torch/distributed/launch.py中 2、配置launch.…

【Java框架】SpringBoot(二)核心配置

目录 yml文件什么是yml文件yml文件的优点使用场景脚本语言序列化配置文件 yml的基本语法yml支持的数据类型字面量对象(属性和值)、Map(键值对)数组复合结构 Spring Boot配置文件的值注入第一种读取方式Value第二种读取方式ConfigurationProperties第三种读取方式自动装配Enviro…

【Linux】详解信号的分类如何自定义信号的作用

一、信号的定义 Linux系统提供的让用户(进程)给其他进程发送异步信息的一种方式。在操作系统中,信号是一种进程间通讯的有限制的方式,主要用于提醒进程某个事件已经发生。信号在Unix、类Unix以及其他POSIX兼容的操作系统中广泛应用。它作为一种异步的通知…

【DVadmin教程】新增一个app并且创建一个curd模型

下载dvadmin 在gitee上搜索 django-vue-admin 别选错了,选择那个星最多的 gitee上会推荐移步 django-vue3-admin 别上当,用那个会踩坑,此教程就不适用了; 运行后端 后端 创建APP python manage.py startapp rules调整位置 为了…