我试图从 Android 创建一个发布 apk 文件,但是当我使用 PNG 图像创建一个发布 apk 时,我得到 Duplicate Resource
错误。最初我认为这是因为我在现有项目中犯了一个错误,但是当我使用单个 Image
组件本身创建一个新项目时,我得到了 Duplicate Resource
错误。这是我遵循的步骤
- 创建一个应用程序
react-native init demo
- 在项目根文件夹中创建 assets 文件夹。
- 在 assets 文件夹中添加
PNG
图像。 - 现在使用上述
PNG
图像实现Image
组件。 - 现在使用 cmd 捆绑它
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/
- 然后使用
Generate Signed APK
从Android Studio
生成发布 apk。
这将引发以下错误:
[drawable-mdpi-v4/assets_mario] /Users/jeffreyrajan/Tutorials/RN/errorCheck/android/app/src/main/res/drawable-mdpi/assets_mario.png [drawable-mdpi-v4/assets_mario] /Users/jeffreyrajan/Tutorials/RN/errorCheck/android/app/build/generated/res/react/release/drawable-mdpi-v4/assets_mario.png: Error: Duplicate resources
:app:mergeReleaseResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeReleaseResources'.
> [drawable-mdpi-v4/assets_mario] /Users/jeffreyrajan/Tutorials/RN/errorCheck/android/app/src/main/res/drawable-mdpi/assets_mario.png [drawable-mdpi-v4/assets_mario] /Users/jeffreyrajan/Tutorials/RN/errorCheck/android/app/build/generated/res/react/release/drawable-mdpi-v4/assets_mario.png: Error: Duplicate resources
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 22s
注意:当您生成 release apk
没有任何 PNG 图像时,您不会收到任何错误,它会为您创建 release apk
。
这是其他文件的代码。
应用程序.js
import React, {Component} from 'react';
import {Platform, StyleSheet, Image, View} from 'react-native';
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<Image source={require('./assets/mario.png')} />
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
包.json
{
"name": "errorCheck",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.6.0-alpha.8af6728",
"react-native": "0.57.4"
},
"devDependencies": {
"babel-jest": "23.6.0",
"jest": "23.6.0",
"metro-react-native-babel-preset": "0.49.0",
"react-test-renderer": "16.6.0-alpha.8af6728"
},
"jest": {
"preset": "react-native"
}
}
有什么解决办法吗?
更新:
这是其他细节
classpath 'com.android.tools.build:gradle:3.1.4'
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 16
compileSdkVersion = 27
targetSdkVersion = 26
supportLibVersion = "27.1.1"
}
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
尝试使用 Android Studio 3.0, 3.0.1, 3.1, 3.1.4 & 3.2
原文由 Jeffrey Rajan 发布,翻译遵循 CC BY-SA 4.0 许可协议
在尝试了很多解决方案后,我发现只有三个解决方案有效。他们来了
解决方案1:
使用 Gradle 从终端清理
drawable
文件夹。cd
进入android
文件夹,然后运行cmd./gradlew clean
解决方案2:
捆绑后从
Android Studio
中删除drawable
文件夹。您可以在android/app/src/main/res/drawable
解决方案3:
在此解决方案中,您无需删除任何可绘制文件夹。只需在您可以在
node_modules/react-native/react.gradle
路径下找到的 react.gradle 文件中添加以下代码作为参考,我将在此处添加完整的 react.gradle 文件代码
信用: ZeroCool00 mkchx