动态模块功能和ML套件崩溃在应用程序打开


应用具有ML套件功能(翻译)。我正在尝试通过引入动态模块功能(按需加载)来降低应用程序尺寸。

遵循本指南 添加'com.google.mlkit:Playstore-Dynamic-feature-Support:16.0.0-Beta1'to base apk的build.gradle

com.google.mlkit:翻译:16.1.2在功能模块build.gradle中

一切都编译并试图在模拟器上运行,但不幸的是,App上崩溃了。


java.lang.RuntimeException: Unable to get provider com.google.mlkit.common.internal.MlKitInitProvider: com.google.firebase.components.MissingDependencyException: Unsatisfied dependency for component Component<[class com.google.android.gms.internal.mlkit_translate.zzxa]>{0, type=0, deps=[Dependency{anInterface=class com.google.mlkit.common.sdkinternal.SharedPrefManager, type=required, injection=direct}, Dependency{anInterface=class com.google.android.gms.internal.mlkit_translate.zzwx, type=required, injection=direct}]}: class com.google.mlkit.common.sdkinternal.SharedPrefManager

 Caused by: com.google.firebase.components.MissingDependencyException: Unsatisfied dependency for component Component<[class com.google.android.gms.internal.mlkit_translate.zzxa]>{0, type=0, deps=[Dependency{anInterface=class com.google.mlkit.common.sdkinternal.SharedPrefManager, type=required, injection=direct}, Dependency{anInterface=class com.google.android.gms.internal.mlkit_translate.zzwx, type=required, injection=direct}]}: class com.google.mlkit.common.sdkinternal.SharedPrefManager
    
  

哪种是没有意义的。因为我添加了PlayStore-Dynamic-Feature-Support。


弄清楚了,

步骤1.在应用模块中禁用mlkitinitprovider(停止应用程序崩溃)


<provider
android:name="com.google.mlkit.common.internal.MlKitInitProvider"
            android:authorities="${applicationId}.mlkitinitprovider"
            tools:node="remove"
            />
  

第2步。 构建APK并打开应用清单,查找应用程序中使用的所有MLKIT注册商。 步骤3。 将所有发现的全部添加到componentRegistrar Array arraylist; 步骤4。 在动态功能库中,调用mlkitcontext.initialize(上下文,arr); (在GetProvider中,服务提供商)在使用MLKIT功能之前;

另外,仅在应用模块中使用这些MLKIT依赖项(用于拆分安装) API组:'com.google.mlkit',名称:'common',版本:'17 .5.0' API组:'com.google.mlkit',名称:'PlayStore-Dynamic-feature-support',版本:'16 .0.0-beta1'

动态模块功能和ML套件崩溃在应用程序打开的相关文章

随机推荐