我有一个现有的 Codename One 应用程序,希望从 GTFS 实时数据源添加一些数据。一切都很好,直到我添加以下语句:
try {
FeedMessage.parseDelimitedFrom(byteArrayInputStream);
} catch (IOException ex) {
Log.p("transitSelected,ex," + ex);
}
添加这些语句后,本地构建失败并显示:
ProGuard, version 7.2.0-beta2
Error: Can't write [D:\data\Netbeans\HHT\common\target\compliance-check.jar] (Can't read [C:\Users\Still\.m2\repository\com\google\protobuf\protobuf-javalite\3.24.2\protobuf-javalite-3.24.2.jar(;;;;;;;;!META-INF\**)] (Duplicate jar entry [com/google/protobuf/AbstractMessageLite$Builder$LimitedInputStream.class]))
Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate jar entry [META-INF/MANIFEST.MF])Warning: can't write resource [META-INF/MANIFEST.MF] (Duplicate jar entry [META-INF/MANIFEST.MF])
我尝试过很多事情,例如设置 Codename One 构建提示 android.enableProguard=false 并且没有任何效果。除了此页面上的提示 https://groups.google.com/g/codenameone-discussions/c/hcIYL8-WXxo 从项目的 pom.xml 中删除合规性检查行。
还有其他可能的解决方案吗?
项目的pom.xml中的依赖是:
<dependencies>
<dependency>
<groupId>com.codenameone</groupId>
<artifactId>codenameone-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<artifactId>myapplication-CN1CircleProgress</artifactId>
<groupId>com.stylsy.app</groupId>
<version>1.0-SNAPSHOT</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.codenameone</groupId>
<artifactId>googlemaps-common</artifactId>
<version>1.1.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.24.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-javalite</artifactId>
<version>3.24.2</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>3.24.2</version>
</dependency>
</dependencies>
您不能将 protobuf 添加到公共依赖项中并期望它能够正常工作。您可以在 Android 项目目录中编写此代码,但不能在 common 目录中编写,因为它不会转换为 iOS。对于 iOS 版本,您需要编写自己的本机代码。
您需要使用本机接口包装逻辑并在特定平台上调用它。