由于stbuild退出非零代码,因此无法从sencha touch生成android骨架项目:7

时间:2014-09-08 13:45:38

标签: android extjs sencha-touch-2

我已经下载了sencha命令v4.0.4.84,sencha touch2.4.0-commercial并安装了ruby 1.9.3p545并安装了sass和指南针和ant并安装了jdk 1.7并在我的windows 7 64位中成功设置了classpath,path机。

PS:我面临的问题是无法从sencha touch示例项目中生成android骨架项目。

我尝试过的步骤

  1. 提取sencha touch 2.4.0 -commerical然后在命令提示符下执行以下命令

    D:\ firstapp \ touch-2.4.0-commercial \ FirstApp> sencha generate app firstApp ../ FirstApp

  2. 2)现在我已经从senchatouch复制了KitchenSink示例文件并替换(粘贴)了FirstApp中的内容。

    3)然后执行以下命令刷新应用程序      sencha app refresh

    4)然后我创建了keytool,如下所示      C:\ Program Files(x86)\ Java \ jjdk1.7 \ bin> keytool -genkey -v -keystore D:\ firstapp \ touch-2.4.0-commercial \ firstapp.keystore -alias san -keyalg RSA - keysize 2048 -validity 10000

    5)现在我已经更新了packager.json的内容,在那里我输入了证书路径及其密码和别名以及android sdk路径。 Packager.json的内容

    {
        /**
         * @cfg {String} applicationName
         * @required
         * This is the name of your application, which is displayed on the device when the app is installed. On IOS, this should match
         * the name of your application in the Apple Provisioning Portal.
         */
        "applicationName":"My Application",
    
        /**
         * @cfg {String} applicationId
         * This is the name namespace for your application. On IOS, this should match the name of your application in the Apple Provisioning Portal.
         */
        "applicationId":"com.mycompany.myAppID",
    
        /**
         * @cfg {String} bundleSeedId
         * A ten character string which stands before aplication ID in Apple Provisioning Portal
         */
        "bundleSeedId":"KPXFEPZ6EF",
    
        /**
         * @cfg {String} versionString
         * @required
         * This is the version of your application.
         */
        "versionString":"1.0",
    
        /**
         * @cfg {Integer} versionCode
         * @required
         * This is the integer version code of your application, or you can refer to it as a build number. Used only for Android builds.
         */
        "versionCode":"1",
    
        /**
         * @cfg {Object} icon
         * For iOS, please refer to their documentation about icon sizes:
         * https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/IconMatrix.html
         *
         * For Android, please refer to the Google Launcher icons guide:
         * http://developer.android.com/design/style/iconography.html
         *
         * iOS 7 uses 60, 76, 120, 152 (29, 58 for the Settings app; 40, 80 for Spotlight search results).
         * iOS 6.1 and earlier uses 57, 72, 114, 144 (29, 58 for the Settings app, for Spotlight search results on iPhone; 50 and 100 for Spotlight search results on iPad).
         * Android uses 36, 48, 72, 96.
         * If you package for Android you can ignore iOS icons and vice versa.
         */
        "icon": {
            "60":"resources/icons/Icon.png",
            "120":"resources/icons/Icon@2x.png",
            "76":"resources/icons/Icon~ipad.png",
            "152":"resources/icons/Icon~ipad@2x.png",
            "36":"resources/icons/Icon-36.png",
            "48":"resources/icons/Icon-48.png",
            "96":"resources/icons/Icon-96.png",
            "57":"resources/icons/Icon-57.png",
            "114":"resources/icons/Icon-57@2x.png",
            "72":"resources/icons/Icon-72.png",
            "144":"resources/icons/Icon-72@2x.png",
            "29":"resources/icons/Icon-Small.png",
            "58":"resources/icons/Icon-Small@2x.png",
            "40":"resources/icons/Icon-Small-40.png",
            "80":"resources/icons/Icon-Small-40@2x.png",
            "50":"resources/icons/Icon-Small-50.png",
            "100":"resources/icons/Icon-Small-50@2x.png"
        },
    
        /**
         * @cfg {String} inputPath
         * @required
         * This is location of your Sencha Touch 2 application, relative to this configuration file.
         */
        "inputPath":"./",
    
        /**
         * @cfg {String} outputPath
         * @required
         * This is where the built application file with be saved. Make sure that output path is not in your input path, you may get into endless recursive copying
         */
        "outputPath":"../build/",
    
        /**
         * @cfg {String} configuration
         * @required
         * This is configuration for your application. `Debug` should always be used unless you are submitting your app to an online
         * store - in which case `Release` should be specified.
         */
        "configuration":"Debug",
    
        /**
         * @cfg {String} platform
         * @required
         * This is the platform where you will be running your application. Available options are:
         *  - iOSSimulator
         *  - iOS
         *  - Android
         *  - AndroidEmulator
         */
        "platform":"Android",
    
        /**
         * @cfg {String} deviceType
         * @required
         * This is device type that your application will be running on.
         *
         * If you are developing for Android, this is not necessary.
         *
         * Available options are:
         *  - iPhone
         *  - iPad
         *  - Universal
         */
        "deviceType":"Universal",
    
        /**
         * @cfg {String} certificatePath
         * This is the location of your certificate.
         * This is required when you are developing for Android or you are developing on Windows.
         */
        "certificatePath":"D:/firstapp/touch-2.4.0-commercial/testapp/my-release-key.keystore",
    
        /**
         * @cfg {String} certificateAlias
         * This is the name of your certificate.
         *
         * IF you do not specify this on OSX, we will try and automatically find the certificate for you using the applicationId.
         *
         * This can be just a simple matcher. For example, if your certificate name is "iPhone Developer: Robert Dougan (ABCDEFGHIJ)", you
         * can just put "iPhone Developer".
         *
         * When using a certificatePath on Windows, you do not need to specify this.
         */
        "certificateAlias":"san",
    
        /**
         * @cfg {String} certificatePassword
         * The password which was specified during certificate export
         */
        "certificatePassword":"san12345",
    
        /**
         * @cfg {String} provisionProfile
         * The path to the provision profile (APP_NAME.mobileprovision) which you can create and then download from Apple's provisioning portal
         */
        "provisionProfile":"",
    
        /**
         * @cfg {String} URLScheme
         * URL scheme for communication with your application, can be empty if you don't use custom URL scheme in your project.
         */
        "URLScheme":"",
    
        /**
         * @cfg {String} notificationConfiguration
         * Notification configuration for push notifications, can be "debug", "release" or empty if you don't use push notifications in your project.
         */
        "notificationConfiguration":"",
    
        /**
         * @cfg {String} sdkPath
         * This is the path to the Android SDK, if you are developing an Android application.
         */
        "sdkPath":"C:/Android/adt-bundle-windows-x86/sdk",
    
        /**
         * @cfg {String} androidAPILevel
         * This is android API level, the version of Android SDK to use, you can read more about it here: http://developer.android.com/guide/appendix/api-levels.html.
         * Be sure to install corresponding platform API in android SDK manager (android_sdk/tools/android)
         */
        "androidAPILevel":"17",
    
        /**
        /**
         * @cfg {Array[String]} permissions
         * Array of permissions that is used by an application (Android only) 
         * Full list of permissions for Android application can be found here: http://developer.android.com/reference/android/Manifest.permission.html#ACCESS_CHECKIN_PROPERTIES
         */
        "permissions":[
            "INTERNET",
            "ACCESS_NETWORK_STATE",
            "CAMERA",
            "VIBRATE",
            "ACCESS_FINE_LOCATION",
            "ACCESS_COARSE_LOCATION",
            "CALL_PHONE"
        ],
    
        /**
         * @cfg {Array[String]} orientations
         * @required
         * This is orientations that this application can run.
         */
        "orientations": [
            "portrait",
            "landscapeLeft",
            "landscapeRight",
            "portraitUpsideDown"
        ]
    }
    

    6)之后我执行了以下命令      D:\ firstapp \ touch-2.4.0-commercial \ FirstApp> sencha app package build packager.json

    所有我的android directortes,即android骨架项目都是如你所见,可以在下面的图片中创建

    enter image description here

    一旦我收到以下错误,我的所有android文件结构都消失了

    stbuild以非零错误代码退出:7

    完整的跟踪:

    D:\firstapp\touch-2.4.0-commercial\FirstApp>sencha app package build packager.js
    on
    Sencha Cmd v4.0.4.84
    [ERR]
    Created directory D:\firstapp\touch-2.4.0-commercial\build\src\com\mycompany\myA
    ppID
    Added file D:\firstapp\touch-2.4.0-commercial\build\src\com\mycompany\myAppID\ST
    Activity.java
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res
    Created directory D:\firstapp\touch-2.4.0-commercial\build\bin
    Created directory D:\firstapp\touch-2.4.0-commercial\build\libs
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res\values
    Added file D:\firstapp\touch-2.4.0-commercial\build\res\values\strings.xml
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res\layout
    Added file D:\firstapp\touch-2.4.0-commercial\build\res\layout\main.xml
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res\drawable-xhdpi
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res\drawable-hdpi
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res\drawable-mdpi
    Created directory D:\firstapp\touch-2.4.0-commercial\build\res\drawable-ldpi
    Added file D:\firstapp\touch-2.4.0-commercial\build\AndroidManifest.xml
    Added file D:\firstapp\touch-2.4.0-commercial\build\build.xml
    Added file D:\firstapp\touch-2.4.0-commercial\build\proguard-project.txt
    A subdirectory or file ..\build\\\libs\ already exists.
    A subdirectory or file ..\build\\\assets\ already exists.
    Unable to locate tools.jar. Expected to find it in C:\Program Files (x86)\Java\j
    re7\lib\tools.jar
    Buildfile: D:\firstapp\touch-2.4.0-commercial\build\build.xml
    
    -set-mode-check:
    
    -set-debug-files:
    
    -check-env:
     [checkenv] Android SDK Tools Revision 21.0.1
     [checkenv] Installed at C:\Android\adt-bundle-windows-x86\sdk
    
    -setup:
         [echo] Project Name: MyApplication
      [gettype] Project Type: Application
    
    -set-debug-mode:
    
    -debug-obfuscation-check:
    
    -build-setup:
         [echo] Resolving Build Target for MyApplication...
    [gettarget] Project Target:   Android 4.2
    [gettarget] API level:        17
         [echo] ----------
         [echo] Creating output directories if needed...
        [mkdir] Created dir: D:\firstapp\touch-2.4.0-commercial\build\bin\res
        [mkdir] Created dir: D:\firstapp\touch-2.4.0-commercial\build\gen
        [mkdir] Created dir: D:\firstapp\touch-2.4.0-commercial\build\bin\classes
        [mkdir] Created dir: D:\firstapp\touch-2.4.0-commercial\build\bin\dexedLibs
         [echo] ----------
         [echo] Resolving Dependencies for MyApplication...
    [dependency] Library dependencies:
    [dependency] No Libraries
         [echo] ----------
         [echo] Building Libraries with 'debug'...
       [subant] No sub-builds to iterate on
    
    -pre-build:
    
    -code-gen:
    [mergemanifest] Merging AndroidManifest files into one.
    [mergemanifest] Manifest merger disabled. Using project manifest only.
         [echo] Handling aidl files...
         [aidl] No AIDL files to compile.
         [echo] ----------
         [echo] Handling RenderScript files...
    [renderscript] No RenderScript files to compile.
         [echo] ----------
         [echo] Handling Resources...
         [aapt] Generating resource IDs...
         [aapt] D:\firstapp\touch-2.4.0-commercial\build\bin\AndroidManifest.xml:11:
     error: Error: No resource found that matches the given name (at 'icon' with val
    ue '@drawable/icon').
    
    BUILD FAILED
    C:\Android\adt-bundle-windows-x86\sdk\tools\ant\build.xml:647: The following err
    or occurred while executing this line:
    C:\Android\adt-bundle-windows-x86\sdk\tools\ant\build.xml:688: null returned: 1
    
    Total time: 2 seconds
    ""C:/Android/adt-bundle-windows-x86/sdk\tools\android" create project --target a
    ndroid-17 --name MyApplication --activity STActivity --path "../build/\/" --pack
    age com.mycompany.myAppID"
    Could not run ant with error: 1
    Failed to package application
    
    [ERR] stbuild exited with non-zero code : 7
    
    D:\firstapp\touch-2.4.0-commercial\FirstApp> 
    

    更新 感谢Mr.Martin指出正确的方向,我通过在packager.json “iconName”中添加以下行来修复此问题:“icon.png”,

1 个答案:

答案 0 :(得分:0)

构建过程失败,因为它错过了一个图标。这通过以下方式传达:

[aapt] D:\firstapp\touch-2.4.0-commercial\build\bin\AndroidManifest.xml:11:
 error: Error: No resource found that matches the given name (at 'icon' with val
ue '@drawable/icon').

我还没有使用Sencha Cmd构建一个phonegap项目(我直接使用phonegap)所以我不知道哪个图标丢失或者你的packager.json文件中提供了哪些名称。 但是错误说aapt正在寻找一个名为' icon.png'的图标。您尚未在packager.json中提供此图标。

确保所有图标都在您的资源/图标文件夹中并且名称正确。