无法从sencha touch生成android骨架项目,因为stbuild已退出,代码为非零:7
我已下载sencha命令v4.0.4.84,sencha touch2.4.0-commercial,并已安装ruby 1.9.3p545,安装sass、compass和ant,并已安装jdk 1.7,并已在我的windows 7 64位计算机上成功设置类路径和路径 PS:我面临的问题是无法从SenchaTouch示例项目生成android框架项目 我尝试过的步骤无法从sencha touch生成android骨架项目,因为stbuild已退出,代码为非零:7,android,extjs,sencha-touch-2,Android,Extjs,Sencha Touch 2,我已下载sencha命令v4.0.4.84,sencha touch2.4.0-commercial,并已安装ruby 1.9.3p545,安装sass、compass和ant,并已安装jdk 1.7,并已在我的windows 7 64位计算机上成功设置类路径和路径 PS:我面临的问题是无法从SenchaTouch示例项目生成android框架项目 我尝试过的步骤 提取sencha touch 2.4.0-Commercial,然后在命令提示符下执行以下命令 D:\firstapp\touch-
{
/**
* @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骨架项目都是按照下图所示创建的
一旦我出现以下错误,我所有的android文件结构都消失了
stbuild已退出,错误代码为非零:7
完整stact跟踪:
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>
更新
感谢Martin先生指出了正确的方向,我通过在packager.json“iconName”中添加以下行修复了这个问题:“icon.png”,构建过程失败,因为它缺少一个图标。这通过以下线路传达:
[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中提供此图标
确保所有图标都位于资源/图标文件夹中,并且名称正确 我不明白你的意思,icon.png,我假设你提到的是这些行“100”:“资源/图标/图标小”-50@2x.png在my packager.json中,要更改为“100”:“resources/icon/icon Small-50@2x.png“,请让我知道我的理解是正确的,谢谢你为我指明了正确的方向,我在packager.json中添加了以下行,然后问题就解决了,我得到了apk文件。“iconName”:“icon.png”,我已经用答案更新了问题。