英文:
Android golang bind refresh *.aar
问题
我正在使用新模块导入一个aar文件,选择"import JAR or AAR package"选项。最初,我能够从我的库中调用一个方法。然而,在更新库并再次运行Gomobile bind之后,我无法弄清楚如何更新aar文件。在手动更新.aar文件后,新的方法没有显示出来。
重新导入会导致"Project already contains subproject with name 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
}
英文:
I am importing an aar file using the new module > import JAR or AAR package option. Initially I was able call a method from my library. However after updating the library and running Gomobile bind again, I can't figure out how to update the aar file. The new methods are not shown after updating the .aar file manually.
Importing again causes "Project already contains subproject with name mobilelib".
Android Studio 2.2.3
How do I refresh the .aar file?
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
}
答案1
得分: 1
理论上,你有两个选项:
-
每次更改库文件时,手动运行
gomobile bind
命令,然后将AAR文件从Go源代码目录复制到mobilelib
目录,替换旧的AAR文件。最后重新构建项目; -
使用
org.golang.mobile.bind
Gradle插件,该插件应该可以为你完成所有这些工作。
但据我所知,该插件与最新的Gradle工具不兼容,并且无法正常工作。
英文:
In theory, you have two options:
-
Run
gomobile bind
manually each time you change the library, then copy the AAR file from your Go source directory to themobilelib
directory, replacing the old AAR file. And, finally rebuild the project; -
Use the
org.golang.mobile.bind
Gradle plugin, that is supposed to do all of this work for you.
But, as far as I know, the plugin is not up-to-date with the latest Gradle tools and doesn't work properly.
答案2
得分: 0
我遇到了同样的问题。我通过在Go语言中简化一个新函数来解决它。我使用了由gomobile数据类型支持的结构体来返回结果,当我简化函数(将结果编码为简单的字符串)时,一切都正常工作了。
英文:
I had the same problem. I solved it by simplifying a new function on golang. I used struct with supported by gomobile data types to return the result, when I simplified the function (encoded the result into a simple string), everything worked.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论