我正在开发一个Android SDK,其架构基于https://github.com/android10/Android-CleanArchitecture/的略微修改版本。
布里奇的建筑:
Data -> Android Library that contains all the Realm, API calls etc
Domain -> POJ library that contains all the business logic
SDK -> Android library that contains SDK related screens and other business logic
基本假设
我在SDK中添加了Data
和Domain
作为compile(:project)。我在SDK项目中编写了一个proguard配置,它处理大多数常见的Android相关规则和一些与自定义库相关的东西。我的假设是这个设置是正确的,我会向开发人员提供一些SDK相关规则,他们将能够在他们的应用程序下使用SDK。
现在我在Data中有一个名为Configuration
的类,它是单例。我添加了以下规则来避免NoClassDefFoundError:
# Common flags
-keepattributes InnerClasses,Signature
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
# Class specific rule
-keep public class com.company.android.data.Configuration { *; }
我最终还是
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.company.android.data.Configuration" on path: DexPathList[[zip file "/data/app/com.company.android.sdk.sample-2/base.apk"],nativeLibraryDirectories=[/data/app/com.simpl.android.sdk.sample-2/lib/arm, /vendor/lib, /system/lib]]
10-19 17:00:26.134 30554-30554/com.company.android.sdk.sample E/AndroidRuntime:
有关如何解决此问题的任何建议吗?