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

Android studio-带库项目的应用程序无法生成

长孙玉泽
2023-03-14

我在尝试构建我的应用程序项目时遇到了巨大的麻烦。我有主应用程序模块和库项目模块,如下所示:

这是格拉德尔。为每个模块构建:

主应用程序:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android'
repositories {
    mavenCentral()
}
android {
    compileSdkVersion 19
    buildToolsVersion '19.0.0'

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }
    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
    productFlavors {
        defaultFlavor {
            proguardFile 'proguard-rules.txt'
        }
    }
}
dependencies {
    compile 'com.android.support:support-v13:19.0.+'
    compile 'com.google.android.gms:play-services:4.0.+'
    compile project(':libraries:datetimepicker')
}

这个是图书馆项目的:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }
    release {
        runProguard true
        proguardFile 'proguard-rules.txt'
        proguardFile getDefaultProguardFile('proguard-android-ptimize.txt')
    }
}

dependencies {
    compile 'com.android.support:support-v4:19.0.+'
}

最后,这是项目settings.gradle文件

include ':App', ':libraries:datetimepicker'

我能够成功地将包从库导入到我的应用程序代码并使用它们,但是当我尝试编译时,我会得到以下结果:

Gradle: Execution failed for task ':App:compileDefaultFlavorDebug'.
> Compilation failed; see the compiler error output for details.

E:\blah\blah\MyClass.java
Gradle: error: cannot find symbol class DatePickerDialog
Gradle: error: package DatePickerDialog does not exist
Gradle: error: cannot find symbol class DatePickerDialog
Gradle: error: cannot find symbol class DatePickerDialog
Gradle: error: cannot find symbol variable DatePickerDialog
Gradle: error: method does not override or implement a method from a supertype

我已经试着解决这个问题三天了,几乎用尽了我在这里能找到的所有类似问题的解决方案。我对android的开发很有信心,但对gradle不太有信心,可能做了一些明显错误的事情。

一些额外信息:

  • Android Studio v0.3.6
  • Android SDK构建工具rev 19
  • Gradle版本1.8

有没有办法解决这个问题?

共有2个答案

孟佑运
2023-03-14

只是明确地告诉gradle,你的库项目不能通过添加/修改部分来缩小

android/buildTypes/debug

您的库项目的build.gradle文件,如下图所示(MinifyEnablefalse是关键):

android {
...
    buildTypes {
        debug {
            debuggable true
            minifyEnabled false
        }
...
    }
...
}

注:

在这里,我还明确指示gradle使我的“调试”构建可调试(debugable true)。

韩景胜
2023-03-14

当Gradle构建库项目时,它正在构建发布类型,即使您正在为主应用构建调试类型(这是一个bug)。在库项目中,您已经为发布版本类型配置了Proguard,Proguard正在混淆符号名称,使它们对应用程序不可见。

由于您控制库代码,最好不要在库构建中运行Proguard,而只在主应用的发布版本中运行它。它会混淆所有代码,包括依赖项。

如果你真的想独立地混淆库代码,你需要设置Proguard规则来公开库的公共符号,DatePickerDialog就是其中之一。

 类似资料:
  • 我试图用Visual Studio生成以下示例C++代码: 我根据以下内容构建了驱动程序:https://github.com/mongodb/mongo-cxx-driver/blob/master/appveyor.yml 系统信息:-Win10-Visual Studio Community 2015 Update 3-使用Boost 1.60.0 64位-使用CMake 3.7.0-使用G

  • 我需要为ant创建构建文件来构建我的,我已经搜索了很多,但没有任何帮助。它仍然显示错误并且不编译。当我尝试运行jar文件时,jar文件无法被删除。这里是 这里是错误

  • 当我键入npx create react app project时,突然出现了这个错误 错误是:包config/home/swaraj/中定义的“exports”主目标“index.js”无效。npm/_npx/8451/lib/node_modules/create react app/node_modules/is promise/package。json 谁能告诉我这个错误是什么以及如何解决

  • 我有一个项目被配置为: CMake项目 静态库A src(取决于B) 静态Lib B src(取决于Qt)

  • 我对分级建造系统和智能是新的。 那么我如何创建一个Android库项目(例如com.myapp.lib1)和应用程序项目(例如com.myapp.app),并使构建系统在应用程序项目上包含com.myapp.lib1呢? 我转到Project Structure->Modules->我的App项目,并向lib项目添加了一个依赖项。IntelliJ现在在应用程序项目中使用时可以从lib项目中识别类,

  • Weblogic是否有任何免费可用的应用程序(war文件),其中应用程序使用某种数据库? 如果这不是正确的地方,请将我重定向到正确的地方问这个问题。