android - 创建创建输出jar的自定义gradle项目时出现问题

标签 android gradle android-gradle-plugin

我目前有一个自定义的build.gradle,它可以cmake并构建一个SWIG c++项目并生成一个jar文件供我的android项目使用。 ( jar 在cmake内生成)

我当前的设置大部分都可以使用。 jar文件已正确链接到我的android项目,并且构建良好。我唯一的问题是android studio无法识别该库。没有自动完成功能在起作用,它强调了将我的媒体库的所有使用作为错误。

C++项目build.gradle

task cmakeMyLibrary(type: Exec) {
     inputs.file 'CMakeLists.txt'
     outputs.file 'Makefile'

     ext.jarFile = new File(parent.buildDir, "mylibrary.jar")

     commandLine 'cmake' ...
}

task makeMyLibrary(type: Exec, dependsOn: cmakeMyLibrary) {

    inputs.dir '.'

    outputs.file cmakeMyLibrary.jarFile

    commandLine 'make', '-j10'
}

task cleanMyLibrary(type: Exec) {
     commandLine 'make', 'clean'
}

configurations.create('default')
artifacts {
    it."default"(cmakeMyLibrary.jarFile) {
        builtBy makeMyLibrary
    }
}

android项目build.grade
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion "18.1.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile project(':mylibrary')
}

每次我执行“使用gradle文件同步项目”时,都会得到一个异常(exception):
Gradle 'MyApplication6' project refresh failed:
exception during working with external system: java.lang.AssertionError 
at com.android.tools.idea.gradle.dependency.ModuleDependency.getModuleName(ModuleDependency.java:49) 
at com.android.tools.idea.gradle.dependency.ModuleDependency. (ModuleDependency.java:43) 
at com.android.tools.idea.gradle.dependency.Dependency.populate(Dependency.java:143) 
at com.android.tools.idea.gradle.dependency.Dependency.extractFrom(Dependency.java:106) 
at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.populateModuleDependencies(AndroidGradleProjectResolver.java:154) 
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.doResolveProjectInfo(GradleProjectResolver.java:232) 
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.access$000(GradleProjectResolver.java:60) 
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$1.fun(GradleProjectResolver.java:116) 
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$1.fun(GradleProjectResolver.java:112) 
at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.java:190) 
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:112) 
at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:60) 
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:41) 
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:37) 
at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:59) 
at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:37) 
at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:49) 
at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:53) 
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:130) 
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:120) 
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3.execute(ExternalSystemUtil.java:441) 
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$4$2.run(ExternalSystemUtil.java:504) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:464) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) 
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) 
at com.intellij.openapi.progress.impl.ProgressManagerImpl$8.run(ProgressManagerImpl.java:373) 
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:435) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:152)

当我查看gradle源时,似乎断言传递给getModuleName的路径为空。

最佳答案

可能无法帮助您回答问题,但请确保从18.1.1和0.7。+升级到Build Tools 19.0.1和Android Gradle插件0.8.1(或最新版本)。过去使用gradle / IntelliJ时,存在一些由旧版本的bug引起的错误。您将要确保Gradle包装器最多为0.10,但是IntelliJ会提示您有关情况。

可能相关:https://code.google.com/p/android/issues/detail?id=62391

也许发布更多有关您的项目结构的信息...或者由于已经过去了一个多月,请告诉我们您是否已找到解决方法... :)

关于android - 创建创建输出jar的自定义gradle项目时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986672/

相关文章:

Android Studio 3.1 "Run"不编译代码

android - Gradle 构建错误 : aidl. exe 以非零退出值 1 完成

android-studio - 在 Android Studio 中下载并提交 gradle 依赖项和插件

android - Nearby Messages API 在发布时返回状态代码 2806

java - 为什么总是属性android :hintTextColor not found

android - CRASHES 和 ANRS 报告

android - android studio 3.4.2 gradle项目同步失败错误,无法解决依赖关系错误?

android - 如何在命令行中为新的 Android 项目构建 gradle

android - 在 RelativeLayout 内部移动 ImageView

gradle - Gradle找不到Gson 2.5