react-native遇到的问题

552 阅读3分钟
IOS 问题一
如果是 RCTModuleMethod报错
	或 Unknown argument type '__attribute__' in method -[RCTAppState getCurrentAppState:error:]. Extend
请用按照下面改动
***高版本运行低版本
找到文件RCTModuleMethod.mm,路径:node_modules/react-native/React/Base/RCTModuleMethod.mm;
在RCTParseUnused接口中新增新的解析字段,新增RCTReadString(input, "__attribute__((__unused__))")代码,如下:
static BOOL RCTParseUnused(const char **input)
{
  return RCTReadString(input, "__unused") ||
         RCTReadString(input, "__attribute__((__unused__))") ||     //增加的代码
         RCTReadString(input, "__attribute__((unused))");
}

IOS 问题二
运行Xcode 出现 'config.h' file not found
1、cd node_modules/react-native/third-party/glog-0.3.4
2、在glog-0.3.4目录下执行命令 ../../scripts/ios-configure-glog.sh

IOS 问题三
Failed to build ios project ..... error code 65 
最下面提示 the workspace named "app" does not contain a scheme named "app". the "-list" option cam ne used t find the names of schemes in the workspace
目前不清楚一下哪一个有用。最有可能是2
1、Xcode 打开Manage Schemes 管理Schemes。可以复制(原来的必须能构建成功,否则没意义)原来的schemes然后改名字。在把原来的移除
2、只留下一个Schemes运行即可 
3、在IOS目录下 执行 POD 的命令 xcodebuild -workspace XXX.xcworkspace -list 查看清单
移除 "react-native-pager-view":"^5.4.25"

IOS 问题四
Duplicate symbols for architecture x86_64 under Xcode
1) 移除pod => pod deintegrate
2) 安装pod => pod install

IOS 问题五
Xcode升级12后,ReactNative ios14看不见图片(静态图片和网络图片)  或者 启动之后启动页和图标丢失
1、修改node_modules中react-native/Libraries/Image/RCTUIImageViewAnimates.m文件
if(_currentFrame){          

layer.contentsScale = self.animatedImageScale;   

layer.contents = (__bridge id)_currentFrame.CGImage;

}else{    //加上这个  不然ios14以上的系统看不见图片   

[super displayLayer:layer];
}
2、升级reactNative版本,大于或者等于0.63版本 (会有别的问题)


IOS 问题六
错误信息
    indirect_symbol_bindings[i] = cur->rebindings[j].replacement;  
    Thread 1: EXC_BAD_ACCESS (code=2, address=0x7fff865775c8)
解决办法
  替换 node_modules/react-native/Libraries/fishhook 下的俩个文件  fishhook.c  和  fishhook.h

https://www.cnblogs.com/zhengyan/p/16039106.html

IOS 问题七
关于React Native报Cannot initialize a parameter of type'NSArray<id<RCTBridgeModule>>错误(解决方案)
(直接百度搜索这个)

IOS 问题八
项目根目录 chmod 755 node_modules/react-native/scripts/launchPackager.command

IOS 问题九
关于React Native报Cannot initialize a parameter of type'NSArray<id<RCTBridgeModule>>错误(解决方案)


安卓(Android) Android Studio 4.0
运行调试和编译包: react-native run-android

清理Android构建文件
cd android
./gradlew clean 

Android 问题一 X86 CPU 问题 (低版本项目升级问题)
1、改动build.gradle文件的版本  26号是当前Android Studio的最低支持版本
	compileSdkVersion:26
	buildToolsVersion 26.0.1
	applicationId:"com.chiseeappjr"  //目前研究的这个用包的名字
	targetSdkVersion:26

2、gradle-wrapper.properties
	gradle-4.1-all.zip 使用这个包
3、build.grade
	classpath:"com.android.tools.build:gradle:3.0.1" //这个和上面的【2】中的gradle对应  3.0.1至少需要4.1版本
	repositories节点(2个节点都加)下增加google()
	
4、gradle.properties
	里面4个账号和密钥这些配置  => 这四个参数和【1】文件中的release中的四个参数对象对应。

