Cordova:无法为Android重命名应用程序包:总是得到BUILD FAILED

时间:2015-11-29 20:22:22

标签: android cordova android-gradle build.gradle

我在config.xml中有app包名称,命名为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.access$1200(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.access$1500(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.access$1200(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.access$1500(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.access$1200(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.access$1500(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重命名包,一切似乎都有效。

我该如何解决?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

问题是由:12版的Cross-Walk插件引起的。

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

与此问题相关:

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