아파치 Cordova / PhoneGap Cheatsheet¶
Apache Cordova / PhoneGap - 하이브리드 모바일 앱 개발
Apache Cordova (이전 PhoneGap)는 개발자가 HTML, CSS 및 JavaScript를 사용하여 네이티브 모바일 응용 프로그램을 구축 할 수있는 모바일 응용 프로그램 개발 프레임 워크입니다. JavaScript 플러그인을 통해 Native Device API에 액세스할 수 있습니다.
본문 바로가기¶
설치하기¶
자주 묻는 질문¶
카지노사이트
Cordova 클립 설치하기¶
카지노사이트
PhoneGap CLI (문자)¶
카지노사이트
시작하기¶
새 프로젝트 만들기¶
카지노사이트
프로젝트 템플릿¶
카지노사이트
프로젝트 구조¶
기본 구조¶
카지노사이트
사이트 맵¶
카지노사이트
사이트 맵¶
카지노사이트
제품정보 이름 *¶
프로젝트 관리¶
카지노사이트
플러그인 관리¶
카지노사이트
빌드 및 실행¶
ο 회원 관리
정보 명령¶
카지노사이트
플랫폼 관리¶
Android 플랫폼¶
카지노사이트
iOS 플랫폼¶
카지노사이트
브라우저 플랫폼¶
카지노사이트
플러그인 시스템¶
핵심 플러그인¶
카지노사이트
플러그인 사용 예제¶
카지노사이트
제품 설명¶
설정.xml¶
카지노사이트
플랫폼 별 옵션 정보¶
카지노사이트
장치 API¶
카메라 API¶
오프화이트
위치 API¶
카지노사이트
파일 시스템 API¶
오프화이트
연락처 API¶
카지노사이트
UI 프레임 워크¶
jQuery 모바일 통합¶
카지노사이트
Framework7 통합¶
카지노사이트
Ionic Framework 통합¶
카지노사이트
개발 Workflow¶
라이브 Reload¶
카지노사이트
핫 코드 푸시¶
카지노사이트
훅을 구축¶
// hooks/before_build/010_add_platform_class.js
module.exports = function(context) {
var fs = require('fs');
var path = require('path');
var platformsMap = {
'android': 'android',
'ios': 'ios',
'browser': 'browser'
};
var platforms = context.opts.cordova.platforms;
platforms.forEach(function(platform) {
var indexPath = path.join(context.opts.projectRoot, 'www', 'index.html');
var indexContent = fs.readFileSync(indexPath, 'utf8');
// Add platform-specific class to body
var platformClass = platformsMap[platform];
if (platformClass) {
indexContent = indexContent.replace(
/<body([^>]*)>/,
'<body$1 class="platform-' + platformClass + '">'
);
fs.writeFileSync(indexPath, indexContent);
}
});
};
```의 경우
### 환경 설정
```javascript
// js/config.js
var Config = {
development: {
apiUrl: 'http://localhost:3000/api',
debug: true
},
production: {
apiUrl: 'https://api.myapp.com',
debug: false
}
};
// Detect environment
var environment = 'development';
if (window.location.protocol === 'file:') {
environment = 'production';
}
var config = Config[environment];
// Usage
console.log('API URL:', config.apiUrl);
console.log('Debug mode:', config.debug);
```에 대하여
## 건물 및 테스트
### Debug 빌드
```bash
# Build debug version
cordova build android
cordova build ios
# Run debug on device
cordova run android --device --debug
cordova run ios --device --debug
# Enable debugging
cordova build android --debug
cordova build ios --debug
```의 경우
### 공지사항
```bash
# Build release version
cordova build android --release
cordova build ios --release
# Sign Android APK
# Generate keystore
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
# Sign APK
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk alias_name
# Align APK
zipalign -v 4 platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk MyApp.apk
```에 대하여
### 자동화된 테스트
```javascript
// test/spec/test.js
describe('App Tests', function() {
beforeEach(function(done) {
document.addEventListener('deviceready', done, false);
});
it('should have device plugin', function() {
expect(window.device).toBeDefined();
expect(device.platform).toBeDefined();
});
it('should have camera plugin', function() {
expect(navigator.camera).toBeDefined();
expect(navigator.camera.getPicture).toBeDefined();
});
it('should take picture', function(done) {
var options = {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA
};
navigator.camera.getPicture(
function(imageURI) {
expect(imageURI).toBeDefined();
done();
},
function(error) {
fail('Camera error: ' + error);
done();
},
options
);
});
});
// Run tests with Jasmine
// Include jasmine.js and jasmine-html.js in test.html
```의 경우
## 관련 링크
### 먼 Debugging
카지노사이트
### 콘솔 로깅
카지노사이트
### 오류 처리
카지노사이트
## 성능 최적화
### 메모리 관리
카지노사이트
### 이미지 최적화
카지노사이트
### Network 최적화
카지노사이트
## 계정 관리
### 콘텐츠 보안 정책
```html
<!-- Add to index.html -->
<meta http-equiv="Content-Security-Policy" content="
default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval';
style-src 'self' 'unsafe-inline';
media-src *;
img-src 'self' data: content:;
connect-src 'self' https://api.myapp.com;
script-src 'self' 'unsafe-inline' 'unsafe-eval';
">
```의 경우
### 보안 저장
```javascript
// Secure data storage
var SecureStorage = {
encrypt: function(data, key) {
// Use a proper encryption library like CryptoJS
return CryptoJS.AES.encrypt(JSON.stringify(data), key).toString();
},
decrypt: function(encryptedData, key) {
try {
var bytes = CryptoJS.AES.decrypt(encryptedData, key);
var decryptedData = bytes.toString(CryptoJS.enc.Utf8);
return JSON.parse(decryptedData);
} catch (error) {
throw new Error('Failed to decrypt data');
}
},
store: function(key, data, password) {
var encryptedData = this.encrypt(data, password);
localStorage.setItem(key, encryptedData);
},
retrieve: function(key, password) {
var encryptedData = localStorage.getItem(key);
if (!encryptedData) {
return null;
}
return this.decrypt(encryptedData, password);
},
remove: function(key) {
localStorage.removeItem(key);
}
};
// Usage
SecureStorage.store('userToken', { token: 'abc123' }, 'myPassword');
var userData = SecureStorage.retrieve('userToken', 'myPassword');
```의 경우
### 입력 유효성
카지노사이트
## 계정 만들기
### App Store 배포
```bash
# iOS App Store
# 1. Build release version
cordova build ios --release
# 2. Open Xcode project
open platforms/ios/MyApp.xcworkspace
# 3. Configure signing and provisioning
# 4. Archive and upload to App Store Connect
# Google Play Store
# 1. Generate signed APK
cordova build android --release
# 2. Sign APK with keystore
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk alias_name
# 3. Align APK
zipalign -v 4 platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk MyApp.apk
# 4. Upload to Google Play Console
```의 경우
### Enterprise 배포
```bash
# iOS Enterprise Distribution
# 1. Build with enterprise certificate
cordova build ios --release
# 2. Create IPA file
# 3. Host on internal server with manifest.plist
# Android Enterprise Distribution
# 1. Build signed APK
cordova build android --release
# 2. Distribute through MDM or direct download
```를 호출합니다.
### 연속 통합
```yaml
# .github/workflows/build.yml
name: Build App
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Install Cordova
run: npm install -g cordova
- name: Add platforms
run: |
cordova platform add android
cordova platform add ios
- name: Build Android
run: cordova build android
- name: Build iOS
run: cordova build ios
- name: Run tests
run: npm test
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: builds
path: platforms/*/build/
```의 경우
## 최고의 연습
### 사업영역
Code 품질¶
카지노사이트
공지사항¶
오프화이트
제품정보¶
Apache Cordova/PhoneGap은 하이브리드 모바일 앱 개발을 위한 강력한 플랫폼을 제공합니다.
** 보증:** - ** 크로스 플랫폼 **: 한 번 쓰기, 여러 플랫폼에서 실행 - **웹 기술 **: 익숙한 HTML, CSS 및 JavaScript 사용 - ** 플러그인 **: 플러그인을 통해 네이티브 장치 기능 액세스 - **Rapid 개발 **: 기본 앱보다 빠른 개발 주기 - ** 효과적인 ** : 여러 플랫폼을위한 단일 코드베이스
** 최고의 사용 사례:** - 콘텐츠 구동 앱 - 사업영역 - 프로토 타입 및 MVP - 간단한 UI 요구 사항 앱 - 제한된 네이티브 기능을 갖춘 크로스 플랫폼 앱
조건: - 성능은 기본 앱보다 느리게 될 수 있습니다. - 최신 플랫폼 기능에 대한 제한적 접근 - UI는 완전히 네이티브를 느낄 수 없습니다. - 원활한 성능에 대한 주의적 최적화
Cordova는 개발 속도, 비용 및 크로스 플랫폼 호환성이 최대 성능과 네이티브 플랫폼 통합에 우선 순위가 될 때 많은 모바일 앱 프로젝트를 위한 viable 옵션을 유지한다.
<문서> 기능 copyToClipboard () 이름 * const 명령어 = document.querySelectorAll('code'); let allCommands = ''; 명령. forEach(cmd =>의 경우 모든Commands +=cmd.textContent + navigator.clipboard.write텍스(allCommands); alert('모든 명령은 클립보드에 복사!'); 이름 *
함수 생성PDF() { 창. 인쇄 (); 이름 *