当前位置: 首页 > 知识库问答 >
问题:

Android:PreviewView导致动态功能模块崩溃

齐英韶
2023-03-14

我正在尝试使用AndroidX.Camera包创建一个按需功能模块。当活动膨胀了包括PreviewView在内的布局时,我感到崩溃。注意,如果我只是使用像TextView这样的简单的东西,那么模块会正确地加载并显示正确的布局,所以我不认为(但愿无论如何)这是我的动态特性设置/下载的一个问题。

同样,如果我在基础应用模块中包含相机依赖关系,这一切都很好,但似乎我应该能够在动态功能模块中做到这一点。我不知道我错过了什么..有人以前遇到过吗?

特征模块的构建。分级:

apply plugin: 'com.android.dynamic-feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
    compileSdkVersion 29

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':app')

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71"
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.core:core-ktx:1.3.1'

    def constraintLayoutVersion = "2.0.0-beta3"
    implementation "androidx.constraintlayout:constraintlayout:$constraintLayoutVersion"

    // CameraX core library
    def camerax_version = "1.0.0-beta06"
    implementation "androidx.camera:camera-core:${camerax_version}"
    implementation "androidx.camera:camera-camera2:${camerax_version}"
    implementation "androidx.camera:camera-lifecycle:${camerax_version}"
    implementation "androidx.camera:camera-view:1.0.0-alpha13"
    implementation "androidx.camera:camera-extensions:1.0.0-alpha13"

    implementation "io.reactivex.rxjava3:rxandroid:3.0.0"

    // androidx
    implementation "androidx.annotation:annotation:1.0.0"
    implementation "androidx.appcompat:appcompat:1.0.0"
    implementation "androidx.cardview:cardview:1.0.0"
    implementation "androidx.gridlayout:gridlayout:1.0.0"
    implementation "androidx.palette:palette:1.0.0"
    implementation "androidx.recyclerview:recyclerview:1.0.0"

}

活动布局文件:

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <androidx.camera.view.PreviewView
        android:id="@+id/viewFinder"
        android:layout_width="match_parent"
        android:layout_height="450dp"
        app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

功能模块中的活动:

class PhotoActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_photo)
    }

    override fun attachBaseContext(newBase: Context?) {
        super.attachBaseContext(newBase)
        SplitCompat.installActivity(this)
    }
}

堆栈跟踪:

2020-10-06 10:53:03.861 27659-27659/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.sample.android.debug, PID: 27659
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sample.android.debug/com.sample.android.image.PhotoActivity}: android.view.InflateException: Binary XML file line #10 in com.sample.android.debug.image:layout/activity_photo: Binary XML file line #10 in com.sample.android.debug.image:layout/activity_photo: Error inflating class androidx.camera.view.PreviewView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: android.view.InflateException: Binary XML file line #10 in com.sample.android.debug.image:layout/activity_photo: Binary XML file line #10 in com.sample.android.debug.image:layout/activity_photo: Error inflating class androidx.camera.view.PreviewView
     Caused by: android.view.InflateException: Binary XML file line #10 in com.sample.android.debug.image:layout/activity_photo: Error inflating class androidx.camera.view.PreviewView
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:854)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:682)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:534)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:481)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.sample.android.image.PhotoActivity.onCreate(PhotoActivity.kt:18)
        at android.app.Activity.performCreate(Activity.java:7825)
        at android.app.Activity.performCreate(Activity.java:7814)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-10-06 10:53:03.861 27659-27659/? E/AndroidRuntime: Caused by: java.lang.NoSuchMethodError: No direct method <init>(Ljava/lang/Object;)V in class Landroidx/lifecycle/MutableLiveData; or its super classes (declaration of 'androidx.lifecycle.MutableLiveData' appears in /data/app/com.sample.android.debug-a4U4CmSx2nFr8mxMFCrakg==/base.apk)
        at androidx.camera.view.PreviewView.<init>(PreviewView.java:80)

共有1个答案

鲜于华容
2023-03-14

这可能会帮到一些人,我的问题是不包括所需的

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

在我的应用程序的build.grade文件中。这里提到了

 类似资料:
  • 问题内容: 我正在Cython中构建一个程序包。我使用以下作为结构: 但是,在Python 3中安装时出现错误。它在Python 2中运行,但是在Python 3中未编译,但出现以下错误: 动态模块未定义模块导出功能 我怎么解决这个问题?是不编译的原因的结构吗? 问题答案: 您需要使用Python 3(可能是)调用setup.py 。这是因为Python 3为模块启动时调用的函数定义了不同的名称,

  • ts 中为 axios 的 config 属性约束新增自定义属性,导致 axios 其他工具函数报错,报错信息如下:Property 'get' does not exist on type 'typeof import("axios")'. 查了一下是因为 axios 模块声明导致 axios 模块被覆盖,请问这种问题该如何解决呢

  • 问题内容: 我有一台受信任的远程服务器,其中存储了许多自定义Python模块。我可以通过HTTP(例如,使用)作为文本/纯文本来获取它们,但是我无法将获取的模块代码保存到本地硬盘上。如何将代码作为完全可操作的Python模块(包括其全局变量和导入)导入? 我想我必须使用和模块功能的某种组合,但是我还无法使其工作。 问题答案: 看起来这应该可以解决问题:导入动态生成的模块 另外,按照ActiveSt

  • 16.6. 动态导入模块 好了,大道理谈够了。让我们谈谈动态倒入数据吧。 首先,让我们看一看正常的导入模块。 import module 语法查看搜索路径寻找已命名模块并以名字导入它们。你甚至于可以以这种方法,以逗号分割同时导入多个模块,本章代码前几行就是这样做的。 例 16.13. 同时导入多个模块 import sys, os, re, unittest 这里同时导入四个模块:sys (

  • 模块功能 nomodule 禁用内核模块加载功能(CONFIG_MODULES)。 [KNL] module.sig_enforce 强制内核在加载模块时检查模块签名(CONFIG_MODULE_SIG),并且只接受具有合法签名的模块。如果内核开启了CONFIG_MODULE_SIG_FORCE,那么无论是否使用此选项,都将强制检查模块的签名。

  • 一、简介 本主要介绍PHPCMS内置相关模块的标签调用方式 二、目录 内容模块 评论模块 投票模块 公告模块 专题模块 会员模块 友情链接模块 企业黄页