Skip to content

Update examples to match new build system #10

@FlorianUekermann

Description

@FlorianUekermann

The new build system (the gradle stuff) is actually relatively nice (although it took me a whole day to figure out all of the details) and removes the need for the android tool.

I don't have time to update the examples right now and would also like to reduce some of the ridiculous boilerplate before that. I'll just document the most interesting ingredients here for later/others. I'll have more time in a couple of weeks.
It may be possible to shorten this a bit, but this is the conventional setup. The root (build) folder should contain these files for packing a .so into an apk with a native activity:

/build.gradle - top level build file (boilerplate)
/setting.gradle - this where the actual build file is includes (boilerplate)
/gradlew (boilerplate to make this work on independent of systems gradle version)
/gradle (boilerplate to make this work on independent of systems gradle version)
/app/build.gradle - actual build file
/app/src/main/AndroidManifest.xml
/app/src/main/jniLibs/armeabi-v7a/libexample.so - put the compiled go library here
/app/src/main/assets - put assets here

Running gradle(w) build will produce an apk.

build.gradle

buildscript {
    repositories {
       jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

/settings.gradle

include ':app'

/app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion = 24
    buildToolsVersion = '25.0.0'

    defaultConfig {
        applicationId = 'com.example.native_activity'
        minSdkVersion 24
        targetSdkVersion  24
        ndk {
            abiFilters 'armeabi-v7a'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            jniDebuggable true
        }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions