已签名的React Native应用未正确加载资产

时间:2019-01-17 04:35:10

标签: android react-native localhost react-native-android packager

因此,我使用USB电缆在调试模式下运行该应用程序,效果很好。然后,我使用USB电缆运行发行版,它也可以正常工作,直到我将其与手机断开连接并重新启动应用程序。该应用程序无法再加载资产。我已经尝试过引用herehere的所有方法,但是仍然没有帮助。

当应用无法加载资产时,它会记录以下消息:

[Error: Could not fetch data from url http://localhost:8081/assets/src/assets/modelv2.pb?platform=android&hash=889b05962c1b1b35b1c07a84b98bcc63]
      framesToPop: 1,
      code: 'EUNSPECIFIED',
      line: 17119,
      column: 31,
      sourceURL: 'http://localhost:8081/index.delta?platform=android&dev=true&minify=false' }

因此,这意味着它仍在尝试从已死的本地主机打包程序中获取资产。请帮帮我!

反应原生语言:^ 0.55.4

反应:^ 16.3.1

index.js

import { AppRegistry } from 'react-native';
import App from './App'; 
AppRegistry.registerComponent('TagMosquito', () => App);

2 个答案:

答案 0 :(得分:0)

如果您要创建一个签名APK(Android APK使用了签名apk,因此我想创建一个APK),则首先需要创建一个包。 如果您已经创建了它,那么请告诉我您所使用的命令,并仅分享您项目结构的屏幕快照,它还应显示您的主索引文件和android资产文件夹路径,然后我将为您提供该命令。现在,你只是。

如果不使用以下命令。

Android

react-native包--entry-file index.js-平台android --dev否--bundle-output ./android/app/src/main/assets/index.android.bundle-资产目标./android/app/src/main/res /

iOS(它会自行创建捆绑包,如果没有,请使用以下命令)

反应本地包--entry-file index.js --platform ios --dev假--bundle-output main.jsbundle

请让我知道是否有任何命令不起作用,则需要进行一些修改。如果可行,则需要检查是否创建了一个名为 main.jsbundle

的新文件。

答案 1 :(得分:0)

在这种情况下可以将shrinkResources设置为false。如果您在应用程序的shrinkResources文件中启用了build.gradle,Gradle可以代表您自动删除未使用的资源。

release {
            ..
            minifyEnabled true
            shrinkResources false    <-- set this false
            proguardFiles getDefaultProguardFile()
        }