花了一天半时间总算打包成功,开始之前我不得不吐槽一下网上的很多技术贴,能不能照顾一下刚入门菜鸟的感受,写的太不负责,敷衍了事,你觉得会有高手去看你们写的吗,必然都是我们这些涉世尚浅之辈,就那么几行,能看懂才怪,上上上周去参加cocoachia的开发者会,你看别人做的,被菜鸟吐槽一星期没学会打包,立马改正,力求做到仨按钮摆界面上,分别是“生成ios安装文件”,“生成android安装文件”,“生成windows phone安装文件”,一键打包!什么叫责任!什么叫专业!闲言碎语不要讲,第一步得交代一下时间地点人物吧?你看我:
部署环境:
1. PhoneGap2.9.0(下2.9.1的别怪我没提醒,不好使!)
2.Sencha Touch2.3.1
3,Sencha cmd4.0.2
4.请确保你的项目是严格按照Sencha Touch2的MVC结构编写的,否则我不会。
最终效果图:
步骤很简单,
1)首先Eclipse的android插件都装好了吧?新建一个FirstAndroid的项目,能项目右键->Run As->Android Application在模拟器上完美跑起来了吧?OK。
2) 假设你的PhoneGap装在了F:\install\phonegap-2.9.0,那么将F:\install\phonegap-2.9.0\lib\android下的cordova-2.9.0.jar拷贝到FirstAndroid项目的libs目录下,并添加到build path。
3)将F:\install\phonegap-2.9.0\lib\android下的xml文件夹整个拷贝到FirstAndroid项目的res目录下.
4) 点开src中的MainActivity.java, 将:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
注释掉,改成:
import org.apache.cordova.*;
public class MainActivity extends DroidGap
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///android_asset/www/index.html")
}
}
5)把AndroidManifest.xml改成:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sexhit.sexhitandroid"
android:versionCode="1"
android:versionName="1.0" >
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"
android:resizeable="true"
android:anyDensity="true"
/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.RECORD_VIDEO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
6)在你的Sencha touch项目根目录下运行sencha app build package.(这一步最容易出错,幸好sencha cmd的错误信息提供的还行,如果出错,请找sencha 技术贴),成功以后会在<Sencha touch项目根目录>\build\package目录下生成和你项目同名的一个文件夹,假设名字叫MySenchaProject,这里面的文件就是打包后的项目啦,洗干净留着备用。
7)在FirstAndroid项目的assets目录下新建一个文件夹www.(为啥叫这个我也不知道).
8) 把刚才洗净备用的MySenchaProject目录下的内容全部拷贝到www目录下,注意拷贝的是里面的内容,不是MySenchaProject文件夹,拷贝完成后观察你的xxxx.html名字是不是和res\xml\config.xml里面的
<content src="index.html" />
一样,不一样修改之。
9)颤抖吧骚年!项目右键->Run As->Android Application吧!