google.android.gms:play-services-oss-licenses 在混淆后不工作
google.android.gms:play-services-oss-licenses not working after obfuscation
我正在处理个人 android 应用程序。混淆后无法启动OssLicensesMenuActivity。应用程序崩溃。它工作正常,没有混淆。
startActivity(new Intent(getContext(), com.google.android.gms.oss.licenses.OssLicensesMenuActivity.class));
这是我的发布配置:
release {
minifyEnabled true
debuggable true
shrinkResources true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
我将这一行添加到 proguard-rules.pro:
-keep class com.google.android.gms.oss.licenses.** { *; }
此外,我在官方指南中看不到proguard文档:
https://developers.google.com/android/guides/opensource
只有我的应用程序的发布版本崩溃。以下错误来自 Logcat.
你能帮我看看为什么会出现这个错误,解决方法是什么?
2019-04-21 13:03:01.051 com.myapp.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapp.myapp, PID: 10763
android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class x
Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class x
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.x" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/lib/arm64, /data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at com.google.android.gms.oss.licenses.zzp.onComplete(:18)
at com.google.android.gms.tasks.zzj.run(:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7045)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
好的,我发现了问题。我在 res/raw/keep.xml
.
中保留可绘制资源
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict"
tools:keep="@drawable/*"/>
我删除了 tools:shrinkMode="strict"
并解决了问题。一切正常。
我正在处理个人 android 应用程序。混淆后无法启动OssLicensesMenuActivity。应用程序崩溃。它工作正常,没有混淆。
startActivity(new Intent(getContext(), com.google.android.gms.oss.licenses.OssLicensesMenuActivity.class));
这是我的发布配置:
release {
minifyEnabled true
debuggable true
shrinkResources true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
我将这一行添加到 proguard-rules.pro:
-keep class com.google.android.gms.oss.licenses.** { *; }
此外,我在官方指南中看不到proguard文档: https://developers.google.com/android/guides/opensource
只有我的应用程序的发布版本崩溃。以下错误来自 Logcat.
你能帮我看看为什么会出现这个错误,解决方法是什么?
2019-04-21 13:03:01.051 com.myapp.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapp.myapp, PID: 10763
android.view.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class x
Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class x
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.x" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/lib/arm64, /data/app/com.myapp.myapp-pBk73fi1FLACrYcen4kXlg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:703)
at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:68)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at com.google.android.gms.oss.licenses.zzp.onComplete(:18)
at com.google.android.gms.tasks.zzj.run(:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7045)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
好的,我发现了问题。我在 res/raw/keep.xml
.
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict"
tools:keep="@drawable/*"/>
我删除了 tools:shrinkMode="strict"
并解决了问题。一切正常。