• Stars
    star
    275
  • Rank 149,796 (Top 3 %)
  • Language
    TypeScript
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

项目使用了 React Native 构建了一个 V2EX 移动客户端应用。目的是为了构建一个 React Native 快速开发脚手架。客户端数据完全基于 V2EX 开放 API。基于 RN 0.71.5。

React Native V2EX

Build Status license GitHub repo size Release Date GitHub last commit tag

项目使用了 React Native 构建了一个 V2EX 移动客户端应用。目的是为了构建一个 React Native 快速开发脚手架。客户端数据完全基于 V2EX 开放 API。基于 RN 0.71.5。

Figma 设计稿 已经开源,可从此 Duplicate

Installation

TODO

  • 上架 App Store、Google Play
  • 通过 cheerio,获取更多的数据,开发交互功能

Done

  • 升级提醒
  • 升级 RN 到到 0.71.5
  • 升级 RN 到到 0.71.3
  • 升级 RN 到到 0.70.6
  • 升级 RN 到到 0.70.5
  • 升级 RN 到到 0.70.4
  • 升级 RN 到到 0.70.3
  • plop 模板创建
  • 升级 RN 到到 0.70.1
  • 升级 RN 到到 0.69.4
  • 整体规划,重新设计功能架构
  • 发布 Testflight 版
  • 节点模块
  • 规划重新设计 UI 交互
  • 界面语言文案修正
  • 整理项目所使用开源库
  • 全新开发
  • 评论列表
  • 通知模块
  • 收藏主题
  • 关注的人

Features

  1. 基于 React Native 0.71.3 版本。
  2. 引入 TypeScript 强类型检查,保证维护性、可读性、稳定性。
  3. eslint 代码规范检查,prettier 代码美化、Husky 作为 git hooks 进行代码格式化、规范校验。
  4. i18n 集成,支持多国语言。实现了语言切换功能。
  5. 实现 APP 主题(浅色、深色、自动切换)切换功能。
  6. 使用 Redux,异步用 Redux Thunk,并用 Redux Persist 数据持久化。
  7. 使用 @redux-devtools/extension 进行 Redux 调试。
  8. 路由使用 React Navgiation,并使用了 Stack Navigator、 Bottom Tabs Navigator、 Material Top Tabs Navigator。
  9. 使用 react-native-splash-screen 控制开屏图。
  10. Toast 同时集成了 react-native-easy-toastreact-native-toast-message
  11. 日期格式化使用 dayjs
  12. WebView 使用 react-native-webview

Preview

iOS

preview

Android

preview

Development

目前在 MacOS 下开发,在 iOS 为 16+ 的 iPhone Simulator/iPhone 14、Android 9.0 的 AVD 模拟器/Mi Phone 均编译成功运行。

  • 安装 NodeJS(18.0+)、Yarn、Watchman
  • Java JDK 建议用 11(配置环境变量 JAVE_HOME,高于这个版本编译可能会报错)。
  • iOS 平台需要配置CocoaPods、Xcode、iOS Simulator。
  • Android Studio、Gradle、Android SDK、Android Home 配置、Android NDK。
  • Android 平台需要 Android 真机Android AVD(建议用真机)。

具体可根据官网进行 React Native 开发环境和 iOS、Android 运行环境的配置。参考这里

Develop

# clone repos
$ git clone https://github.com/funnyzak/react-native-v2ex.git && cd react-native-v2ex

# deps install
$ yarn

# 依赖包额外补丁
yarn postinstall

# ios pod install
yarn pod

# start react-native-debugger(only mac)
yarn debug

# debug https://reactnative.cn/docs/debugging
npx react-devtools

# iOS simulator start
yarn ios

# Android simulator start
yarn android

# plop generate template
yarn p

# print rn info
npx react-native info

# upgrade rn version
npx react-native upgrade

# iOS debug info start
npx react-native run-ios --verbose

# iOS release build
npx react-native run-ios --configuration Release

