问题描述
我有一个相当复杂的项目,其中一些是过去一年左右的旧代码,在React Native时代是永远的.常规调试版本运行良好,但发行版本存在错误.我已将其他地方的答案拼凑到尽我所能的程度,但我不知道该如何克服.
I've got a rather complicated project some of which is older code from the past year or so which in React Native time is forever.The regular debug build is working fine but the release build has errors. I've cobbled together answers from other places to make it as far as I have but I don't know how to get past this last bit.
我不断收到一个捆绑错误,其中aapt将失败,因为它无法正确捆绑资源.
I keep getting a bundling error where aapt will fail because it doesn't bundle the resources properly.
错误代码示例:
> Task :app:bundleReleaseJsAndAssets
Scanning folders for symlinks in /media/user/1546c7ef-f386-4baa-90d5-cbd87092d3e31/home/user/Code/React-Native/timesavr/node_modules (9ms)
Scanning folders for symlinks in /media/user/1546c7ef-f386-4baa-90d5-cbd87092d3e31/home/user/Code/React-Native/timesavr/node_modules (6ms)
warning: the transform cache was reset.
Loading dependency graph, done.
bundle: Writing bundle output to: /media/user/1546c7ef-f386-4baa-90d5-cbd87092d3e31/home/user/Code/React-Native/timesavr/android/app/build/intermediates/assets/release/index.android.bundle
bundle: Done writing bundle output
error: resource android:style/TextAppearance.Material.Widget.Button.Borderless.Colored not found.
error: resource android:style/TextAppearance.Material.Widget.Button.Colored not found.
/home/user/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.2.aar/28fa7b5f2db0b5e014559f7cf36ab4c7/res/values-v26/values-v26.xml:9:5-12:13: AAPT: error: resource android:attr/colorError not found.
/home/user/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.2.aar/28fa7b5f2db0b5e014559f7cf36ab4c7/res/values-v26/values-v26.xml:13:5-16:13: AAPT: error: resource android:attr/colorError not found.
/home/user/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.0.2.aar/28fa7b5f2db0b5e014559f7cf36ab4c7/res/values-v26/values-v26.xml:17:5-93: AAPT: error: style attribute 'android:attr/keyboardNavigationCluster' not found.
error: failed linking references.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native-image-resizer:verifyReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt
推荐答案
为我解决此问题的方法是,深入研究触发错误的支持库的node_modules代码.
The way to solve this that worked for me is to dive into the node_modules code for the supporting libraries that are triggering the error.
您将需要进入node_modules/project-name/android/build.gradle并进行更改
You will need to go into node_modules/project-name/android/build.gradle and change this
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
...
}
到/android/app/build.gradle中的sdk版本.例如:
to whatever the sdk version is in your /android/app/build.gradle is.For example:
android {
compileSdkVersion 27
buildToolsVersion "27.0.1"
...
}
希望这将在React Native中修复,因此不需要此解决方法.
Hopefully this will be fixed in React Native so this workaround isn't necessary.
我怀疑Petter的解决方案是更好的解决方案,尽管我自己还没有尝试过.可能先尝试一个,如果不起作用,请尝试下一个.
I suspect Petter's solution is the better one although I haven't tried it myself. Probably try that one first and if it doesn't work, try this next.
这篇关于React Native Android版本构建失败-Gradle的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!