Android: Allow building of native libraries inside Android Studio / Gradle

This commit is contained in:
Eder Bastos
2015-05-18 20:22:01 -04:00
parent 7e6ec5fa86
commit 9c19d91e18
3 changed files with 69 additions and 10 deletions

View File

@ -39,4 +39,5 @@ tasks.xml
gradle/
build/
*.so
*.iml
*.iml
build.properties

View File

@ -41,6 +41,10 @@ android {
applicationIdSuffix ".debug"
versionNameSuffix '-debug'
jniDebuggable true
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(compileNative)
}
}
}
}
@ -58,3 +62,53 @@ dependencies {
// For loading huge screenshots from the disk.
compile 'com.squareup.picasso:picasso:2.5.2'
}
task setupCMake(type: Exec) {
// Check if a build properties file exists.
def propsFile = rootProject.file("build.properties")
// If it does, call CMake.
if (propsFile.canRead()) {
// Read the properties file's contents.
def buildProperties = new Properties()
buildProperties.load(new FileInputStream(propsFile))
mkdir('build/' + buildProperties.abi)
workingDir 'build/' + buildProperties.abi
executable 'cmake'
args "-DANDROID=true",
"-DANDROID_NATIVE_API_LEVEL=android-18",
"-DCMAKE_TOOLCHAIN_FILE=../../../android.toolchain.cmake",
"../../../../..",
"-DGIT_EXECUTABLE=" + buildProperties.gitPath,
"-DANDROID_NDK=" + buildProperties.ndkPath,
"-DANDROID_TOOLCHAIN_NAME=" + buildProperties.toolchain,
"-DANDROID_ABI=" + buildProperties.abi
} else {
executable 'echo'
args 'No build.properties found; skipping CMake.'
}
}
task compileNative(type: Exec, dependsOn: 'setupCMake') {
// Check if a build properties file exists.
def propsFile = rootProject.file("build.properties")
// If it does, call make.
if (propsFile.canRead()) {
// Read the properties file's contents.
def buildProperties = new Properties()
buildProperties.load(new FileInputStream(propsFile))
workingDir 'build/' + buildProperties.abi
executable 'make'
args buildProperties.makeArgs
} else {
executable 'echo'
args 'No build.properties found; skipping native build.'
}
}