- Add capacitor-assets.config.json for cross-platform asset generation - Create resources/ directory structure for source assets - Update .gitignore to exclude generated Android assets and resources - Remove 30+ generated files from source control - Add comprehensive asset management documentation - Verify asset generation works with new configuration Assets are now properly managed: source files in version control, generated files excluded, and build process handles platform-specific asset generation automatically.pull/142/head
@ -1,34 +0,0 @@ |
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:aapt="http://schemas.android.com/aapt" |
|||
android:width="108dp" |
|||
android:height="108dp" |
|||
android:viewportHeight="108" |
|||
android:viewportWidth="108"> |
|||
<path |
|||
android:fillType="evenOdd" |
|||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" |
|||
android:strokeColor="#00000000" |
|||
android:strokeWidth="1"> |
|||
<aapt:attr name="android:fillColor"> |
|||
<gradient |
|||
android:endX="78.5885" |
|||
android:endY="90.9159" |
|||
android:startX="48.7653" |
|||
android:startY="61.0927" |
|||
android:type="linear"> |
|||
<item |
|||
android:color="#44000000" |
|||
android:offset="0.0" /> |
|||
<item |
|||
android:color="#00000000" |
|||
android:offset="1.0" /> |
|||
</gradient> |
|||
</aapt:attr> |
|||
</path> |
|||
<path |
|||
android:fillColor="#FFFFFF" |
|||
android:fillType="nonZero" |
|||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" |
|||
android:strokeColor="#00000000" |
|||
android:strokeWidth="1" /> |
|||
</vector> |
@ -1,170 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
|||
android:width="108dp" |
|||
android:height="108dp" |
|||
android:viewportHeight="108" |
|||
android:viewportWidth="108"> |
|||
<path |
|||
android:fillColor="#26A69A" |
|||
android:pathData="M0,0h108v108h-108z" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M9,0L9,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,0L19,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M29,0L29,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M39,0L39,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M49,0L49,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M59,0L59,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M69,0L69,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M79,0L79,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M89,0L89,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M99,0L99,108" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,9L108,9" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,19L108,19" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,29L108,29" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,39L108,39" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,49L108,49" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,59L108,59" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,69L108,69" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,79L108,79" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,89L108,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M0,99L108,99" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,29L89,29" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,39L89,39" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,49L89,49" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,59L89,59" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,69L89,69" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M19,79L89,79" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M29,19L29,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M39,19L39,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M49,19L49,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M59,19L59,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M69,19L69,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
<path |
|||
android:fillColor="#00000000" |
|||
android:pathData="M79,19L79,89" |
|||
android:strokeColor="#33FFFFFF" |
|||
android:strokeWidth="0.8" /> |
|||
</vector> |
@ -1,9 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
<background> |
|||
<inset android:drawable="@mipmap/ic_launcher_background" android:inset="16.7%" /> |
|||
</background> |
|||
<foreground> |
|||
<inset android:drawable="@mipmap/ic_launcher_foreground" android:inset="16.7%" /> |
|||
</foreground> |
|||
</adaptive-icon> |
@ -1,9 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
<background> |
|||
<inset android:drawable="@mipmap/ic_launcher_background" android:inset="16.7%" /> |
|||
</background> |
|||
<foreground> |
|||
<inset android:drawable="@mipmap/ic_launcher_foreground" android:inset="16.7%" /> |
|||
</foreground> |
|||
</adaptive-icon> |
@ -0,0 +1,36 @@ |
|||
{ |
|||
"icon": { |
|||
"ios": { |
|||
"source": "resources/ios/icon/icon.png", |
|||
"target": "ios/App/App/Assets.xcassets/AppIcon.appiconset" |
|||
}, |
|||
"android": { |
|||
"source": "resources/android/icon/icon.png", |
|||
"target": "android/app/src/main/res" |
|||
}, |
|||
"web": { |
|||
"source": "resources/web/icon/icon.png", |
|||
"target": "public/img/icons" |
|||
} |
|||
}, |
|||
"splash": { |
|||
"ios": { |
|||
"source": "resources/ios/splash/splash.png", |
|||
"target": "ios/App/App/Assets.xcassets/Splash.imageset" |
|||
}, |
|||
"android": { |
|||
"source": "resources/android/splash/splash.png", |
|||
"target": "android/app/src/main/res" |
|||
} |
|||
}, |
|||
"splashDark": { |
|||
"ios": { |
|||
"source": "resources/ios/splash/splash_dark.png", |
|||
"target": "ios/App/App/Assets.xcassets/SplashDark.imageset" |
|||
}, |
|||
"android": { |
|||
"source": "resources/android/splash/splash_dark.png", |
|||
"target": "android/app/src/main/res" |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,79 @@ |
|||
# TimeSafari Resources Directory |
|||
|
|||
This directory contains source assets for the TimeSafari application across all platforms. |
|||
|
|||
## Directory Structure |
|||
|
|||
``` |
|||
resources/ |
|||
├── android/ |
|||
│ ├── icon/ |
|||
│ │ └── icon.png |
|||
│ └── splash/ |
|||
│ ├── splash.png |
|||
│ └── splash_dark.png |
|||
├── ios/ |
|||
│ ├── icon/ |
|||
│ │ └── icon.png |
|||
│ └── splash/ |
|||
│ ├── splash.png |
|||
│ └── splash_dark.png |
|||
└── web/ |
|||
├── icon/ |
|||
│ └── icon.png |
|||
└── images/ |
|||
``` |
|||
|
|||
## Asset Requirements |
|||
|
|||
### Icon Requirements |
|||
- **Format**: PNG |
|||
- **Size**: 1024x1024 pixels minimum |
|||
- **Background**: Transparent or solid color |
|||
- **Content**: App logo/icon |
|||
|
|||
### Splash Screen Requirements |
|||
- **Format**: PNG |
|||
- **Size**: 1242x2688 pixels (iPhone 11 Pro Max size) |
|||
- **Background**: Solid color or gradient |
|||
- **Content**: App logo centered |
|||
|
|||
## Asset Generation |
|||
|
|||
Assets are automatically generated during the build process using `capacitor-assets`: |
|||
|
|||
```bash |
|||
# Generate assets for all platforms |
|||
npx capacitor-assets generate |
|||
|
|||
# Generate assets for specific platform |
|||
npx capacitor-assets generate --ios |
|||
npx capacitor-assets generate --android |
|||
npx capacitor-assets generate --web |
|||
``` |
|||
|
|||
## Configuration |
|||
|
|||
Asset generation is configured in `capacitor-assets.config.json` at the project root. |
|||
|
|||
## Version Control |
|||
|
|||
- **Source assets** (this directory): ✅ In version control |
|||
- **Generated assets**: ❌ Not in version control (excluded by `.gitignore`) |
|||
|
|||
## Updating Assets |
|||
|
|||
1. Replace the source asset files in the appropriate platform directory |
|||
2. Run the build process to regenerate platform-specific assets |
|||
3. Test the generated assets on target platforms |
|||
|
|||
## Build Integration |
|||
|
|||
Assets are automatically generated as part of the build process: |
|||
- `npm run build:android` - Generates Android assets |
|||
- `npm run build:ios` - Generates iOS assets |
|||
- `npm run build:web` - Generates web assets |
|||
|
|||
**Author**: Matthew Raymer |
|||
**Date**: 2025-01-27 |
|||
**Status**: ✅ **ACTIVE** - Asset management system implemented |
After Width: | Height: | Size: 279 KiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 279 KiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 279 KiB |