Android golang bind refresh * .aar

时间:2017-02-05 04:04:33

标签: java android android-studio go

我正在使用新模块导入aar文件>导入JAR或AAR包选项。最初我可以从我的库中调用一个方法。但是在更新库并再次运行Gomobile绑定后,我无法弄清楚如何更新aar文件。手动更新.aar文件后,不显示新方法。 再次导入会导致“项目已包含名为mobilelib的子项目”。

Android Studio 2.2.3 如何刷新.aar文件?

的build.gradle(APP)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "com.testing.testgolanglib"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile project(':mobilelib')
}

mobilelib

configurations.maybeCreate("default")
artifacts.add("default", file('mobilelib.aar'))

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:2.2.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        flatDir{
            dirs '/Users/abc/projects/go/src/com.abc/mobilelib'
        }

    }

}

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

2 个答案:

答案 0 :(得分:1)

理论上,您有两种选择:

  1. 每次更改库时手动运行gomobile bind,然后将AAR文件从Go源目录复制到mobilelib目录,替换旧的AAR文件。最后,重建项目;

  2. 使用org.golang.mobile.bind Gradle插件,该插件应该为您完成所有这些工作。

  3. 但是,据我所知,该插件不是最新的Gradle工具,并且无法正常工作。

答案 1 :(得分:0)

我有同样的问题。我通过简化golang的新功能解决了该问题。我使用受gomobile数据类型支持的struct返回结果,当我简化函数(将结果编码为简单的字符串)后,一切正常。