【问题标题】:after upgrading Android studio 3.0, dependency error occurred on externalNativeBuildRelease升级Android studio 3.0后,externalNativeBuildRelease出现依赖错误
【发布时间】:2017-11-20 00:52:03
【问题描述】:

在 2.3.3 上,构建运行良好,但是在升级 3.0.0 后出现此问题。有谁能帮助我吗? 原因是没有生成libSDL2.so,但是我不明白为什么SDLActivity模块在SDL2-android-studio完成构建之前就开始构建。

我认为 SDLActivity 模块在 SDL2-android-studio 模块的构建作业完成后开始构建。事实上,在 2.3.3 上,它起作用了。但是,在 3.0.0 上,它没有。也就是说,在 2.3.3 上,SDLActivity 的任务 externaNativeBuildRelease 在 SDL-android-studio 的任务完成之后开始。在 3.0.0 上,在 SDL-android-stduio-studio 的任务 transformClassesAndResourcesWithPrepareIntermediateJasrForDebug 之后,处理所有的 SDLActivity。 如何控制任务之间的依赖关系?

提前致谢。

SDL2 模块的 build.gradle 如下所示。

apply plugin: 'com.android.library' 

android 
{
    compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"

        ndk {
            abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
        }
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang'
            }

        }
    }

    externalNativeBuild {
        cmake {
            path 'android-cmake/CMakeLists.txt'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        debug {
            jniDebuggable true
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
}

而且,SDLActivity 的 build.gradle 如下所示。

apply plugin: 'com.android.library'

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"

        ndk {
            abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
        }
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang',
                        '-DANDROID_PLATFORM=android-21'
                cppFlags "-std=c++11"
            }

        }
    }

    externalNativeBuild {
        cmake {
            path 'CMakeLists.txt'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            jniDebuggable true
        }
    }

}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    androidTestCompile 'junit:junit:4.12'
    testCompile 'junit:junit:4.12'
    compile project(':SDL2-android-studio')
    compile project(':libtciplayer')
    compile project(':TciSdk')
    compile project(':soundtouch')
}

在 3.0.0 上,构建失败

执行任务:[:SDLActivity:generateReleaseSources, :SDLActivity:mockableAndroidJar, :SDLActivity:compileReleaseUnitTestSources, :SDLActivity:compileReleaseSources]

...

:SDLActivity:preReleaseUnitTestBuild UP-TO-DATE :SDLActivity:javaPreCompileReleaseUnitTest :SDLActivity:compileReleaseUnitTestJavaWithJavac :SDLActivity:processReleaseJavaRes 无源 :SDLActivity:processReleaseUnitTestJavaRes 无源 :SDLActivity:compileReleaseUnitTestSources :SDLActivity:generateJsonModelRelease :SDLActivity:externalNativeBuildRelease 构建主arm64-v8a 忍者:错误:'D:/corelab_proj/GearToTciPlayer2/distribution/main/lib 需要'../../../../../distribution/SDL2/lib/arm64-v8a/libSDL2.so' /arm64-v8a/libmain.so',缺少并且没有已知的规则来制作它 :SDLActivity:externalNativeBuildRelease 失败

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':SDLActivity:externalNativeBuildRelease' 执行失败。

    构建命令失败。 使用参数执行进程 D:\User-expansion\Android\sdk\cmake\3.6.4111459\bin\cmake.exe 时出错 {--build D:\corelab_proj\GearToTciPlayer2\SDLActivity.externalNativeBuild\cmake\release\arm64-v8a --目标主要} 忍者:错误:'D:/corelab_proj/GearToTciPlayer2/distribution/main/lib 需要'../../../../../distribution/SDL2/lib/arm64-v8a/libSDL2.so' /arm64-v8a/libmain.so',丢失并且没有已知的规则来制作它

  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

  • 通过https://help.gradle.org获得更多帮助

13 秒后构建失败

69 个可操作的任务:19 个已执行,50 个最新

但是,在 2.3.3 上,构建成功

执行任务:[:SDLActivity:generateReleaseSources, :SDLActivity:prepareReleaseUnitTestDependencies, :SDLActivity:mockableAndroidJar, :SDLActivity:compileReleaseUnitTestSources, :SDLActivity:compileReleaseSources]

