【问题标题】:Codenameone Android build with certificate and maps lib fails带有证书和地图库的 Codenameone Android 构建失败
【发布时间】:2018-07-03 18:32:51
【问题描述】:

在尝试解决 native map not showing problem 时,我正在尝试使用证书构建 Android 应用程序。我使用了一个简化测试,其中源仅包含:

    Form hi = new Form("Welcome", new BorderLayout());
    MapContainer c = new MapContainer();
    hi.add(BorderLayout.CENTER, c);
    hi.show();

,以及相关的构建提示:

codename1.android.keystore=...
codename1.android.keystoreAlias=...
codename1.android.keystorePassword=...
codename1.arg.android.debug=false
codename1.arg.android.GoogleMaps.minPlayServicesVersion=9.4.0
codename1.arg.android.playService.maps=true
codename1.arg.android.release=true
codename1.arg.android.xapplication=<meta-data android\:name\="com.google.android.maps.v2.API_KEY" android\:value\="AIza......."/>
codename1.arg.android.playService.maps=true

我使用了通过 CN1 生成器生成的证书。在添加证书之前,构建运行良好,没有任何抱怨,但在添加证书之后,构建失败,并出现与another question with parse CN1Lib 中类似的错误日志。这是完整的error log

我想知道这是否可以解决,或者我需要一些解决方法吗?提前致谢。

编辑: 我不确定这是否有帮助,但可以通过以下方式重现该问题:

  1. 新建一个cn1项目(我用的是Eclipse Oxygen),然后安装原生谷歌地图插件,按照提示刷新cn1lib

  2. 在start()中,将一个新的MapContainer添加到表单中,BorderLayout在Center

  3. 按照 github 中的说明为原生地图 cn1lib 添加构建提示

  4. 在 cn1 设置中添加 Android 证书

  5. 构建项目

未提及的内容保持默认状态

【问题讨论】:

  • 你用的是最新的原生地图cn1lib吗?它看起来与证书无关。错误消息是通用的,您需要查看上面的警告以查看在这种情况下的实际问题:Warning: com.codename1.googlemaps.MapContainer$2$1: can't find enclosing method 'void actionPerformed(com.codename1.ui.events.ActionEvent)' in program class com.codename1.googlemaps.MapContainer$2,这意味着本地地图安装/集成以某种方式失败?
  • cn1lib是通过cn1设置下载的。我会尝试从源代码构建,看看问题是否仍然存在
  • 检查那里的更新,如果你去 Codename One 设置并且有一个新版本,它会让你下载更新。
  • 我尝试通过 cn1 设置 / 直接从 github 下载来检查更新。但是,两者都没有更改“找不到封闭方法”警告。当我删除 Android 证书时,构建过程没有任何问题。我想这将是一个错误?
  • 构建将在没有证书的情况下通过,因为混淆不会运行(它成为调试构建而不是发布构建),因此您将有未解析的条目在运行时而不是编译时失败。您使用的是版本化构建还是其他一些功能?

标签: google-maps codenameone


【解决方案1】:

对于这个问题,我们很抱歉,作为重构工作的一部分,我们推出了一个错误的更新。我刚刚推出了一个修复程序,应该可以更新了。

【讨论】:

  • 我再次尝试了测试应用程序。这次所有警告都消失了,但构建仍然无法通过,出现特定错误:../MyApplication/src/main/java/com/codename1/googlemaps/InternalNativeMapsImpl.java:468: error: cannot find symbol mapInstance .setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { ^ symbol: class OnCameraMoveListener location: class GoogleMap 注意:某些输入文件使用或覆盖了已弃用的 API。
  • 虽然奇​​怪的是,使用 cn1lib 的 v22 可以让构建通过...新的 cn1lib 可能与我怀疑的问题有关
  • 您指的是旧版本的 google play 服务吗?您确定这些是您的代号one_settings 中唯一的 android.* 属性吗?
  • 下面是设置文件仅供参考 ##Sun Feb 04 23:12:43 CST 2018 codename1.vendor=CodenameOne codename1.displayName=MapTest2 codename1.icon=icon.png codename1.arg.java.version =8 codename1.languageLevel=5 codename1.secondaryTitle=MapTest2 codename1.version=1.0 codename1.mainName=MyApplication codename1.ios.certificatePassword= codename1.arg.ios.newStorageLocation=true codename1.rim.signtoolDb=codename1.arg.ios.pods .platform=,7.0 libVersion=205 codename1.ios.certificate= codename1.arg.ios.objC=true ...
  • codename1.android.keystorePassword=...codename1.j2me.nativeTheme=nativej2me.res codename1.rim.signtoolCsk=codename1.arg.ios.pods.sources=,https\://github。 com/CocoaPods/Specs.git
猜你喜欢
  • 2018-02-14
  • 2018-08-08
  • 2017-05-12
  • 1970-01-01
  • 2021-03-29
  • 2018-11-27
  • 1970-01-01
  • 2021-10-29
  • 2018-12-23
相关资源
最近更新 更多