Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React本机Android gradle multiDexKeepFile和multiDexKeepProguard属性-如何包含来自第三方库的类?_Android_Android Multidex - Fatal编程技术网

React本机Android gradle multiDexKeepFile和multiDexKeepProguard属性-如何包含来自第三方库的类?

React本机Android gradle multiDexKeepFile和multiDexKeepProguard属性-如何包含来自第三方库的类?,android,android-multidex,Android,Android Multidex,在最近一次Android应用程序更新后,它在第一次打开后崩溃。这是由于根据日志文件输出的multiDex问题造成的。在Play开发者控制台中,我得到 java.lang.NoClassDefFoundError类似以下错误: java.lang.NoClassDefFoundError: at com.google.android.gms.internal.zzcel.zzxK (Unknown Source) at com.google.android.gms.internal.zz

在最近一次Android应用程序更新后,它在第一次打开后崩溃。这是由于根据日志文件输出的
multiDex
问题造成的。在Play开发者控制台中,我得到

java.lang.NoClassDefFoundError
类似以下错误:

java.lang.NoClassDefFoundError: 
  at com.google.android.gms.internal.zzcel.zzxK (Unknown Source)
  at com.google.android.gms.internal.zzcfv.<init> (Unknown Source)
  at com.google.android.gms.internal.zzcgk.<init> (Unknown Source)
  at com.google.android.gms.internal.zzcgk.zzbj (Unknown Source)
  at com.google.android.gms.internal.zzcgb.onReceive (Unknown Source)
  at com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver.onReceive (Unknown Source)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:2725)
  at android.app.ActivityThread.-wrap14 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1421)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:148)
  at android.app.ActivityThread.main (ActivityThread.java:5417)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)
该目录中的multidex-config.txt具有:

com/google/android/gms/measurement/AppMeasurementInstallReferrerReceiver.class
但是,当我试图通过运行
npm run build android prod
(我的npm脚本是
export ENVFILE=.env.prod&&cd android&&./gradlew assembleerelease&&cd..
)来创建发布版apk时,它最终失败,最后几行是:

  Copying resources from program directory [/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/build/intermediates/transforms/mergeJavaRes/release/folders/2/1f/main] (filtered)
  Copying resources from program directory [/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/build/intermediates/classes/release] (filtered)
Printing classes to [/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/build/outputs/mapping/release/dump.txt]...
:app:transformClassesWithMultidexlistForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithMultidexlistForRelease'.
> com.android.build.api.transform.TransformException: proguard.ParseException: Unexpected keyword 'com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver.class' in line 1 of file '/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/multidex-config.pro'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 29.609 secs

npm ERR! Darwin 16.7.0
npm ERR! argv "/usr/local/Cellar/node/7.8.0/bin/node" "/usr/local/bin/npm" "run" "build-android-prod" "--stacktrace" "--debug"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! MyApp@0.0.1 build-android-prod: `export ENVFILE=.env.prod && cd android && ./gradlew assembleRelease && cd ..`
npm ERR! Exit status 1
...
困扰我的一行是:
com.android.build.api.transform.TransformException:proguard.ParseException:文件'/Users/patneedham/Desktop/dev/react native/MyApp/android/app/multidex config.pro'第1行中的意外关键字'com.google.android.gms.measurement.appmeasurementintInstallReferreReceiver.class'。

好吧,我意识到我忘记了
关键字,所以我添加了
-keep
com.google…
,构建成功,并上传到了google Play alpha频道,但同样的第一个开放应用程序崩溃发生了。为了更清楚地了解这一点,当我在Google play store屏幕上单击“打开”按钮时,一两秒钟后,我又看到一个白色屏幕,然后它关闭,默认的应用程序崩溃警报显示“不幸的是,MyApp已停止”


当应用程序第一次打开时,如何防止出现此
NoClassDefFoundError

首先,让我们验证是否确实缺少有问题的类。您可以使用Android Studio的Apk分析器来实现这一点。此外,Android Studio 3.0(目前处于测试阶段)使跟踪和修复Proguard问题变得更加容易-请务必观看。
  Copying resources from program directory [/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/build/intermediates/transforms/mergeJavaRes/release/folders/2/1f/main] (filtered)
  Copying resources from program directory [/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/build/intermediates/classes/release] (filtered)
Printing classes to [/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/build/outputs/mapping/release/dump.txt]...
:app:transformClassesWithMultidexlistForRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithMultidexlistForRelease'.
> com.android.build.api.transform.TransformException: proguard.ParseException: Unexpected keyword 'com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver.class' in line 1 of file '/Users/patneedham/Desktop/dev/react-native/MyApp/android/app/multidex-config.pro'

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 29.609 secs

npm ERR! Darwin 16.7.0
npm ERR! argv "/usr/local/Cellar/node/7.8.0/bin/node" "/usr/local/bin/npm" "run" "build-android-prod" "--stacktrace" "--debug"
npm ERR! node v7.8.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! MyApp@0.0.1 build-android-prod: `export ENVFILE=.env.prod && cd android && ./gradlew assembleRelease && cd ..`
npm ERR! Exit status 1
...