当我们试图用gomobile bind编译我们的框架的AAR版本时,我们面临一个编译问题。它与iOS框架绑定得很好。
以下是我们得到的错误:
$ make build_android
cd ./gomobile/logger && gomobile bind -o ../build/logger.aar -target=android . ../levelenum ../remotelogger ../apiclient ../userproperties
gomobile: javac -d /var/folders/p6/vvxrsdbj1bg87kkgk3k77cn40000gp/T/gomobile-work-357624003/javac-output -source 1.7 -target 1.7 -bootclasspath /Users/robin/Library/Android/sdk/platforms/android-29/android.jar apiclient/Apiclient.java apiclient/AuthenticationArgs.java apiclient/PostArgs.java go/Seq.java go/Universe.java go/error.java levelenum/Level.java levelenum/Levelenum.java logger/Logger.java logger/Logger_.java remotelogger/Remotelogger.java userproperties/ApplicationProperties.java userproperties/CarrierProperties.java userproperties/DeviceProperties.java userproperties/NetworkProperties.java userproperties/OSProperties.java userproperties/Userproperties.java failed: exit status 1
apiclient/Apiclient.java:12: error: class APIClient is public, should be declared in a file named APIClient.java
public final class APIClient implements Seq.Proxy {
^
remotelogger/Remotelogger.java:12: error: class RemoteLogger is public, should be declared in a file named RemoteLogger.java
public final class RemoteLogger implements Seq.Proxy {
^
userproperties/Userproperties.java:12: error: class UserProperties is public, should be declared in a file named UserProperties.java
public final class UserProperties implements Seq.Proxy {
^
./apiclient/Apiclient.java:12: error: class APIClient is public, should be declared in a file named APIClient.java
public final class APIClient implements Seq.Proxy {
^
apiclient/Apiclient.java:13: error: cannot access Apiclient
static { Apiclient.touch(); }
^
bad source file: ./apiclient/Apiclient.java
file does not contain class apiclient.Apiclient
Please remove or make sure it appears in the correct subdirectory of the sourcepath.
5 errors
make: *** [build_android] Error 1例如,我们的APIClient.go文件如下所示:
package apiclient
import (
"bytes"
"fmt"
"io/ioutil"
"log"
"net/http"
"time"
)
// APIClient : handler of the Network request
type APIClient struct {
BaseURL string
}文件夹结构是:
gomobile/
Makefile
go.mod
go.sum
build/
logger.framework (iOS)
logger.aar (Android) <---- Should be here but cannot be built
apiclient/
apiclient.go
logger/
logger.go
userproperties/
userproperties.go发布于 2022-10-13 19:08:22
虽然这个问题已经很老了,但我遇到了同样的问题,我认为我可以在这里发布解决方案,以防其他人遇到这个问题。
这个问题似乎是由于与包的名称相同的类型造成的。给其中一个重新命名为我解决了这个问题。
https://stackoverflow.com/questions/57325926
复制相似问题