生成APK时反应本机Android复制文件错误 [英] React Native Android Duplicate file error when generating apk
问题描述
当我尝试使用./gradlew installRelease
生成android apk时,在控制台中出现此错误:
When I am trying to generate android apk by using ./gradlew installRelease
, I get this error in console:
~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi-v4/src_resources_img_loading.gif: error: Duplicate file.
~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi/src_resources_img_loading.gif: Original is here. The version qualifier may be implied.
我通过Android Studio尝试了Build->Clean Project
,然后再次运行了./gradlew installRelease
;它也不起作用.
I tried Build->Clean Project
via Android Studio and ran ./gradlew installRelease
again; it didn't work either.
此外,我尝试删除build
文件夹,但这也无济于事.
Also, I tried deleting the build
folder, but it doesn't help either.
推荐答案
为您提供一些技巧,希望它能起作用.
Give some tips for you, hope it's work.
使用"react"更新:"16.7.0","react-native"更新为:"0.57.8"
Update with "react": "16.7.0", "react-native": "0.57.8"
自定义 node_modules/react-native/react.gradle ,可以完美解决重复文件错误.将以下代码添加到 currentBundleTask 的创建块中(在 doFirst块之后之后)
Custom node_modules/react-native/react.gradle to solve the Duplicate file error perfectly. Add following code into currentBundleTask's creation block (after doFirst block)
doLast {
def moveFunc = { resSuffix ->
File originalDir = file("${resourcesDir}/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()
}
您可以创建脚本来自动执行.
You can create script to do it automatically.
- 创建
android-react-gradle-fix
文件 - 创建脚本脚本":{
安装后":节点./android-release-gradle-fix.js"
},
"scripts": { "postinstall": "node ./android-release-gradle-fix.js" },
就是这样!运行
npm install
变得很棒.That's it! Run
npm install
to get awesome.注意:如果您像詹金斯一样在ci上运行
npm install
,则可能会出错:postinstall: cannot run in wd %s %s (wd=%s) node
=>只需使用npm install --unsafe-perm
即可Note: If you run
npm install
on ci like jenkins, you may get error:postinstall: cannot run in wd %s %s (wd=%s) node
=> just usenpm install --unsafe-perm
instead这篇关于生成APK时反应本机Android复制文件错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!