Android gradle复制本机共享库

时间:2014-10-30 23:53:41

标签: android android-ndk android-studio android-gradle

我的问题类似于这里提出的问题:

How to Exclude Duplicate C Shared Libraries (.so) in a Multi-Project Android Build?

在我的项目中,我有一个共享库,其中包含一些本机代码MySharedLib。我有一个应用TestDuplicateSharedLibApp,它取决于MySharedLib并且还有本机代码。

作为Gradle构建的一部分,我通过设置ndk-build禁用对jni.srcDirs =[]的自动调用。我明确地调用了ndk-build命令。

作为MySharedLib构建过程的一部分,libMySharedLib.so已生成并打包到MySharedLib.aar

TestDuplicateSharedLibApp取决于MySharedLib。作为ndk-build的一部分,libTestDuplicateSharedLibApp.solibMySharedLib.so将复制到TestDuplicateSharedLibApp/libs目录。

由于我需要在最终的apk中打包共享库,因此我的build.gradle中有jniLibs.srcDirs=['libs']

当打包最终的apk时,由于libMyShared.so的副本,MySharedLib.aar的一个副本和TestDuplicateSharedLibApp/libs的其他副本,打包失败。我尝试了pick-firstexclude打包选项,但他们没有帮助。

基本上我需要的是文件的等效jniLibs.srcDirs。在TestDuplicateSharedLibApp我想说:只包括libTestDuplicateSharedLibApp.so。我设想这样做:jniLibs.srcDirs=[],如果存在jniLibs.srcFiles选项jniLibs.srcFiles='libTestDuplicateSharedLibApp.so'

我很感激解决这个问题的见解。

0 个答案:

没有答案