Cordova:无法重命名 android 的应用程序包:始终构建失败

Cordova : cannot rename app package for android : Always get BUILD FAILED

我在 config.xml 中的应用包名称为 com.some.thing,但在 Google play 中发布的包名称为 com.Some.Thing。

所以我尝试将 config.xml 中的包重命名为 com.Some.Thing 和 运行 sudo cordova build android

但是如果我尝试这样做,我会得到以下构建错误:

  UNEXPECTED TOP-LEVEL EXCEPTION:
        java.lang.RuntimeException: Exception parsing classes
                at com.android.dx.command.dexer.Main.processClass(Main.java:752)
                at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
                at com.android.dx.command.dexer.Main.access00(Main.java:85)
                at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
                at com.android.dx.command.dexer.Main.processOne(Main.java:672)
                at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
                at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
                at com.android.dx.command.dexer.Main.run(Main.java:277)
                at com.android.dx.command.dexer.Main.main(Main.java:245)
                at com.android.dx.command.Main.main(Main.java:106)
        Caused by: com.android.dx.cf.iface.ParseException: class name (com/Max/Relax/R$styleable) does not match path (com/max/relax/R$styleable.class)
                at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520)
                at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
                at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
                at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
                at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
                at com.android.dx.command.dexer.Main.access00(Main.java:85)
                at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
                at com.android.dx.command.dexer.Main.processClass(Main.java:749)
                ... 19 more

        UNEXPECTED TOP-LEVEL EXCEPTION:
        java.lang.RuntimeException: Exception parsing classes
                at com.android.dx.command.dexer.Main.processClass(Main.java:752)
                at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
                at com.android.dx.command.dexer.Main.access00(Main.java:85)
                at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
                at com.android.dx.command.dexer.Main.processOne(Main.java:672)
                at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
                at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
                at com.android.dx.command.dexer.Main.run(Main.java:277)
                at com.android.dx.command.dexer.Main.main(Main.java:245)
                at com.android.dx.command.Main.main(Main.java:106)
        Caused by: com.android.dx.cf.iface.ParseException: class name (com/Max/Relax/R$xml) does not match path (com/max/relax/R$xml.class)
                at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520)
                at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
                at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
                at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
                at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
                at com.android.dx.command.dexer.Main.access00(Main.java:85)
                at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
                at com.android.dx.command.dexer.Main.processClass(Main.java:749)
                ... 19 more

        UNEXPECTED TOP-LEVEL EXCEPTION:
        java.lang.RuntimeException: Exception parsing classes
                at com.android.dx.command.dexer.Main.processClass(Main.java:752)
                at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
                at com.android.dx.command.dexer.Main.access00(Main.java:85)
                at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
                at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
                at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
                at com.android.dx.command.dexer.Main.processOne(Main.java:672)
                at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
                at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
                at com.android.dx.command.dexer.Main.run(Main.java:277)
                at com.android.dx.command.dexer.Main.main(Main.java:245)
                at com.android.dx.command.Main.main(Main.java:106)
        Caused by: com.android.dx.cf.iface.ParseException: class name (com/Max/Relax/R) does not match path (com/max/relax/R.class)
                at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520)
                at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
                at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
                at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
                at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
                at com.android.dx.command.dexer.Main.access00(Main.java:85)
                at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
                at com.android.dx.command.dexer.Main.processClass(Main.java:749)
                ... 19 more
        17 errors; aborting


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.648 secs

/Users/john/workspace/project1/app/platforms/android/cordova/node_modules/q/q.js:126
                    throw e;
                    ^
Error code 1 for command: /Users/john/workspace/project1/app/platforms/android/gradlew with args: cdvBuildDebug,-b,/Users/john/workspace/project1/app/platforms/android/build.gradle,-Dorg.gradle.daemon=true
ERROR building one of the platforms: Error: /Users/john/workspace/project1/app/platforms/android/cordova/build: Command failed with exit code 1
You may not have the required environment or OS to build this project
Error: /Users/john/workspace/project1/app/platforms/android/cordova/build: Command failed with exit code 1
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:139:23)
    at emitTwo (events.js:87:13)
    at ChildProcess.emit (events.js:172:7)
    at maybeClose (internal/child_process.js:818:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

我试图找到一些解决方案,但没有运气..但我发现如果重命名包没有例如 com.some.thing.free,一切似乎都有效。

请问如何解决?

非常感谢您的任何建议。

问题由以下原因引起:Cross-Walk 插件 i 版本 12。

我删除了这个插件并添加了新版本 14。

与此问题相关:

https://crosswalk-project.org/jira/browse/XWALK-4568