按需配置是一项孵化功能。 setTestClassesDir(File) 方法已被弃用,并计划在 Gradle 5.0 中删除。请改用 setTestClassesDirs(FileCollection) 方法。 getTestClassesDir() 方法已被弃用,并计划在 Gradle 5.0 中删除。请改用 getTestClassesDirs() 方法。 ConfigurableReport.setDestination(Object) 方法已被弃用,并计划在 Gradle 5.0 中删除。请改用 ConfigurableReport.setDestination(File) 方法。 :SDL2-android-studio:preBuild UP-TO-DATE :SDL2-android-studio:preReleaseBuild UP-TO-DATE :SDL2-android-studio:checkReleaseManifest :SDL2-android-studio:prepareReleaseDependencies :SDL2-android-studio:compileReleaseAidl UP-TO-DATE :SDL2-android-studio:compileLint UP-TO-DATE :SDL2-android-studio:copyReleaseLint 无源 :SDL2-android-studio:mergeReleaseShaders 最新 :SDL2-android-studio:compileReleaseShaders UP-TO-DATE :SDL2-android-studio:generateReleaseAssets UP-TO-DATE :SDL2-android-studio:mergeReleaseAssets 最新 :SDL2-android-studio:mergeReleaseProguardFiles UP-TO-DATE :SDL2-android-studio:packageReleaseRenderscript 无源 :SDL2-android-studio:compileReleaseRenderscript UP-TO-DATE :SDL2-android-studio:generateReleaseResValues UP-TO-DATE :SDL2-android-studio:generateReleaseResources UP-TO-DATE :SDL2-android-studio:packageReleaseResources UP-TO-DATE :SDL2-android-studio:processReleaseManifest UP-TO-DATE :SDL2-android-studio:generateReleaseBuildConfig UP-TO-DATE :SDL2-android-studio:processReleaseResources 最新 :SDL2-android-studio:generateReleaseSources UP-TO-DATE :SDL2-android-studio:incrementalReleaseJavaCompilationSafeguard :SDL2-android-studio:javaPreCompileRelease :SDL2-android-studio:compileReleaseJavaWithJavac :SDL2-android-studio:processReleaseJavaRes 无源 :SDL2-android-studio:transformResourcesWithMergeJavaResForRelease :SDL2-android-studio:transformClassesAndResourcesWithSyncLibJarsForRelease :SDL2-android-studio:generateJsonModelRelease :SDL2-android-studio:externalNativeBuildRelease 构建 SDL2 arm64-v8a [1/114] 构建 C 对象 CMakeFiles/SDL2.dir/D_/corelab_proj/GearToTciPlayer2/SDL2-android-studio/src/SDL_log.c.o ... [114/114] 链接 C 共享库 D:\corelab_proj\GearToTciPlayer2\dis tribution\SDL2\lib\arm64-v8a\libSDL2.so 构建 SDL2 x86 [1/114] 构建 C 对象 ... [114/114] 链接 C 共享库 D:\corelab_pr oj\GearToTciPlayer2\distribution\SDL2\lib\x86\libSDL2.so 构建 SDL2 armeabi-v7a [1/114] 构建 C 对象 CMakeFiles/SDL2.dir/D_/corelab_proj/GearToTciPlayer2/SDL2-android-studio/src/dynapi/SDL_dynapi.c.o ... [114/114] 链接 C 共享库 D:\corelab_proj\GearToTciPlayer2\distribution\SDL2\lib\armeabi-v7a\libSDL2.so :SDL2-android-studio:mergeReleaseJniLibFolders :SDL2-android-studio:transformNativeLibsWithMergeJniLibsForRelease :SDL2-android-studio:transformNativeLibsWithStripDebugSymbolForRelease :SDL2-android-studio:transformNativeLibsWithSyncJniLibsForRelease :SDL2-android-studio:bundleRelease :SDLActivity:preBuild UP-TO-DATE :SDLActivity:preReleaseBuild UP-TO-DATE :SDLActivity:checkReleaseManifest :SDLActivity:preDebugAndroidTestBuild UP-TO-DATE :SDLActivity:preDebugBuild UP-TO-DATE :SDLActivity:preDebugUnitTestBuild UP-TO-DATE :SDLActivity:preReleaseUnitTestBuild UP-TO-DATE :SDLActivity:prepareAndroidArchLifecycleRuntime100Library :SDLActivity:prepareComAndroidSupportAnimatedVectorDrawable2610Library :SDLActivity:prepareComAndroidSupportAppcompatV72610Library :SDLActivity:prepareComAndroidSupportSupportCompat2610Library :SDLActivity:prepareComAndroidSupportSupportCoreUi2610Library :SDLActivity:prepareComAndroidSupportSupportCoreUtils2610Library :SDLActivity:prepareComAndroidSupportSupportFragment2610Library :SDLActivity:prepareComAndroidSupportSupportMediaCompat2610Library :SDLActivity:prepareComAndroidSupportSupportV42610Library :SDLActivity:prepareComAndroidSupportSupportVectorDrawable2610Library :SDLActivity:prepareReleaseDependencies :SDLActivity:compileReleaseAidl 最新 :SDLActivity:compileReleaseRenderscript UP-TO-DATE :SDLActivity:generateReleaseBuildConfig UP-TO-DATE :SDLActivity:generateReleaseResValues UP-TO-DATE :SDLActivity:generateReleaseResources 最新 :SDLActivity:mergeReleaseResources 最新 :SDLActivity:processReleaseManifest 最新 :SDLActivity:processReleaseResources :SDLActivity:generateReleaseSources :SDLActivity:prepareReleaseUnitTestDependencies :SDLActivity:mockableAndroidJar UP-TO-DATE :SDLActivity:incrementalReleaseJavaCompilationSafeguard :SDLActivity:javaPreCompileRelease :SDLActivity:compileReleaseJavaWithJavac 注意:某些输入文件使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。

:SDLActivity:incrementalReleaseUnitTestJavaCompilationSafeguard 无源 :SDLActivity:javaPreCompileReleaseUnitTest :SDLActivity:compileReleaseUnitTestJavaWithJavac :SDLActivity:processReleaseJavaRes 无源 :SDLActivity:processReleaseUnitTestJavaRes 无源 :SDLActivity:compileReleaseUnitTestSources :SDLActivity:generateJsonModelRelease :SDLActivity:externalNativeBuildRelease [1/10] 构建 CXX 对象 CMakeFiles/main.dir/src/cpp/SDLAudioImpl.cpp.o ... [10/10] 链接CXX shar 编辑库 D:\corelab_proj\GearToTciPlayer2\dist ribution\main\lib\armeabi-v7a\libmain.so :SDLActivity:compileReleaseSources

在 1m 38s 内构建成功 133 个可操作的任务:77 个已执行,56 个最新

【问题讨论】:

  • SDL2 模块的 build.gradle 可能会有所帮助
  • 我已经添加了 gradle 文件。

标签: android cmake android-ndk android-studio-3.0 gradle-dependencies


【解决方案1】:

我参考这个https://github.com/googlesamples/android-ndk/issues/450解决了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2018-04-07
    • 2021-05-01
    • 2019-05-04
    • 2018-09-10
    相关资源
    最近更新 更多