phonegap 을 이용해서 android webapp HelloWorld 를 테스트 해보겠습니다.
뭐 제가 정리 하지 않아도 phonegap 사이트에 들어가면 Getting Start 가 잘 되어 있긴 합니다.
걍.. remind 하는 차원에서 정리해 봅니다.
- phonegap 최신 버전 1.5.0 에서는 이전 버전과 바뀐내용들이 있습니다.
- 그래서 위 참고사이트에 나와 있는데로 하면 오류 납니다.
[오류내용]
... 중략
android.content.res.Resources$NotFoundException: Resource ID #0x0
... 중략
- 이건 최신 버전을 다운로드 받아서 압축을 푸시면 xml 폴더가 하나 더 있습니다.
- xml 폴더를 생성하신 android project 의 res 밑으로 복사해서 넣으시면 됩니다.
- 수정합니다. 업데이트된 내용이 따로 있내요.
[Before]
phonegap-VERSION.jar
phonegap-VERSION.js
[After]
cordova-1.5.0.jar
cordova-1.5.0.js
xml/cordova.xml
xml/plugins.xml
- 패키지도 아래 처럼 바뀌었내요. (이건 소스코드 내려서 받아 보면 될듯 하내요.)
import org.apache.cordova.DroidGap;
1. Eclipse
2. JDK
3. ADT Plugin
- 이건 eclipse plugin 으로 설치를 하셔도 되고 아님 걍 SDK 를 별도 설치 하셔서 location 지정을 하셔도 됩니다.
4. PhoneGap 다운로드 (.js / .jar / .xml)
- AVD 하나 생성 하시지요.
- 옆에 있는 New 버튼 누르시고 하면 됩니다. tutorial 에서 처럼 10MB 만 할당 했습니다.
- Android project 하나 생성하셔서 tutorial 에 있는 것처럼
- jar 파일은 libs 에, js 파일은 www 에 , xml 폴더는 res 에 복사해서 넣으시면 됩니다.
- index.html 파일은 만드시면 되구요.
- 그런 다음에 manifest 파일을 tutorial 에 있는 것처럼 수정 하시면 됩니다.
- 이제 Run As -> Android Application 을 해볼까요..
접기
package proto.phonegap;
import org.apache.cordova.DroidGap;
import android.os.Bundle;
public class helloworldActivity extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/index.html");
}
}
접기
접기
<!DOCTYPE HTML>
<html>
<head>
<title>PhoneGap</title>
<script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js "></script>
<script type="text/javascript" charset="utf-8">
function onLoad(){
document.addEventListener("deviceready", onDeviceReady, true);
}
function onDeviceReady(){
navigator.notification.alert("PhoneGap is working");
}
</script>
</head>
<body onload="onLoad();">
<h1>Welcome to PhoneGap</h1>
<h2>Edit assets/www/index.html</h2>
</body>
</html>
접기
접기
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="proto.phonegap.helloworld"
android:versionCode="1"
android:versionName="1.0" >
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="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.READ_PHONE_STATE" />
<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.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-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="proto.phonegap.helloworldActivity"
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
접기