我已经下载了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骨架项目。
我尝试过的步骤
提取sencha touch 2.4.0 -commerical然后在命令提示符下执行以下命令
D:\ firstapp \ touch-2.4.0-commercial \ FirstApp> sencha generate app firstApp ../ FirstApp
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骨架项目都是如你所见,可以在下面的图片中创建
一旦我收到以下错误,我的所有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”,
答案 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中提供此图标。
确保所有图标都在您的资源/图标文件夹中并且名称正确。