Hello,

I am struggling to build a simple native library depending on another 
native third-party shared library (turbojpeg). This native library is 
basically a wrapper of turbojpeg library.

I have followed the documentation I have found here:
http://tools.android.com/tech-docs/android-ndk-preview
http://tools.android.com/tech-docs/new-build-system/gradle-experimental

However I am unable to make Android Studio find the third-party library. 
Here is the project setup

Project build.gradle:

// Top-level build file where you can add configuration options common to all 
sub-projects/modules.
buildscript {
    repositories {
       jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}



app module build.gradle:

apply plugin: 'com.android.model.application'
model {
    android {
        compileSdkVersion = 21
        buildToolsVersion = "22.0.1"

        defaultConfig.with {
            applicationId = "com.stephane.turbojpegplugin"
            minSdkVersion.apiLevel = 19
            targetSdkVersion.apiLevel = 19
        }
    }
    /*
     * native build settings
     */
    android.ndk {
        moduleName = "TurboJpegPlugin"
        stl = "stlport_static"
        ldLibs = [ "turbojpeg" ]
        /*
         * Other ndk flags configurable here are
         * cppFlags += "-fno-rtti"
         * cppFlags += "-fno-exceptions"
         * ldLibs    = ["android", "log"]
         * stl       = "system"
         */
    }
    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles += file('proguard-rules.txt')
        }
    }
    android.productFlavors {
        // for detailed abiFilter descriptions, refer to "Supported ABIs" @
        // https://developer.android.com/ndk/guides/abis.html#sa
        create("arm7") {
            ndk.abiFilters += "armeabi-v7a"
        }
    }
}


Gradle builds sucessfully with these files however at project build here is 
the output:

Information:Gradle tasks [clean, :app:compileArm7DebugSources, :app:
compileArm7DebugAndroidTestSources]
:app:clean
:app:copyArmeabi-v7aDebugTurboJpegPluginSharedLibraryGdbServer
:app:createArmeabi-v7aDebugTurboJpegPluginSharedLibraryGdbsetup
:app:compileArmeabi-
v7aDebugTurboJpegPluginSharedLibraryTurboJpegPluginMainCpp
:app:linkArmeabi-v7aDebugTurboJpegPluginSharedLibrary
D:\Dev\android-ndk-r10e\toolchains\arm-linux-androideabi-4.9\prebuilt\
windows-x86_64\arm-linux-androideabi\bin\ld.exe
Error:error: cannot find -lturbojpeg
D:\Dev\projects\android\TurboJpegPlugin\app\src\main\jni\TurboJpegPlugin.cpp
Error:(9) undefined reference to 'tjInitDecompress'
Error:(10) undefined reference to 'tjDecompressHeader2'
Error:(13) undefined reference to 'tjDecompress2'
Error:(14) undefined reference to 'tjDestroy'
Error:error: ld returned 1 exit status
Error:Execution failed for task 
':app:linkArmeabi-v7aDebugTurboJpegPluginSharedLibrary'.
> A build operation failed.
     Linker failed while linking libTurboJpegPlugin.so.
 See the complete log at: file:
///D:/Dev/projects/android/TurboJpegPlugin/app/build/tmp/linkArmeabi-v7aDebugTurboJpegPluginSharedLibrary/output.txt
Information:BUILD FAILED
Information:Total time: 0.763 secs
Information:7 errors
Information:0 warnings
Information:See complete output in console


The turbojpeg library is in the jniLibs folder like this:

<https://lh3.googleusercontent.com/-yBTIB9DYN1E/VcTUDr-LKvI/AAAAAAAABb0/SVPc191qycM/s1600/2015-08-07_17h51_24.png>

Following older articles/documentation, the jniLibs folder is where the 
native shared libraries should be put to Android Studio automatically find 
them but it seems it not the case anymore. Did I miss something?

Any help would be greatly appreciated.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to