安卓
- Android Studio Gradle build报错
Could not expand ZIP 'xxx/hermes-debug.aar'
问题排除:
- 路径问题
- 权限问题
- 包问题
最终发现是hermes-debug.aar包问题,下载不完整,无法zip解压
2.编译第三库报错kotlin版本有问题。The binary version of its metadata is 1.6.0, expected version is 1.1.15.
解决办法:指定高版本的kotlin版本
ext {
kotlinVersion = "1.5.30"
kotlin_version = "1.5.30"
}
- gradle同步失败,报错
Null extracted folder for artifact: ResolvedArtifact(componentIdentifier=com.facebook.react:react-native:0.71.0-rc.0, variantName=null
解决办法: 在gradle.properties文件添加
org.gradle.jvmargs=-Xmx4096M
- 编译0.63项目时报错
A problem occurred configuring project ':react-native-pager-view'.
> Could not resolve all artifacts for configuration ':react-native-pager-view:classpath'.
> Could not resolve org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0.
Required by:
project :react-native-pager-view
> Cannot choose between the following variants of org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- gradle70JavadocElements
- gradle70RuntimeElements
- gradle70SourcesElements
- javadocElements
- runtimeElements
- sourcesElements
All of them match the consumer attributes:
- Variant 'gradle70JavadocElements' capability org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- Unmatched attributes:
- Found org.gradle.category 'documentation' but wasn't required.
- Found org.gradle.docstype 'javadoc' but wasn't required.
- Required org.gradle.jvm.version '8' but no value provided.
- Required org.gradle.libraryelements 'jar' but no value provided.
- Found org.gradle.plugin.api-version '7.0' but wasn't required.
- Found org.gradle.status 'release' but wasn't required.
- Compatible attributes:
- Required org.gradle.dependency.bundling 'external' and found compatible value 'external'.
- Required org.gradle.usage 'java-runtime' and found compatible value 'java-runtime'.
- Variant 'gradle70RuntimeElements' capability org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- Unmatched attributes:
- Found org.gradle.category 'library' but wasn't required.
- Found org.gradle.jvm.environment 'standard-jvm' but wasn't required.
- Found org.gradle.plugin.api-version '7.0' but wasn't required.
- Found org.gradle.status 'release' but wasn't required.
- Found org.jetbrains.kotlin.platform.type 'jvm' but wasn't required.
- Compatible attributes:
- Required org.gradle.dependency.bundling 'external' and found compatible value 'external'.
- Required org.gradle.jvm.version '8' and found compatible value '8'.
- Required org.gradle.libraryelements 'jar' and found compatible value 'jar'.
- Required org.gradle.usage 'java-runtime' and found compatible value 'java-runtime'.
- Variant 'gradle70SourcesElements' capability org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- Unmatched attributes:
- Found org.gradle.category 'documentation' but wasn't required.
- Found org.gradle.docstype 'sources' but wasn't required.
- Required org.gradle.jvm.version '8' but no value provided.
- Required org.gradle.libraryelements 'jar' but no value provided.
- Found org.gradle.plugin.api-version '7.0' but wasn't required.
- Found org.gradle.status 'release' but wasn't required.
- Compatible attributes:
- Required org.gradle.dependency.bundling 'external' and found compatible value 'external'.
- Required org.gradle.usage 'java-runtime' and found compatible value 'java-runtime'.
- Variant 'javadocElements' capability org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- Unmatched attributes:
- Found org.gradle.category 'documentation' but wasn't required.
- Found org.gradle.docstype 'javadoc' but wasn't required.
- Required org.gradle.jvm.version '8' but no value provided.
- Required org.gradle.libraryelements 'jar' but no value provided.
- Found org.gradle.status 'release' but wasn't required.
- Compatible attributes:
- Required org.gradle.dependency.bundling 'external' and found compatible value 'external'.
- Required org.gradle.usage 'java-runtime' and found compatible value 'java-runtime'.
- Variant 'runtimeElements' capability org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- Unmatched attributes:
- Found org.gradle.category 'library' but wasn't required.
- Found org.gradle.jvm.environment 'standard-jvm' but wasn't required.
- Found org.gradle.status 'release' but wasn't required.
- Found org.jetbrains.kotlin.platform.type 'jvm' but wasn't required.
- Compatible attributes:
- Required org.gradle.dependency.bundling 'external' and found compatible value 'external'.
- Required org.gradle.jvm.version '8' and found compatible value '8'.
- Required org.gradle.libraryelements 'jar' and found compatible value 'jar'.
- Required org.gradle.usage 'java-runtime' and found compatible value 'java-runtime'.
- Variant 'sourcesElements' capability org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0:
- Unmatched attributes:
- Found org.gradle.category 'documentation' but wasn't required.
- Found org.gradle.docstype 'sources' but wasn't required.
- Required org.gradle.jvm.version '8' but no value provided.
- Required org.gradle.libraryelements 'jar' but no value provided.
- Found org.gradle.status 'release' but wasn't required.
- Compatible attributes:
- Required org.gradle.dependency.bundling 'external' and found compatible value 'external'.
- Required org.gradle.usage 'java-runtime' and found compatible value 'java-runtime'.
解决办法: 升级gradle和gradle tools
iOS
- 支付宝登录授权返回app时, 通过axios请求网络,报错
Code=-1005 "The network connection was lost."
根据这里的了解
iOS11后当App进入后台被挂起时保持连接的tcp的套接字资源会被回收,当从支付宝返回App就马上发起网络请求使用了之前保持连接的tcp,但是这时tcp的套接字资源被回收了,所以导致网络请求失败了
解决方案:
- 如果只是短暂的跳出App,可以开启后台任务保证套接字资源不会被回收
- 网络失败时重试网络请求,但是重试需要考虑业务场景,有的业务可以幂等请求有的不可以
- App进入后台时invalidate旧的session,这样回到前台时就不会使用旧session的tcp连接了,而是创建一个新的session
最终选择方案1,适合目前的快速小规模业务;最好的应该是1+3,但是3 invalidate的条件要改下,在程序将要被挂起的时候再invalidate
yarn start
后启动App报错
ERROR TypeError: undefined is not a function, js engine: hermes
ERROR Invariant Violation: Failed to call into JavaScript module method AppRegistry.runApplication(). Module has not been registered as callable. Registered callable JavaScript modules (n = 10): Systrace, JSTimers, HeapCapture, SamplingProfiler, RCTLog, RCTDeviceEventEmitter, RCTNativeAppEventEmitter, GlobalPerformanceLogger, JSDevSupportModule, HMRClient.
A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native., js engine: hermes
原因:react-native-reanimated
库没有pod安装,导致react-native-reanimated
模块出现undefined