代号一 - ProGuard - 重复的 jar 条目

问题描述 投票:0回答:1

我有一个现有的 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>
codenameone proguard
1个回答
0
投票

您不能将 protobuf 添加到公共依赖项中并期望它能够正常工作。您可以在 Android 项目目录中编写此代码,但不能在 common 目录中编写,因为它不会转换为 iOS。对于 iOS 版本,您需要编写自己的本机代码。

您需要使用本机接口包装逻辑并在特定平台上调用它。

© www.soinside.com 2019 - 2024. All rights reserved.