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项目执行报错
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
关于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))");
}
重新运行即已正常。
精彩链接
发表评论