我对ASSIMP Android版的编译有疑问。

我使用Android NDK(和JNI)在JAVA Activity 中调用C++代码。

Gradle调用我的CMakelist来编译我的共享库。在此CMakelist中,我的目标是.cpp文件和库子目录(assimp和glm)。 assimp版本会引发错误:“错误:找不到-lpthread”

我的问题是:如何编译ASSIMP,如何在我的Android NDK项目中包括assimp?

最佳答案

对于我的示例项目,我正在使用以下Assimp-gradle buid文件,它对我来说很好用。一个重要的注意事项:禁用unittest的东西(必须将选项ASSIMP_BUILD_TESTS设置为off),因为assimp中存在关于gthread的pthread支持的错误。

android {
    compileSdkVersion 24
    buildToolsVersion '26.0.2'

    defaultConfig {
        applicationId "com.app.kkulling_solutions.assimpviewer"
        minSdkVersion 21
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        externalNativeBuild {
            cmake {
                arguments '-DASSIMP_BUILD_ZLIB=ON -DASSIMP_BUILD_TESTS=OFF'
                cppFlags '-fexceptions -frtti -std=c++11'
            }
        }
        //-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
    }

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

    externalNativeBuild {
        cmake {
            path 'src/main/cpp/JNI/CMakeLists.txt'
        }

    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.1.1'
}

如果您还有其他问题,请告诉我!

10-08 13:55