CainKernel / CainCamera

CainCamera is an Android Project to learn about development of beauty camera, image and short video
2.87k stars 783 forks source link

打包编译arm64-v8a时,报错,是libffmpeg.so的问题还是其他问题 #79

Closed HeYongRui closed 5 years ago

HeYongRui commented 5 years ago

Caused by: org.gradle.internal.UncheckedException: Build command failed. Error while executing process C:\Users\admin\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build D:\sinokru\ArtMacao\medialibrary.externalNativeBuild\cmake\release\arm64-v8a --target video_editor} [1/10] Building CXX object VideoEditor/CMakeFiles/video_editor.dir/source/MediaRecorder.cpp.o [2/10] Building C object VideoEditor/CMakeFiles/video_editor.dir/source/command/ffmpeg_filter.c.o [3/10] Building C object VideoEditor/CMakeFiles/video_editor.dir/source/command/ffmpeg.c.o [4/10] Building CXX object VideoEditor/CMakeFiles/video_editor.dir/android/CainShortVideoEditor.cpp.o [5/10] Building CXX object VideoEditor/CMakeFiles/video_editor.dir/source/VideoCutEditor.cpp.o [6/10] Building CXX object VideoEditor/CMakeFiles/video_editor.dir/source/AudioCutEditor.cpp.o [7/10] Building C object VideoEditor/CMakeFiles/video_editor ..... Linking CXX shared library D:\sinokru\ArtMacao\medialibrary\build\intermediates\cmake\release\obj\arm64-v8a\libvideo_editor.so FAILED: cmd.exe /C "cd . && C:\Users\admin\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android --gcc-toolchain=C:/Users/admin/AppData/Local/Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=C:/Users/admin/AppData/Local/Android/Sdk/ndk-bundle/sysroot -fPIC -isystem C:/Users/admin/AppData/Local/Android/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -DSTDC_CONSTANT_MACROS -O2 -DNDEBUG -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a --sysroot C:/Users/admin/AppData/Local/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm64 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libvideo_editor.so -o D:\sinokru\ArtMacao\medialibrary\build\intermediates\cmake\release\obj\arm64-v8a\libvideo_editor.so VideoEditor/CMakeFiles/video_editor.dir/source/command/cmdutils.c.o VideoEditor/CMakeFiles/video_editor.dir/source/command/ffmpeg.c.o VideoEditor/CMakeFiles/video_editor.dir/source/command/ffmpeg_filter.c.o VideoEditor/CMakeFiles/video_editor.dir/source/command/ffmpeg_opt.c.o VideoEditor/CMakeFiles/video_editor.dir/source/AudioCutEditor.cpp.o VideoEditor/CMakeFiles/video_editor.dir/source/VideoCutEditor.cpp.o VideoEditor/CMakeFiles/video_editor.dir/source/MediaRecorder.cpp.o VideoEditor/CMakeFiles/video_editor.dir/android/CainShortVideoEditor.cpp.o VideoEditor/CMakeFiles/video_editor.dir/android/com_cgfay_media_CainShortVideoEditor.cpp.o D:/sinokru/ArtMacao/medialibrary/src/main/cpp/../jniLibs/arm64-v8a/libffmpeg.so -landroid -ljnigraphics -llog -latomic -lm "C:/Users/admin/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/libgnustl_static.a" && cd ." D:/sinokru/ArtMacao/medialibrary/src/main/cpp/../jniLibs/arm64-v8a/libffmpeg.so: error adding symbols: File in wrong format clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed.

at com.android.build.gradle.tasks.ExternalNativeBuildTaskUtils.executeBuildProcessAndLogError(ExternalNativeBuildTaskUtils.java:245)
at com.android.build.gradle.tasks.ExternalNativeBuildTask.executeProcessBatch(ExternalNativeBuildTask.java:307)
at com.android.build.gradle.tasks.ExternalNativeBuildTask.build(ExternalNativeBuildTask.java:185)
at sun.reflect.GeneratedMethodAccessor1166.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
... 47 more
CainKernel commented 5 years ago

这个地方应该是module里面的 abiFilters 没有添加。目前由于依赖引用的问题,app module 和 medialibrary module 都要修改添加 arm64-v8a

HeYongRui commented 5 years ago

这个地方应该是module里面的 abiFilters 没有添加。目前由于依赖引用的问题,app module 和 medialibrary module 都要修改添加 arm64-v8a 就是加了abiFilters "armeabi-v7a", "arm64-v8a"才不行的,不知道是不是cpp文件下的那些c++文件和video_editor或者ffmpeg.so的问题。因为arm64-v8a的so包不是源项目的包

CainKernel commented 5 years ago

等我周末编个包吧。工作日要加班,没时间整这块。

HeYongRui commented 5 years ago

等我周末编个包吧。工作日要加班,没时间整这块。

您好,知道您工作很忙,同时还要维护这个开源,确实很不方便。但还是冒昧的想咨询一下,因为目前主要核心部分用到的您这个,而且时间很急,找替补方案也来不及,而且各个细节和功能方面您自己是最清楚的,所以还是想麻烦您看一下有没有什么解决的方案。有必要的话接受有偿,谢谢!

CainKernel commented 5 years ago

如果真的着急使用,可以先用ijkplayer的库编译一个。fdk-aac库不用也没太大关系,只需要libx264就好。这周末我不用加班和做其他事情,可以帮忙编译一个,到时候我把整个编译源码和工具放到github上,你自取就好。

HeYongRui commented 5 years ago

如果真的着急使用,可以先用ijkplayer的库编译一个。fdk-aac库不用也没太大关系,只需要libx264就好。这周末我不用加班和做其他事情,可以帮忙编译一个,到时候我把整个编译源码和工具放到github上,你自取就好。

🙏

CainKernel commented 5 years ago

编译脚本已上传,可以自行编译验证: https://github.com/CainKernel/FFmpegAndroid

HeYongRui commented 5 years ago

编译脚本已上传,可以自行编译验证: https://github.com/CainKernel/FFmpegAndroid

thx~