我的问题类似于这里提出的问题:
如何在多项目Android Build中排除重复的C共享库(.so)?
在我的项目中,我有一个共享库,它有一些本机代码MySharedLib.我有一个TestDuplicateSharedLibApp依赖的应用程序,MySharedLib也有本机代码.
作为gradle构建的一部分,我ndk-build通过设置禁用自动呼叫jni.srcDirs =[].我明确地调用了ndk-build命令.
作为MySharedLib构建过程的一部分,libMySharedLib.so生成并打包到MySharedLib.aar.
TestDuplicateSharedLibApp取决于MySharedLib.作为ndk-build的一部分,libTestDuplicateSharedLibApp.so并被libMySharedLib.so复制到TestDuplicateSharedLibApp/libs目录中.
因为我需要在最终的apk中打包共享库,所以我jniLibs.srcDirs=['libs']在build.gradle中.
当最终的apk被打包时,包装因副本的副本而失败libMyShared.so,其中一个来自MySharedLib.aar和来自TestDuplicateSharedLibApp/libs.我试过pick-first并exclude打包选项,但他们没有帮助.
基本上我需要的是jniLibs.srcDirs文件的等价物.在TestDuplicateSharedLibApp我想说:只包括libTestDuplicateSharedLibApp.so.我设想这样做:jniLibs.srcDirs=[]并且,如果存在jniLibs.srcFiles选项jniLibs.srcFiles='libTestDuplicateSharedLibApp.so'
我很感激解决这个问题的见解.
如何在Android上使用HDF5软件?可以为Android平台编译本机C++库,然后使用HDF5 Java绑定调用吗?
基于是否任何Android NDK编译器上gcc 4.7,支持to_string,stof和其他字符串转换函数?
在我正在使用的NDK中,我找到了函数ext/vstring.h.但功能包含在内
#if (defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99))
Run Code Online (Sandbox Code Playgroud)
我正在启用-std=c++11旗帜.
我如何启用GXX_EXPERIMENTAL_CXX0X?
我有一个多项目Android构建系统.该项目的结构如下:
Root Dir
|
settings.gradle
|
build.gradle
|
Apps
|
app 1
|
build.gradle
|
app 2
|
build.gradle
|
Libs
|
lib 1
|
build.gradle
|
lib 2
|
build.gradle
Run Code Online (Sandbox Code Playgroud)
所有的应用程序和库都有常见的android配置.
在根级build.gradle我有以下内容:
subprojects {
apply plugin: 'android'
android {
compileSdkVersion "Google Inc.:Google APIs:19"
buildToolsVersion "20.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
}
}
}
Run Code Online (Sandbox Code Playgroud)
接下来我想到将以下内容添加到app 1中的build.gradle中
apply plugin: 'com.android.application'
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Cannot add …Run Code Online (Sandbox Code Playgroud)