# iOS debug use special device
react-native run-ios --simulator="iPhone 8"

# Android debug info start
npx react-native run-android --verbose

# Testing the release build
npx react-native run-android --variant=release

# build android release apk
cd android
# aab file
./gradlew bundleRelease
# apk file
./gradlew assembleRelease

npx react-native run-android --variant release

Structure

├── src                      # 源码目录
│   ├── App.tsx              # app根组件
│   ├── actions              # actions
│   ├── assets               # 静态资源
│   ├── components           # 组件
│   ├── config               # 配置文件
│   ├── helper               # 应用服务类
│   ├── hooks                # 钩子
│   ├── i18n                 # 多语言支持
│   ├── navigation           # 路由导航
│   ├── reducers             # reducers
│   ├── store                # store
│   ├── theme                # 主题
│   ├── types                # 类型定义
│   ├── utils                # 工具类
│   └── api                  # API库
├── .editorconfig            # 编辑器配置
├── .eslintrc.js             # eslint的配置文件
├── .gitignore               # 配置git提交需要忽略的文件
├── .husky                   # git钩子配置
├── .prettierrc.js           # 代码格式化规则
├── .watchmanconfig          # Watchman的配置文件,用于监控bug文件和文件变化,并且可以出发指定的操作
├── __tests__                # 测试
├── android                  # Android文件所在目录,包含AndroidStudio项目环境文件;
├── app.json                 #
├── babel.config.js          # Babel的配置文件
├── global.d.ts              # ts全局声明文件
├── index.js                 # 程序入口文件
├── ios                      # iOS文件所在目录,包含XCode项目环境;
├── metro.config.js
├── package.json             # 项目基本信息(比如名称、版本、许可证等元数据)以及依赖信息(npm install安装的模块)等
├── tsconfig.json            # typescript编译配置文件
└── yarn.lock                # 依赖版本锁定文件

Contribution

如果你有任何的想法或者意见,欢迎提 Issue 或者 PR。

Debug

Debug Tools

  • Hermes Debugger is a standalone app for debugging React Native apps that use Hermes.
  • Flipper is a desktop debugging platform for mobile developers.
  • react-devtools is a standalone app for inspecting the React component hierarchy.
  • **React Native Debugger is a standalone app for debugging React Native apps, and includes React DevTools.
  • Google Chrome 调试,参考

Debug Menu

可以通过摇晃设备或是选择 iOS 模拟器的"Hardware"菜单中的"Shake Gesture"选项来打开开发菜单。另外,如果是在 iOS 模拟器中运行,还可以按下 Command⌘ + D 快捷键,Android 模拟器对应的则是 Command⌘ + M(windows 上可能是 F1 或者 F2),或是直接在命令行中运行 adb shell input keyevent 82 来发送菜单键命令。

react-native-debugger

  1. 安装 react-native-debugger;
  2. yarn debug 启动 react-native-debugger;
  3. 启动模拟器 yarn ios,在模拟器打开 debug remote 选项。

注意: 使用此方式,需要禁用 Hermes,否则会报错。建议启用 Hermes 开关,使用 Hermes 调试。

FAQ

配置 BugSnag

  1. Create a bugsnag account.

  2. Add your project api key to android/app/src/main/AndroidManifest.xml:

       <meta-data android:name="com.bugsnag.android.API_KEY"
                  android:value="YOUR-API-KEY-HERE" />

    and ios/app/Info.plist:

     <key>BugsnagAPIKey</key>
     <string>YOUR-API-KEY-HERE</string>

    The API key can be found in the Bugsnag settings for your project.

Invariant Violation: Module AppRegistry is not a registered callable module

npm cache clean --force
watchman watch-del-all
rm -rf node_modules

# for ios
cd ios
pod update && pod install
cd ..
npx react-native run-ios
# for android
cd android && ./gradlew clean
cd ..
npx react-native run-android

Reference: https://stackoverflow.com/questions/64768328/invariant-violation-module-appregistry-is-not-a-registered-callable-module-cal

