React-Native开发调试和打包记录

公众号:暮北林
Q Q 群 : 一块儿学前端
今天的记录一下在工做中使用RN调试时遇到的一些问题(针对Android)javascript

话很少说直接写调试易错点

个人开发环境

// 系统 Ubuntu 19.04
// RN版本 React-native 0.61
// 开发工具 Vscode
复制代码

1. SDK配置成功,可是create的初始项目如何都运行不起来

// 在android目录下新增一个名为.local.properties的文件
// 具体内容为你本机的SDK位置 有时候是没法找到你的sdk位置
// 例如:
sdk.dir=/home/wangfpp/Android/sdk
复制代码

2. 真机或者模拟器链接不了本地server没法调试

1. 模拟器是否开启/真机是否已经链接
// 在终端输入 adb devices 查看已经链接的设备
// 若是设备存在那就查看另外一个缘由

2. 查看机器是否配置调试端口
// 模拟器直接Ctrl + M 真机摇晃手机 或者adb shell input keyevent 82调出Devtools
// Dev Settings -> Debug server host for device选择倒数第二项的设置
// 输入开发机的IP:8081
// 从新reload

3. 若是依然没法调试
// 查看手机和开发机器是否在同一网段内

4. 可能还须要重置调试端口
adb reverse tcp:8081 tcp:8081
复制代码

以上是调试中我遇到的问题 能调试就能发现问题所在,在去想办法解决问题

如何自定义打包

./gradlew assembleRelease 
// 这条命令在Linux下执行以前须要修改chmod
sudo chmod +x ./gradlew  
// 赋予x可执行权限
复制代码

React-native打包出的apk名为app-release.apk/可是真实的上线APK的名字通常为${ProjectName}_${VERSION}-${DATE}.apk

如何生成/读取这三个(项目名 版本号 打包日期)变量的值呢?

如何读取版本号

1. 版本号的位置
// 其实版本号就在package.json中
// 在js/jsx中咱们能够直接
import packageJson form 'path/package.json'
const { version } = packageJson
// 可是在打包脚本中是没法import这个文件的 可是咱们能够找到这个文件
复制代码

打包脚本的位置在android/app/build.gradle前端

## 大概在129行的位置
android{
   ....
   defaultConfig {
    applicationId "com.record"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName appVersion //这里修改版本号
   }
   ....
}
### 读取package.json的版本号
### 定义一个读取版本号的函数
def getAppVersion() {
    ## File packageJsonFile这个须要在文件头部引用
    ## 在文件头部引用此包 import groovy.json.JsonSlurper

    File packageJsonFile = new File('../package.json') 

    ## 实例化jsonslurper
    def jsonslurper = new JsonSlurper()

    ## 解析文件内容
    def packageJson = jsonslurper.parseText(packageJsonFile.text)

    ## 读取version字段并return
    return packageJson["version"]
}
## 定义一个变量接收函数返回值
def appVersion = getAppVersion()
复制代码

如何增长打包时间修改打包文件名称

## 仍是android/app/build.gradle 打包184行左右
### 若是是release打包上线包APK则修改apk名称
if (buildName == 'release') {
   ## 获取当前打包的时间
   def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
   
   ## 从新命名APK名称
   def outputFileName = "M2600-${variant.versionName}_${createTime}.apk"
   // println output.getPackageApplicationProvider()
   
   ## 打包输出为新的APK名称
   output.outputFileName = outputFileName
}
复制代码

从新打包

1. 以上修改完成后从新执行./gradlew assembleRelease 
打包后的APK名称为 M2600-0.0.1_2020-03-07.apk
2. apk的位置在
android/app/build/output/apk/release/...
复制代码

书写打包脚本

1. 打包命令./gradlew assembleRelease 太长记不住
2. 新建release.sh
3. sudo chmod +x ./release.sh
4. 书写打包脚本
复制代码

在android目录下创建release.sh文件

#!/bin/bash
### Android打包脚本

APP_HOME="`pwd -P`"
./gradlew assembleRelease
if [ $? != 0 ]; then
    echo '打包失败'
    exit 1
else:
 ## build success do somthing
 ## 移动APK到其余地方 cp M2600-0.0.1_2020-03-07.apk /home/apk/
 ## 或者作一些其余事情
fi
复制代码

此次只是本身工做的记录

个人公众号和QQ群

公众号
公众号

QQ群
QQ群
相关文章
相关标签/搜索