react-native报错问题与解决方法

react-native 0.68.1

建议 android studio版本 2021.1.1 patch 3 及以上

xcode 13.3.1及以上

android打包

用这个签名
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

pwd: ***  alias=***  CN=***, OU=***, O=***, L=***, ST=***, C=*** 

android打包报错

  • tool":"Resource and asset merger
解决办法

node_modules 下的 node_modules/react-native/react.gradle 文件中,在 doFirst 代码块下添加 doLast 代码块,具体代码 code 如下:

doLast {
                def moveFunc = { resSuffix ->
                    File originalDir = file("$buildDir/generated/res/react/release/drawable-${resSuffix}");
                    if (originalDir.exists()) {
                        File destDir = file("$buildDir/../src/main/res/drawable-${resSuffix}");
                        ant.move(file: originalDir, tofile: destDir);
                    }
                }
                moveFunc.curry("ldpi").call()
                moveFunc.curry("mdpi").call()
                moveFunc.curry("hdpi").call()
                moveFunc.curry("xhdpi").call()
                moveFunc.curry("xxhdpi").call()
                moveFunc.curry("xxxhdpi").call()
            }

然后清除之前打包缓存,再到android目录执行打包命令

cd android && ./gradlew assembleRelease

android项目执行报错

  1. cmake 3.18.1
[CXX5304] This version only understands SDK XML versions up to 2 but an SDK XML file of version 3 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
[CXX5304] 意外的元素 (uri:"", local:"base-extension")。所需元素为<{}codename>,<{}layoutlib>,<{}api-level>
[CXX5304] 意外的元素 (uri:"", local:"base-extension")。所需元素为<{}vendor>,<{}codename>,<{}abi>,<{}api-level>,<{}tag>
[CXX1300] CMake '3.18.1' was not found in SDK, PATH, or by cmake.dir property.
[CXX1300] CMake '3.18.1' was not found in SDK, PATH, or by cmake.dir property.
 
FAILURE: Build failed with an exception

解决办法 去android SDK安装cmake

  1. 关于react-native-camera 配置或者安装问题按照官网步骤做 https://react-native-camera.github.io/react-native-camera/

react-native-audio android报错问题

将目录
/Users/hlyang/Desktop/AnswerEyesAppRN/node_modules/react-native-audio/android

dependencies {
   compile fileTree(include: ['*.jar'], dir: 'libs')
   compile 'com.android.support:appcompat-v7:${supportVersion}'
   compile 'com.facebook.react:react-native:+'
}

改为

dependencies {
    implementation fileTree(include: ["*.jar"], dir: "libs")
    implementation "com.android.support:appcompat-v7:${supportVersion}"
    implementation "com.facebook.react:react-native:+"
}

react-native-audio-recorder-player android报错

Your Project - android/build.gradle

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"

如果没用就将代码加到react-native-audio-recorder-player/build.gradle下

Could not resolve project :react-native-camera

Your Project - app/build.gradle

android {
  ...
  defaultConfig {
    ...
    missingDimensionStrategy 'react-native-camera', 'general' // <-- insert this line
  }
}

react-native 0.48.4

third-party: ‘config.h’ file not found

解决办法

cd node_modules/react-native/third-party/glog-0.3.4
../../scripts/ios-configure-glog.sh

library not found for -lRNVectorIcons-tvOS

解决办法:移除 lRNVectorIcons-tvOS.a

Multiple commands produce '/Users/lvshaoli/Library/Developer/Xcode/DerivedData/JDDoctorAppRN-azaiuoqhmdxxabepdpyxixwamuap/Build/Products/Debug-iphonesimulator/JDDoctorAppRN.app/Entypo.ttf

解决办法:有重复字体,删除重复字体

"apt finished with non-zero exit value 127"报错的解决办法

sudo apt-get install lib32z1

安装lib32z1之后,并更新sdk解决该问题

React Native打包android apk安装包报错: Original is here. The version qualifier may be implied.

用Android Studio打开android目录,找到res/drawable目录,把里面的图片文件都删掉(因为这些图片都是React Native自动生成的,所以删除即可)。再次重新执行gradlew assembleRelease命令就不会报错了。

android打包流程

a.npm run android-build  b. cd android && ./gradlew assembleRelease

热更新

code-push release-react APP名称 android --t 1.0.0 --dev false --d Staging --des “1.优化操作流程” --m true
其中参数–t为二进制(.ipa与apk)安装包的的版本;–dev为是否启用开发者模式(默认为false);–d是要发布更新的环境分Production与Staging(默认为Staging);–des为更新说明;–m 是强制更新。

code-push deployment ls APP名称
code-push deployment h APP名称 Staging 历史部署列表
code-push promote APP名称 Staging Production 使用promote将Staging推到Production
code-push rollback APP名称 Production 使用rollback回滚 --targetRelease来指定rollback到的版本 code-push rollback MyAppAndroid Production --targetRelase v2
code-push debug android code-push debug ios

把更新推到另一个环境: code-push promote APP名称 Staging Production
关闭某个版本: code-push patch MyApp Staging -l v13 --des ‘关闭v13’ -x true

当你想发布一个更新,但是却不想让这个更新立马生效,比如想对外公布一些信息后才让这个更新生效,这时候就可以使用code-push promote MyAppAndroid Staging Production --disabled false来发布更新到正式环境,在对外公布信息后,使用code-push patch MyAppAndroid Production --disabled true来让用户可以使用这个更新。

the modules [xx1, xx2] point to the same directory in the file system.

解决办法:

在菜单工具栏中:File → Invalidated Caches / Restart… → Invalidate & Restart

Error:Execution failed for task ‘:app:dexDebug’. > com.android.ide.common.process.ProcessException

app/build.gradle添加
dexOptions {
jumboMode = true
}

android项目出现 Indexing paused due to batch updated

退出AS,去项目目录下删除项目module下所有的.impl文件,删除项目所有的.idea文件 重启stdio clean

安卓打包遇到问题 /node_modules/react-native/third-party/glog-0.3.4/test-driver’. Couldn’t follow symbolic link.

只需要切换到项目根目录执行下面这条 unlink 命令 unlink node_modules/react-native/third-party/glog-0.3.4/test-driver

安卓打包 Original is here. The version qualifier may be implied

解决办法 用Android Studio打开android目录,找到res/drawable目录,把里面的图片文件都删掉(因为这些图片都是React Native自动生成的,所以删除即可)。再次重新执行gradlew assembleRelease命令就不会报错了

低版本ReactNative在XCode11启动时异常问题的解决办法

在升级Xcode11之后,使用低于0.59.9版本的React Native,启动时必将出现问题:

模拟器运行报红如下:
Unknown argument type"attribute_inmethod-irctappstate
getcurrentappstate: error: Extend
Rctconvert to support this type.
[Rctmodulemethod processmethodsignature]
Rctmodulemethod, mm: 376
-[Rctmodulemethod invokewithbridge: module: arguments: ]

解决办法一:

找到文件RCTModuleMethod.mm,路径:node_modules/react-native/React/Base/RCTModuleMethod.mm
(原文文件名称为RCTModuleMethod.mm.mm,但是我的项目中文件名为RCTModuleMethod.m);
在RCTParseUnused接口中新增新的解析字段,新增RCTReadString(input, “attribute((unused))”)代码,如下:

static BOOL RCTParseUnused(const char **input)
{
  return RCTReadString(input, "__unused") ||
         RCTReadString(input, "__attribute__((__unused__))") ||     //lzj fixed
         RCTReadString(input, "__attribute__((unused))");
}

重新运行即已正常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值