RCTBridge required dispatch_sync to load RNGestureHandlerModule

software-mansion/react-native-gesture-handler#722

xcode 编译报错

# 删除编译缓存
rm -rf ~/Library/Developer/Xcode/DerivedData

Android 编译启动注意

注意 gradle 和 java sdk(java home)的版本对应,可在 ./android/gradle.properties 设置 org.gradle.java.home

开屏图的设置

iOS 使用 LaunchScreen.storyboard,使用 Xcode 修改即可。

修改 bundle name

看这里

Android 签名打包发布

看这里

Using fetch to get/post on a HTTPS web server which is using a valid and trusted but not public CA.

  1. Edit the android/app/src/main/AndroidManifest.xml
  2. Add the android:networkSecurityConfig="@xml/network_security_config" to the tag
  3. Create the folder android/app/src/main/res/xml and inside a file called network_security_config.xml
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <base-config cleartextTrafficPermitted="true" />
    </network-security-config>

Dependencies

  • eslint
  • lodash
  • redux
  • react-native-safe-area-context
  • react-native-render-html
  • react-navigation
  • react-devtools
  • @redux-devtools/extension
  • async-storage
  • react-native-gesture-handler
  • react-native-fast-image
  • react-native-reanimated
  • react-native-localize
  • react-native-device-info
  • react-native-webview
  • react-native-skeleton-placeholder
  • react-native-actions-sheet
  • prettier
  • patch-package

Reference

License

Apache-2.0 License © 2021 funnyzak

More Repositories

1

tts-now

跨平台基于云平台(阿里云、讯飞等)语音合成 API 的文字转语音助手。支持单文本快速合成和批量合成。支持windows、macOS、Linux。
TypeScript
277
star
2

ChatMate-GPT

ChatMate是一个基于Open AI GPT-3的聊天应用。你可以和它聊天,它会根据你的内容提供智能回复和实用服务。
TypeScript
144
star
3

threejs-tutorial

基于 ThreeJS 做的 一些演示案例。
Vue
18
star
4

snell-server-docker

A Snell Server Docker Image, Supports amd64, arm64, arm/v7, and 386 architectures.
Dockerfile
16
star
5

koa-starter

基于 Koa2 构建的快速开始 Web 脚手架。
JavaScript
12
star
6

pyproject-starter

A template for the python project. It uses poetry for dependency management and tox for testing.
Python
9
star
7

network-rules

Rules and Scripts For Surge 、 QuantumultX 、Clash、Loon、Stash.
JavaScript
7
star
8

vue-starter

基于 ` Vue 3 + TypeScript + Vite` ,及众多开源整合,构建 `Vue` 开发脚手架。帮助你进行 `Vue` 项目开发。使用 `Vitest` 进行单元测试。
TypeScript
7
star
9

canal-docker

Docker images for canal. The images is based on Official canal repo.
Dockerfile
6
star
10

taro-starter

基于 Typescript、 React 构建 Taro 应用脚手架。
TypeScript
5
star
11

nginx-docker

A nginx docker image with some useful modules.
Dockerfile
4
star
12

OneKeyShell

Bash一键维护脚本示例。在CentOS 7+ 、Ubuntu、Debian 10测试,运行通过。
Shell
4
star
13

xfyun-nls

讯飞云智能语音处理 Node 模块。
JavaScript
4
star
14

alpine-glibc-docker

The image is based on the sgerrand/alpine-pkg-glibc project, use to provide the GNU C Library (aka glibc) for Alpine Linux..
Dockerfile
4
star
15

vp-starter

基于 VuePress 2 构建文档脚手架。
JavaScript
3
star
16

mysql-onekey-backup

A shell script to backup mysql database and send message with pushoo.
Shell
3
star
17

AR-VR-Dev-Intro

AR,VR开发说明
3
star
18

fpdf2pic

A command line tool for converting PDF to images.
TypeScript
3
star
19

java-nodejs-python-go-etc-docker

