小编zma*_*tin的帖子

使用NDK包括预编译的静态库

我希望包含一个在我的Android Studio NDK项目中预编译的静态库.我正在使用Android Studio 1.0.1,任何在SO上尝试此问题的解决方案似乎已过时(或涉及创建库项目并包含它).

结构如下:

app
/--src
/--main
/--java
+--jni
+--jniLibs
   /--armeabi
       /--libpng.a
    --armeabiv7
       /--libpng.a
    ...(for each abi)
Run Code Online (Sandbox Code Playgroud)

我试图包括库libpng.我尝试创建jniLibs(根据ph0b(awesome guide,btw)并将libpng.a添加到相应的ABI文件夹.这仍然给我错误 - 当我尝试使用以下代码编译时找不到-llibpng:

ndk {
        moduleName "game" 
        cFlags "-std=c++11 -fexceptions -DANDROID -I${project.buildDir}/../src/main/jni/include \
                -I${project.buildDir}/../src/main/jni/include/png"
        ldLibs "EGL", "GLESv3", "dl", "log", "android", "libpng"
        stl "gnustl_static"
}
Run Code Online (Sandbox Code Playgroud)

android android-ndk android-studio

18
推荐指数
1
解决办法
1万
查看次数

Scons Hierachical Build

我已经完成了这里的scons构建示例,发现他们希望提供适合我项目的解决方案.

结构如下:

root/
   Module_A/
      include/
         foo.h
         bar.h
      src/
         foo.cpp
         bar.cpp
   Module_.../
Run Code Online (Sandbox Code Playgroud)

每个模块都遵循相同的结构,包括所有.h的include文件夹和cpps的src文件.每个模块构建为共享对象.没有可执行文件.

模块具有交叉依赖性.例如,Module_A是日志记录机制,它用于模块B,C,D等.同样,Module_B是配置加载程序,在其他几个模块中使用.Module_C将是IPC模块,几乎用于列出的每个模块.最后,Module_D是命令中心,并链接到每个其他模块(字面意思).

我有兴趣替换我们使用递归make来构建项目的当前设置.我正在尝试构建必要的sconstruct和SConscripts,但我甚至很新,甚至是scons.

我有兴趣将每个Module的.cpp和.h转换为.so并使其依赖关系自动解决,就像make now一样.

在SConscript中,我目前使用glob来获取*.cpps,然后在CPPPATH中包含模块的'./include'.我用过

env.SharedLibrary(CPPATH='./include', source= (list of the cpps))

但由于这取决于其他模块,它将无法工作,说明使用的其他模块的功能是"未声明".

如何使用分层scons设置来构建这种复杂的结构?

build scons

2
推荐指数
1
解决办法
452
查看次数

标签 统计

android ×1

android-ndk ×1

android-studio ×1

build ×1

scons ×1