【问题标题】:Creating Android AAR file from open source and add it to my own project从开源创建 Android AAR 文件并将其添加到我自己的项目中
【发布时间】:2022-08-24 06:32:47
【问题描述】:

嘿,我很难弄清楚为什么当我将 .aar 文件的导出添加到我自己的项目中时它似乎不起作用。

我正在使用 Expanable-tab 项目,它通过 build.gradle 将它拥有的库编译为 .aap 文件:

apply plugin: \'com.android.library\'
apply plugin: \'kotlin-android\'

ext.versionMajor = 1
ext.versionMinor = 2
ext.versionPatch = 1

android {
    compileSdkVersion 30

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 30
        versionCode versionMajor * 100000 + versionMinor * 100 + versionPatch * 1
        versionName \"$versionMajor.$versionMinor.$versionPatch\"
        setProperty(\"archivesBaseName\", \"expandable-fab\")

        // Changes the name of generated AAR artifacts to be more descriptive
        libraryVariants.all { variant ->
            variant.outputs.all { output ->
                if (outputFileName.endsWith(\'.aar\')) {
                    outputFileName = \"${archivesBaseName}-${versionName}.aar\"
                }
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(\'proguard-android-optimize.txt\'), \'proguard-rules.pro\'
        }
    }

    sourceSets {
        main.java.srcDirs += \'src/main/kotlin\'
    }
}

dependencies {
    implementation fileTree(dir: \'libs\', include: [\'*.jar\'])
    implementation\"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"
    implementation \'com.google.android.material:material:1.4.0\'
    implementation \'androidx.appcompat:appcompat:1.3.1\'
}

apply from: \'generate-docs-and-update-website.gradle\'
apply from: \'publish-artifacts-to-maven-repo.gradle\'

当我重建项目时,我导航到expandable-fab-master\\library\\build\\outputs\\aar 目录,其中已生成expandable-fab-1.2.1.aar 文件。

然后我将 .aap 文件复制到我自己项目中的 libs 文件夹中:

然后我继续将它添加到 build.gradle:

选择重建选项时所有这些编译 - 没有错误。

但是,当它到达我的应用程序中使用可扩展工厂代码的地步时,它会崩溃并出现以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myapp, PID: 19960
    android.view.InflateException: Binary XML file line #36 in com.myapp:layout/_fragvideoplay1: Binary XML file line #36 in com.myapp:layout/_fragvideoplay1: Error inflating class com.nambimobile.widgets.efab.ExpandableFabLayout
    Caused by: android.view.InflateException: Binary XML file line #36 in com.myapp:layout/_fragvideoplay1: Error inflating class com.nambimobile.widgets.efab.ExpandableFabLayout
    Caused by: java.lang.reflect.InvocationTargetException

及其引用的代码(videoPlay.java:99):

如果我注释掉 implementation files(\'libs/expandable-fab-1.2.1.aar\') 并取消注释原来的 implementation \'com.nambimobile.widgets:expandable-fab:1.2.1\' 然后运行应用程序,它应该可以正常工作......

我在这里想念什么?

    标签: java android android-studio jar aar


    【解决方案1】:

    这是因为您如何将 aar 文件用作 gradle 依赖项。既然你已经有了

    implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
    

    你不必做

    implementation("libs/library_name")
    

    而是这样做:

    implementation(name: "library_name", ext: "aar")
    

    我希望这有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多