The image is based on the official debian:stable-date-slim image, and the main modules are installed.
Dockerfile
3
star
20

onekey-java

基于SpringBoot的Java项目开发脚手架
Java
3
star
21

react-native-input-search-bar

A simple search bar component for React Native.
TypeScript
3
star
22

mysql-backup-docker

This is a docker image for MySQL backup. It is based on Alpine Linux and uses MySQL Client and MySQLDUMP to dump your database.
Shell
3
star
23

pushoo-action

A GitHub Action with Pushoo.js pushes multiple platform messages.
TypeScript
3
star
24

awesome-compose

These samples provide a starting point for how to integrate different services using a Compose file and to manage their deployment with Docker Compose.
3
star
25

pushoo-cli

A command line tool with Pushoo.js pushes multiple platform messages.
TypeScript
2
star
26

libreoffice-server

基于Koa构建的Libreoffice文件转换Web服务。
JavaScript
2
star
27

SelfTrackApp

基于GPS追踪的个人足迹记录iOS APP
Swift
2
star
28

electron-react-starter

基于React Typescript Webpack构建Electron应用脚手架。Electron版本21。
JavaScript
2
star
29

git-webhook-docker

Pull your project git code into a data volume and trigger event via Webhook.
Shell
2
star
30

funnyzak

Stay Hungry, Stay Foolish.
2
star
31

aliyun-nls

阿里云智能语音处理 Node 模块。
JavaScript
2
star
32

alpine-cron-docker

A lightweight Docker image with Cron based on Alpine Linux.
Shell
2
star
33

vuepress-webhook-docker

Pull your vuepress project Git code into a data volume and trigger automatic packaging via Webhook.
Dockerfile
2
star
34

cms-scripting

针对CMS系统的数据处理脚本程序
Python
2
star
35

next-starter

Next-Starter is a front-end web application base on Next.js 14, It is a good start for your next project.
TypeScript
2
star
36

git-job-docker

Trigger a source code pull with a push event from the git webhook. And then execute the commands.
Shell
2
star
37

ifttt-webhook-action

A GitHub action that triggers an IFTTT webhooks event. This is useful for example when you want to trigger a IFTTT webhook after your ci succeeds.
Shell
2
star
38

dotfiles

my dotfiles
Shell
2
star
39

go-gin

Go-Gin is a starter for Gin Gonic, featuring Zerolog, Viper, Gorm, JWT, Go-Cache, rate limiting, cron scheduling, notifications, utility packages, and more.
Go
2
star
40

react-starter

基于 Typescript Webpack 构建 React 应用脚手架。
TypeScript
1
star
41

jishida-action

微信服务号消息推送服务。via@即时达
Shell
1
star
42

libreoffice-server-docker

LibreOffice Web Services Docker Image, with the ability to call services through the Web API.
Dockerfile
1
star
43

Potato.Ar.Api.Examples

Potato Ar Api Sdk Examples
C#
1
star
44

hexo-webhook-docker

Pull your hexo project Git code into a data volume and trigger automatic packaging via Webhook.
Dockerfile
1
star
45

static-http-server

a static http server
JavaScript
1
star
46

onekey-vue-admin

基于 vue-element-admin 4.2.1 开发的通用后台管理系统。
Vue
1
star
47

WebpackLearn

WebPack学习
Less
1
star
48

git-webhook-node-docker

Pull your nodejs project git code into a data volume and trigger node event via Webhook.
Shell
1
star
49

electron-vue-starter

基于Vue 3.0.0构建的Electron 13.0.0 脚手架。
TypeScript
1
star
50

vue-webpack-starter

Vue 3.0.0 脚手架项目,快速开始一个 Vue 项目开发。
JavaScript
1
star
51

git-webhook-deploy-docker

Pull code is triggered via WebHook, then build the code. And send notifications.
Dockerfile
1
star
52

Siteasy

stacms 废除没必要的功能(如支付,第三方,UCenter)的版本
C#
1
star