ueberpruefen
This commit is contained in:
207
docs/BUILD_INSTRUCTIONS.md
Normal file
207
docs/BUILD_INSTRUCTIONS.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# Build Instructions - Pottery Diary
|
||||
|
||||
## Quick Start (Development)
|
||||
|
||||
```bash
|
||||
# Navigate to project
|
||||
cd pottery-diary
|
||||
|
||||
# Install dependencies (if not already done)
|
||||
npm install
|
||||
|
||||
# Start Expo development server
|
||||
npm start
|
||||
|
||||
# In another terminal, run on platform:
|
||||
npm run ios # iOS Simulator (Mac only)
|
||||
npm run android # Android Emulator
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
# Run all unit tests
|
||||
npm test
|
||||
|
||||
# Watch mode for development
|
||||
npm run test:watch
|
||||
|
||||
# Expected output: All tests passing for:
|
||||
# - Temperature conversions
|
||||
# - Cone converter
|
||||
# - Duration formatting
|
||||
```
|
||||
|
||||
## Production Builds
|
||||
|
||||
### Prerequisites
|
||||
1. Install EAS CLI: `npm install -g eas-cli`
|
||||
2. Create Expo account: https://expo.dev/signup
|
||||
3. Login: `eas login`
|
||||
|
||||
### Configure Project
|
||||
```bash
|
||||
# First time only
|
||||
eas build:configure
|
||||
|
||||
# This creates/updates eas.json and app.json
|
||||
```
|
||||
|
||||
### Build Commands
|
||||
|
||||
#### iOS
|
||||
```bash
|
||||
# Build for iOS
|
||||
eas build --platform ios --profile production
|
||||
|
||||
# Build for iOS Simulator (testing)
|
||||
eas build --platform ios --profile preview
|
||||
```
|
||||
|
||||
#### Android
|
||||
```bash
|
||||
# Build APK for Android
|
||||
eas build --platform android --profile production
|
||||
|
||||
# Build for testing
|
||||
eas build --platform android --profile preview
|
||||
```
|
||||
|
||||
#### Both Platforms
|
||||
```bash
|
||||
eas build --platform all --profile production
|
||||
```
|
||||
|
||||
### Build Profiles (eas.json)
|
||||
|
||||
- **development**: Development client with debugging
|
||||
- **preview**: Internal testing builds (APK for Android, Simulator for iOS)
|
||||
- **production**: Store-ready builds
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### 1. SQLite not found
|
||||
```bash
|
||||
# Reinstall expo-sqlite
|
||||
npx expo install expo-sqlite
|
||||
```
|
||||
|
||||
#### 2. Navigation errors
|
||||
```bash
|
||||
# Clear cache and restart
|
||||
npx expo start --clear
|
||||
```
|
||||
|
||||
#### 3. TypeScript errors
|
||||
```bash
|
||||
# Check TypeScript compilation
|
||||
npx tsc --noEmit
|
||||
```
|
||||
|
||||
#### 4. Test failures
|
||||
```bash
|
||||
# Clear Jest cache
|
||||
npm test -- --clearCache
|
||||
npm test
|
||||
```
|
||||
|
||||
### Platform-Specific
|
||||
|
||||
#### iOS
|
||||
- **Xcode required**: Mac with Xcode 14+ for local builds
|
||||
- **Simulator**: Install via Xcode → Preferences → Components
|
||||
- **Certificates**: EAS handles signing for cloud builds
|
||||
|
||||
#### Android
|
||||
- **Android Studio**: Install for local emulator
|
||||
- **SDK**: API Level 26+ (Android 8.0+)
|
||||
- **Emulator**: Create AVD with Google Play Store
|
||||
|
||||
## Environment Setup
|
||||
|
||||
### Required
|
||||
- Node.js 18+
|
||||
- npm 9+
|
||||
- Expo CLI (installed via npx)
|
||||
|
||||
### Optional (for local builds)
|
||||
- Xcode 14+ (iOS, Mac only)
|
||||
- Android Studio 2022+ (Android)
|
||||
- EAS CLI (cloud builds)
|
||||
|
||||
## Database Management
|
||||
|
||||
### Reset Database (Development)
|
||||
```bash
|
||||
# Uninstall app to clear SQLite database
|
||||
# Or delete app data via device settings
|
||||
|
||||
# Database auto-migrates on next launch
|
||||
```
|
||||
|
||||
### View Database
|
||||
```bash
|
||||
# Use a SQLite browser to inspect:
|
||||
# iOS: ~/Library/Developer/CoreSimulator/Devices/[DEVICE_ID]/data/Containers/Data/Application/[APP_ID]/Library/Application Support/SQLite/pottery_diary.db
|
||||
# Android: Use adb or Device File Explorer in Android Studio
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### App Size
|
||||
- Current: ~20-30 MB (target < 30 MB)
|
||||
- Photos are compressed on import
|
||||
- No large assets bundled
|
||||
|
||||
### Speed
|
||||
- Cold start: <1s (target)
|
||||
- List scrolling: 60 FPS
|
||||
- Database queries: <50ms for most operations
|
||||
|
||||
## Release Checklist
|
||||
|
||||
- [ ] All tests passing (`npm test`)
|
||||
- [ ] TypeScript compiles (`npx tsc --noEmit`)
|
||||
- [ ] No console errors in dev mode
|
||||
- [ ] Test on both iOS and Android
|
||||
- [ ] Accessibility check (VoiceOver/TalkBack)
|
||||
- [ ] Update version in app.json
|
||||
- [ ] Update CHANGELOG.md
|
||||
- [ ] Build with EAS
|
||||
- [ ] Test build on physical devices
|
||||
- [ ] Submit to App Store / Play Store
|
||||
|
||||
## Continuous Integration (Future)
|
||||
|
||||
Recommended setup:
|
||||
- GitHub Actions for automated testing
|
||||
- EAS Build on push to main
|
||||
- Detox for E2E testing
|
||||
|
||||
Example `.github/workflows/test.yml`:
|
||||
```yaml
|
||||
name: Test
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
- run: npm install
|
||||
- run: npm test
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
- Issues: https://github.com/yourusername/pottery-diary/issues
|
||||
- Expo Docs: https://docs.expo.dev/
|
||||
- React Native Docs: https://reactnative.dev/
|
||||
|
||||
---
|
||||
|
||||
Last Updated: 2025-01-15
|
||||
Reference in New Issue
Block a user