【发布时间】: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。
我想知道这是否可以解决,或者我需要一些解决方法吗?提前致谢。
编辑: 我不确定这是否有帮助,但可以通过以下方式重现该问题:
新建一个cn1项目(我用的是Eclipse Oxygen),然后安装原生谷歌地图插件,按照提示刷新cn1lib
在start()中,将一个新的MapContainer添加到表单中,BorderLayout在Center
按照 github 中的说明为原生地图 cn1lib 添加构建提示
在 cn1 设置中添加 Android 证书
构建项目
未提及的内容保持默认状态
【问题讨论】:
-
你用的是最新的原生地图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 证书时,构建过程没有任何问题。我想这将是一个错误?
-
构建将在没有证书的情况下通过,因为混淆不会运行(它成为调试构建而不是发布构建),因此您将有未解析的条目在运行时而不是编译时失败。您使用的是版本化构建还是其他一些功能?