2017-07-11 6 views
0

私はGoogleのビジョンAPIを使用しているAndroidのaarを作成しています。 Playサービスが利用可能かどうかを確認するには、GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)を使用してチェックを追加しました。難読化されたときにClassNotFound Proguardを使用した場合のGoogleApiAvailability

は難読化からこれを除くために私は私はこのエラーを取得しています

-keep class com.google.android.gms.vision.**{*;} 
-keep class com.google.android.gms.common.**{*;} 

を追加しました:

07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication 

I/zygote: Rejecting re-init on previously-failed class java.lang.Class<com.example.textscan.scanner.camera.b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/vision/Detector$Processor; 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Object java.lang.Class.newInstance() (Class.java:-2) 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at android.app.Activity android.app.Instrumentation.newActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent) (Instrumentation.java:1173) 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2708) 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2892) 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1) 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1593) 
07-11 00:36:50.970 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.os.Looper.loop() (Looper.java:164) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6540) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.vision.Detector$Processor" on path: DexPathList[[zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/base.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_dependencies_apk.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_slice_0_apk.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_slice_1_apk.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_slice_2_apk.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_slice_3_apk.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_slice_4_apk.apk", zip file "/data/app/com.example.anujakothekar.myapplication-tunZSOorubmtNQccOZwWPw==/split_lib_slice_5_apk.a 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Object java.lang.Class.newInstance() (Class.java:-2) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at android.app.Activity android.app.Instrumentation.newActivity(java.lang.ClassLoader, java.lang.String, android.content.Intent) (Instrumentation.java:1173) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2708) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2892) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread.-wrap11(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1593) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.os.Looper.loop() (Looper.java:164) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6540) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:240) 
07-11 00:36:50.972 26184-26184/com.example.anujakothekar.myapplication I/zygote:  at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:767) 

更新: 私はこのAARプロジェクトでplayservicesの依存関係を使用していますまた、私のコードは完全に動作しています。 プロジェクトにplayservices依存関係を追加することを避け、単にaarからそれを使用する方法はありますか?

答えて

0

ディレクティブ

-keep class com.google.android.gms.vision.** { *; } 

は、ProGuardのがcom.google.android.gms.vision.Detector$Processorようcom.google.android.gms.visionではなく、インタフェース内のすべてのクラスを維持します。

インターフェイスを維持するために第2のルールを追加:

-keep interface com.google.android.gms.vision.** { *; } 
-keep interface com.google.android.gms.common.** { *; } 

問題を修正すべきです。

+0

同じことを試しても、まだ動作していません。どのようにアンドロイドAARの中でプレイサービスの依存関係を追加するには?私はgradleに依存関係を追加しました。 aarでエクスポートするためにもっと必要なことはありますか? –

関連する問題