同様の質問はすでに尋ねられている必要があります。ただし、これはAndroid Platforms。の互換性の変更により、以前のものよりも複雑に思われます。
Android Beta ProgramにサインアップされているPixelおよびPixel2からのエラーログを次に示します。
08-16 13:20:53.146 9630-9630/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: me.project.Android.dev, PID: 9630
Java.lang.NoClassDefFoundError: Failed resolution of: Lorg/Apache/commons/logging/LogFactory;
at com.amazonaws.util.VersionInfoUtils.<clinit>(VersionInfoUtils.Java:41)
at com.amazonaws.util.VersionInfoUtils.c(VersionInfoUtils.Java:77)
at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.Java:43)
//project specific class reference removed
at Android.os.Handler.handleCallback(Handler.Java:873)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:193)
at Android.app.ActivityThread.main(ActivityThread.Java:6669)
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:858)
Caused by: Java.lang.ClassNotFoundException: Didn't find class "org.Apache.commons.logging.LogFactory" on path: DexPathList[[Zip file "/data/app/me.project.Android.dev-0SPRJnc8-4voauRU7Y20zQ==/base.apk"],nativeLibraryDirectories=[/data/app/me.project.Android.dev-0SPRJnc8-4voauRU7Y20zQ==/lib/arm64, /data/app/me.project.Android.dev-0SPRJnc8-4voauRU7Y20zQ==/base.apk!/lib/arm64-v8a, /system/lib64, /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 com.amazonaws.util.VersionInfoUtils.<clinit>(VersionInfoUtils.Java:41)
at com.amazonaws.util.VersionInfoUtils.c(VersionInfoUtils.Java:77)
at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.Java:43)
//project specific class reference removed
at Android.os.Handler.handleCallback(Handler.Java:873)
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:193)
at Android.app.ActivityThread.main(ActivityThread.Java:6669)
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:858)
Android 7.0以前を実行しているデバイスで実行した場合、同じコードは完全に正常に動作します。
私も自分のプロジェクトに依存関係を追加しようとしました
implementation "commons-logging:commons-logging:1.2"
この依存関係を追加すると、アプリはPixelおよびPixelで動作しますが、例外を言って他のすべてのデバイスでクラッシュします
org.Apache.commons.logging.impl.LogFactoryImpl does not extend or implement org.Apache.commons.logging.LogFactory
ProGuardですべての変更を既に試みました。ここに私のプロガード構成があります
-keep class org.Apache.commons.logging.impl.LogFactoryImpl
-keep class org.Apache.commons.logging.LogFactory
-keepnames class org.Apache.commons.logging.impl.* {*;}
-keepnames class org.Apache.commons.logging.*
-keepclassmembers class org.Apache.commons.logging.impl.* {*;}
-keepclassmembers class org.Apache.commons.logging.*
-keepnames interface org.Apache.commons.logging.impl.* {*;}
-keepnames interface org.Apache.commons.logging.*
それでもクラッシュの原因です。
この問題はAmazon AWS SDKに関連しています- https://github.com/aws/aws-sdk-Android/issues/476
AWSがSDKを更新してこの問題を修正するまで、回避策はありますか?
これはAWS SDKのバグで、 SDKのバージョン2.6. で解決されているようです。
Apache Commons Loggingを使用してロガーを取得するとクラッシュするバグを修正しましたAndroid 9.0(Pie/API Level 28)。プル#521を参照してください。依存関係として、それ以外の場合はAndroid.util.Logが使用されます。
マニフェストファイルに次の行を追加します。
<uses-library Android:name ="org.Apache.http.legacy" Android:required ="false"/>
この問題を修正するために、gradleファイルに依存関係実装 "commons-logging:commons-logging-api:1.1"がありました。
別の回避策は、implementation
を使用する代わりに_commons-logging
_ライブラリを_.jar
_ファイルとして_libs/
_フォルダーに追加することです。 implementation fileTree(include: ['*.jar'], dir: 'libs')
が依存関係にあることを確認してください。
_commons-logging-1.2.jar
_のソース:
クレジット:Dale Lim- https://github.com/aws/aws-sdk-Android/issues/265#issuecomment-411978696