Android Studio工具问题及解决

1 篇文章 0 订阅

Android Studio工具问题(逐步梳理中~)

Android Studio使用中配合Gradle构建工具,由于Gradle的版本之前差异很大,因此有是在修改project的文件过程中会遇到各种问题,这里记录了我在开发过程中逐渐梳理的遇到的问题。

Project结构:

Project

​ | ---- app

​ | ---- phase1

​ | ---- base

  • app module 是入口模块,目前是空壳。
  • phase1 module是第一阶段测试完成的模块,包含业务功能,UI交互等。
  • base module是基本公共组件,包含公共库的配置等。

找不到DataBindingMapperImpl

DataBinding 是在AS过程中,apt会产生一些中间类,但也需要一些依赖库的支持。这里遇到了一个无法找到DataBindingMapperImpl类的提示。

...
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.databinding.DataBinderMapperImpl" on path: DexPathList[[zip file "/data/app/进程名-iS9nPJeG1xdw4qsgYI0vmg==/base.apk"],nativeLibraryDirectories=[/data/app/进程名-iS9nPJeG1xdw4qsgYI0vmg==/lib/arm64, /system/lib64, /product/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 androidx.databinding.DataBindingUtil.<clinit>(DataBindingUtil.java:32) 
        at androidx.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:284) 
        at com.sanren1024.android.app1.ui.activity.MainActivity.onCreate(MainActivity.kt:74) 
        at android.app.Activity.performCreate(Activity.java:7458) 
        at android.app.Activity.performCreate(Activity.java:7448) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3533) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3738) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2226) 
        at android.os.Handler.dispatchMessage(Handler.java:112) 
        at android.os.Looper.loop(Looper.java:216) 
        at android.app.ActivityThread.main(ActivityThread.java:7779) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:990) 
...

当请配置中,databinding配置在phase1模块的build.gradle文件中。开始运行后,遇到了上述配置。

phase1build.gradle基本配置。**

//...
android {
    compileSdk 30
    buildToolsVersion '30.0.3'
    defaultConfig {
        minSdk 26
        targetSdk 30

        multiDexEnabled true

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    buildFeatures {
        dataBinding = true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
    kotlinOptions {
        jvmTarget = '11'
    }
}
dependencies {

    kapt "androidx.room:room-compiler:2.3.0"

    api project(':rxbase')

    // ...
}

// ...

basebuild.gradle依赖配置。**

// ...
dependencies {

    api 'androidx.core:core-ktx:1.5.0'
    api 'androidx.appcompat:appcompat:1.3.0'
    api 'com.google.android.material:material:1.4.0'
    api 'androidx.constraintlayout:constraintlayout:2.0.4'
    api 'androidx.legacy:legacy-support-v4:1.0.0'

    api "androidx.room:room-ktx:2.3.0"
    api "androidx.room:room-runtime:2.3.0"

    api 'org.slf4j:slf4j-api:1.7.25'
    api 'com.github.tony19:logback-android:2.0.0'

    api 'androidx.work:work-runtime-ktx:2.5.0'

    api "androidx.multidex:multidex:2.0.1"
    api "androidx.preference:preference-ktx:1.1.0"
    api "androidx.preference:preference:1.1.0"

//    testImplementation 'junit:junit:4.13.2'
//    androidTestImplementation 'com.android.support.test:runner:1.0.2'
//    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

解决:

要在module中使用databinding,需要从app modulelibrary module一条完整的以来路径上都配置上databinding=true

图形依赖说明参照stackoverflow databinding-not-working-in-module说明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VoidHope

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值