1

嗨,我是 sencha touch 开发的新手。

试图跑

sencha 应用程序包运行 config.json

将我的应用程序打包为 android 本机构建,以在 android 模拟器上运行或部署在我的 android 设备上。但面临以下问题。

以下是我尝试过但没有成功的场景

  1. 在配置文件中设置 android 模拟器并在活动模拟器运行的情况下运行。

得到以下错误。

C:\project incubator\sencha-touch-2.1.1-gpl\MyApp>sencha app package run config.json
Sencha Cmd v3.1.2.342
[ERR]
Error: Project folder 'C:\project incubator\sencha-touch-2.1.1-gpl\build' is not empty. Please consider using 'android.bat update' instead.
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\src\org\amx\MyApp
Added file C:\project incubator\sencha-touch-2.1.1-gpl\build\src\org\amx\MyApp\STActivity.java
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\res
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\bin
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\libs
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\res\values
Added file C:\project incubator\sencha-touch-2.1.1-gpl\build\res\values\strings.xml
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\res\layout
Added file C:\project incubator\sencha-touch-2.1.1-gpl\build\res\layout\main.xml
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\res\drawable-hdpi
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\res\drawable-mdpi
Created directory C:\project incubator\sencha-touch-2.1.1-gpl\build\res\drawable-ldpi
Added file C:\project incubator\sencha-touch-2.1.1-gpl\build\AndroidManifest.xml
Added file C:\project incubator\sencha-touch-2.1.1-gpl\build\build.xml
Added file C:\project incubator\sencha-touch-2.1.1-gpl\build\proguard-project.txt
A subdirectory or file ..\build\\\libs\ already exists.
A subdirectory or file ..\build\\\assets\ already exists.
Buildfile: C:\project incubator\sencha-touch-2.1.1-gpl\build\build.xml

BUILD FAILED
C:\project incubator\sencha-touch-2.1.1-gpl\build\build.xml:90: The following error occurred while executing this line:
C:\Program Files\Android\tools\ant\build.xml:110: java.lang.UnsupportedClassVersionError: Bad version number in .class file
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1124)
        at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1295)
        at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1351)
        at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1311)
        at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1064)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:242)
        at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:594)
        at org.apache.tools.ant.taskdefs.Definer.loadProperties(Definer.java:423)
        at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:279)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:390)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:169)
        at org.apache.tools.ant.taskdefs.ImportTask.importResource(ImportTask.java:225)
        at org.apache.tools.ant.taskdefs.ImportTask.execute(ImportTask.java:163)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:390)
        at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:180)
        at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:82)
        at org.apache.tools.ant.Main.runBuild(Main.java:793)
        at org.apache.tools.ant.Main.startAnt(Main.java:217)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 2 seconds
rm failed for /data/local/tmp/MyApp.apk, No such file or directory
Length is zd -- too small
file '../build/\MyApp.apk' is not a valid zip file
""C:/Program Files/Android\tools\android" create project --target android-15 --name MyApp --activity STActivity --path "../build/\/" --package org.amx.MyApp"
Can not open source file
""C:/Program Files/Android\platform-tools\adb" install -r "../build/\MyApp.apk""
Could not install application
Failed to run packaged application
Copy operation failed src=../build/\\bin\MyApp-debug.apk dst=../build/\\MyApp.apk

[ERR] stbuild exited with non-zero code : 7

C:\project incubator\sencha-touch-2.1.1-gpl\MyApp>
  1. 在配置文件中设置 android 模拟器并在没有模拟器的情况下运行。

CMD 提示仅显示 sencha cmd 工具版本,并且注意到甚至没有提示返回,等待了几个小时,在构建文件夹中存在一个 0 kb .apk 文件。

  1. 在配置文件中设置 android 设备并在没有模拟器的情况下运行。 同案例2

已使用检查已安装的 api 版本

android.bat 列出目标

命令,配置和运行相同的 API。

任何帮助都会解决这个问题

以下是在 windows XP SP3 机器上用于 sencha touch 开发的应用程序/sdk。

  1. Sencha Cmd v3.1.2.342
  2. sencha-touch-2.1.1-gpl / sencha-touch-2.2.1-gpl
  3. 红宝石安装
  4. 安装了 ruby​​ 的 Compass 和 SASS 插件。
  5. jdk1.5.0_11 和 java home 在环境变量中设置。
  6. 安装了 android SDK 的 Eclipse Juno。为 android 创建证书。

创建了一个框架项目,并尝试在 Crome 浏览器中运行,效果很好。

按照文档建议创建了一个应用程序配置 json 文件。

以下是为我的应用程序更新的文件。

{
    "applicationName":"MyApp",
    "applicationId":"org.amx.MyApp",
    "bundleSeedId":"KPXFEPZ6EF",
    "versionString":"1.0",
    "versionCode":"1",
    "icon": {
        "36":"resources/icons/Icon.png",
        "48":"resources/icons/Icon.png",
        "72":"resources/icons/Icon.png"
    },
    "inputPath":"./",
    "outputPath":"../build/",
    "configuration":"Debug",
    "platform":"Android",
    "deviceType":"Universal",
    "certificatePath":"../../my-release-key.keystore",
    "certificateAlias":"",
    "certificatePassword":"abc123",
    "provisionProfile":"",
    "URLScheme":"",
    "notificationConfiguration":"",
    "sdkPath":"C:/Program Files/Android/android-sdk",
    "androidAPILevel":"16",
    "permissions":[
        "INTERNET",
        "ACCESS_NETWORK_STATE",
        "CAMERA",
        "VIBRATE",
        "ACCESS_FINE_LOCATION",
        "ACCESS_COARSE_LOCATION",
        "CALL_PHONE"
    ],
    "orientations": [
        "portrait",
        "landscapeLeft",
        "landscapeRight",
        "portraitUpsideDown"
    ]
}

请帮忙。尝试在 sencha toch 论坛上发布相同的内容甚至没有发布。让我知道任何需要的更多信息将发表评论。从过去的两周开始一直被这个问题困扰。

4

1 回答 1

0

终于得到了解决方案。解决方案在发布的问题本身中。由于无奈没有观察到简单的问题。

问题是错误的java路径设置

由于使用 eclipse 构建 android 应用程序从未觉得需要检查类路径,因为应用程序将由 IDE 构建。但是 Sencha CMD 构建过程使用依赖于类路径的命令行参数。于是将机器环境变量中的classpath、path和JAVA_HOME设置为jdk 1.6,问题就解决了。

第一条线索在排队

C:/Program Files/Android\tools\android" 创建项目 --target android-15 --name MyApp --activity STActivity --path "../build//" --package org.amx.MyApp

sencha cmd 使用现有的 android sdk 安装在 sdk/tools/android.bat 文件上运行命令。上述命令使用 config .json 文件中的设置创建 android 骨架项目。由于我使用android很长时间,我什至怀疑android sdk的安装已经流氓。所以从谷歌安装了一个更新的 sdk 安装。但是在单例项目项目中运行 build.xml 文件会产生相同的结果。

java.lang.UnsupportedClassVersionError:java.lang.ClassLoader.defineClass1(本机方法)的.class文件中的错误版本号

从堆栈溢出中进行了更多搜索,返回了解决方案

于 2013-07-16T08:38:25.430 回答