【项目文件夹的终端】 清空命令
cd android && sudo ./gradlew clean

Android 问题二
androidx.annotation.Nullable 报错找不到
需要gradel 28版本的
gradle.properties 配置 android.useAndroidX=true  android.enableJetifier=true
部分版本需要执行以下代码
1、终端执行 => npx jetify
2、NDK下载 (会有提示 MAC电脑提示)
提示:minsdk版本,就移除配置即可。


Android 问题三
No toolchains found in the NDK toolchains folder for ABI with prefix:arm-linux-androideabi
	方案1:Preferences菜单下 =>Appearance & Behavior => SystemSettings => Android SDK 移除SDK Tools中的NDK
	方案2:勾选自己版本符合的NDK。并在Project Structure => SDK Location 中增加 NDK 地址

Android 问题四
Execution failed for task "app.javaPreCompileDebug"解决方案
【视频聊天,实现视频通话、以及语音通话】com.github.agorabuilder:native-full-sdk:3.4.5 无法下载问题。访问github换版本目前3.4.7存在版本
这个包下载有可能极慢,放着慢慢等待吧。【祈祷下载很快】

Android 问题五
Cause: connect timed out 提示:Could not resolve com.android.tools.build:gradle:3.3.1
	【没用拿掉】蔚然配置的备份Project Structure => SDK Location => NDK 配置/Users/yuzichen/Library/Android/sdk/ndk/25.0.8775105
打开Project Structure => SDK Location => NDK 拿掉。或配置勾选一个版本()。

Android 问题六
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
方案1:清理Android构建文件(上面有命令)
方案2:还有,下次需要在百度吧。

Android 问题七
Execution failed for task ':app:multiDexListDebug'. A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
方案:(设置multiDexEnabled:true和启用最低版本21)After adding multiDexEnabled as true inside the build.gradle (Project Level) then change minSdkVersion to 21. It fixed my error.

Android 问题八
MemoryLeakMonitor.jar is not exist!
解决方案:
可能原因1:如果低版本安卓模拟器可以打开,可能是高版本安卓引起问题。配置内容   application标签里面添加一行代码:android:usesCleartextTraffic="true"

Android 问题九
打包报错:报错 AAPT2 error: check logs for details (Gradle 3.1.0)
原始 信始理财师APP Gradle版本4.13.0.1 => 现升级为4.63.2.0版本 
SDK版本统一升级2626.0.2

Android 问题十
安卓悬浮窗 Unble to add window android.view.ViewRootImpl --permission denied for windwos type
Application XXX is not been registered
方案:可能react-native没有打包成功,手动打包命令执行以下。react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
【其中index.js根据需要设置,有的index.android.js】


Android 问题十一
打包流程,先在Android Studio和vs code => react-native run-android 跑起来,然后再打包APK。如果报错Could not connect to development server。先关闭8081端口的终端,再重新启动run-android。

Android 问题十二
打包报错 Task :app:mergeReleaseResources FAILED 
方案:移除android / app / src / main / res下的
drawable-hdpi / drawable-mdpi / drawable-xhdpi / drawable-xxhdpi / drawable-xxxhdpi / raw

Android 问题十三
打包报错:The file name must end with .xml or .png
方案:grade.properties设置 android.disableResourceValidation=true

Android 问题十四
模拟器调试 直接闪退,无logcat日志
方案:可能终端和Android Studio 模拟器同时运行导致,关闭终端,再使用模拟器

Android 问题十五
模拟器调试 连接不上
方案:可能bundle没有手动打包,导致无法连接

Android 问题十六
react-native Failed to transform react-native-0.71.0-rc.0-release.aar
方案:
allprojects {
    repositories {
        ...
        exclusiveContent {
           filter {
               includeGroup "com.facebook.react"
           }
           forRepository {
               maven {
                   url "$rootDir/../node_modules/react-native/android" // 强制使用node_modules下的react-native/android 解析
               }
           }
       }
    }
}
如果哪天官网修复了这个bug,可以将上述修改撤回.


android问题17
  android 手动打bundle包命令:react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/