React native android assembleRelease使用react native 0.50失败

React native android assembleRelease使用react native 0.50失败,react-native-android,React Native Android,使用gradle插件3.0.0 梯度分布4.1.0 反应0.50 Linux fedora 27 应用程序名为u1b。 项目结构 /proj/mob/rn.common(这是node_模块所在的位置以及所有与js相关的东西) /proj/mob/a/u1b——是android应用程序的所在 项目结构与通常由原生创建应用程序脚本创建的项目结构不同(因为我的node_模块不仅仅比android应用程序高一级)。 但不清楚这是否是一个问题 我一直在调试模式下使用react本机库构建android。 现

使用gradle插件3.0.0 梯度分布4.1.0 反应0.50 Linux fedora 27

应用程序名为u1b。 项目结构 /proj/mob/rn.common(这是node_模块所在的位置以及所有与js相关的东西) /proj/mob/a/u1b——是android应用程序的所在

项目结构与通常由原生创建应用程序脚本创建的项目结构不同(因为我的node_模块不仅仅比android应用程序高一级)。 但不清楚这是否是一个问题

我一直在调试模式下使用react本机库构建android。 现在是开始构建发布版的时候了。 但是我遇到了一个问题

bash gradlew AssemblereRelease错误排除:

> Task :app:bundleReleaseJsAndAssets
Scanning folders for symlinks in /home/v/devel/mine/proj/mob/rn.common/node_modules (12ms)
Scanning folders for symlinks in /home/v/devel/mine/proj/mob/rn.common/node_modules (9ms)
Loading dependency graph, done.
warning: the transform cache was reset.
bundle: start
bundle: finish
bundle: Writing bundle output to: /home/v/tmp/u1b/app/intermediates/assets/release/index.android.bundle
bundle: Done writing bundle output
bundle: Copying 18 asset files
bundle: Done copying assets

/home/v/tmp/u1b/app/intermediates/res/merged/release/drawable-mdpi/src_jsapp_img_material_ic_local_library_black_48dp_android_drawablexxhlack_48dp.png: **error: Invalid filename.  Unable to add.**
它正在查看的图像文件确实不在那里。然而,我不知道这个文件名是如何构造的,也不知道为什么有人在寻找它

my gradle.properties包含一个因错误而切换到旧apk的标志

# https://github.com/react-community/react-navigation/issues/1976
android.enableAapt2=false
有人能解释一下图像名称是如何确定的,以及是什么导致了错误吗

谢谢你

问题解决了

我弄清楚了有问题的文件名是如何构造的,然后我就能够减轻“图像文件路径太深”的问题

基本上是下面的文件名

src_jsapp_img_material_ic_local_library_black_48dp_android_drawablexxhblack_48dp.png

是文件位于我的javascript文件夹中的路径的串联(从节点_模块所在的同一级别开始)

my index.android.js引用一个静态图标文件

icon: require('./src/js.app/img/material/ic_local_library_black_48dp/android/drawable-xxhdpi/ic_local_library_black_48dp.png'),
当bundler构造出那个有问题的文件名时,它基本上是将路径的元素附加到文件中,并带有一些“损坏”。就像去掉一个点(所以js.app变成了jsapp)

我只是将该文件复制到了一个更高级别的目录中(以减少发行版构建的文件名的长度) 然后发布版本开始工作

违规文件名的长度约为177个字符。不确定它为什么会给发布版本带来问题。我怀疑这是android工具的局限,而不是facebook的问题。我在buildTools 25.0.3和26.0.2之间来回切换(这也意味着切换android插件版本……整个过程花费了相当多的时间)。但问题出在两个buildtools版本中

所以我认为js静态资源(如图像)的深层目录结构目前是个问题。所以最好使用较小的目录深度。

解决了这个问题

我弄清楚了有问题的文件名是如何构造的,然后我就能够减轻“图像文件路径太深”的问题

基本上是下面的文件名

src_jsapp_img_material_ic_local_library_black_48dp_android_drawablexxhblack_48dp.png

是文件位于我的javascript文件夹中的路径的串联(从节点_模块所在的同一级别开始)

my index.android.js引用一个静态图标文件

icon: require('./src/js.app/img/material/ic_local_library_black_48dp/android/drawable-xxhdpi/ic_local_library_black_48dp.png'),
当bundler构造出那个有问题的文件名时,它基本上是将路径的元素附加到文件中,并带有一些“损坏”。就像去掉一个点(所以js.app变成了jsapp)

我只是将该文件复制到了一个更高级别的目录中(以减少发行版构建的文件名的长度) 然后发布版本开始工作

违规文件名的长度约为177个字符。不确定它为什么会给发布版本带来问题。我怀疑这是android工具的局限,而不是facebook的问题。我在buildTools 25.0.3和26.0.2之间来回切换(这也意味着切换android插件版本……整个过程花费了相当多的时间)。但问题出在两个buildtools版本中


所以我认为js静态资源(如图像)的深层目录结构目前是个问题。因此,最好使用较小的目录深度。

正如您所说,项目结构与使用react native cli创建的项目结构不同。您是否有任何自定义库/字体将其链接到react native link?(即,任何使用ios/android本机模块的库?)我有一个自定义库,它仅是java源代码(没有字体/图像等),基本上是一个只处理一些json内容的函数。我创建了一个符号链接,以“模拟”本机cli创建的dir结构的方式指向我的node_模块。这个特殊的问题发生在我完成之后,正如您所说,项目结构与使用react native cli创建的项目结构不同。您是否有任何自定义库/字体将其链接到react native link?(即,任何使用ios/android本机模块的库?)我有一个自定义库,它仅是java源代码(没有字体/图像等),基本上是一个只处理一些json内容的函数。我创建了一个符号链接,以“模拟”本机cli创建的dir结构的方式指向我的node_模块。这个特殊的问题发生在我这样做之后,基本上,将所有资产放在源文件夹下是一个很好的做法
src/assets/…
基本上,将所有资产放在源文件夹下是一个很好的做法
src/assets/…