forked from jsnbuchanan/crowd-funder-for-time-pwa
Merge pull request 'trent-tweaks' (#133) from trent-tweaks into qrcode-reboot
Reviewed-on: trent_larson/crowd-funder-for-time-pwa#133
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -53,5 +53,4 @@ build_logs/
|
|||||||
|
|
||||||
android/app/src/main/assets/public
|
android/app/src/main/assets/public
|
||||||
android/app/src/main/res
|
android/app/src/main/res
|
||||||
android/.gradle/buildOutputCleanup/buildOutputCleanup.lock
|
|
||||||
android/.gradle/file-system.probe
|
|
||||||
|
|||||||
44
BUILDING.md
44
BUILDING.md
@@ -337,6 +337,8 @@ Prerequisites: macOS with Xcode installed
|
|||||||
npx cap sync ios
|
npx cap sync ios
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- If that fails with "Could not find..." then look at the "gem_path" instructions above.
|
||||||
|
|
||||||
3. Copy the assets:
|
3. Copy the assets:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -344,20 +346,38 @@ Prerequisites: macOS with Xcode installed
|
|||||||
npx capacitor-assets generate --ios
|
npx capacitor-assets generate --ios
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Open the project in Xcode:
|
4. Bump the version to match Android
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ios/App
|
||||||
|
xcrun agvtool new-version 15
|
||||||
|
# Unfortunately this edits Info.plist directly.
|
||||||
|
#xcrun agvtool new-marketing-version 0.4.5
|
||||||
|
cat App.xcodeproj/project.pbxproj | sed "s/MARKETING_VERSION = .*;/MARKETING_VERSION = 0.4.5;/g" > temp
|
||||||
|
mv temp App.xcodeproj/project.pbxproj
|
||||||
|
cd -
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Open the project in Xcode:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx cap open ios
|
npx cap open ios
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Use Xcode to build and run on simulator or device.
|
6. Use Xcode to build and run on simulator or device.
|
||||||
|
|
||||||
5. Release
|
7. Release
|
||||||
|
|
||||||
* Under "General" renamed a bunch of things to "Time Safari"
|
* Under "General" renamed a bunch of things to "Time Safari"
|
||||||
* Choose Product -> Destination -> Any iOS
|
* Choose Product -> Destination -> Build Any iOS
|
||||||
* Choose Product -> Archive (which will trigger a build and take time, and "login" keychain password is machine user login, repeatedly)
|
* Choose Product -> Archive
|
||||||
* Click Distribute
|
* This will trigger a build and take time, needing user's "login" keychain password which is just their login password, repeatedly.
|
||||||
|
* If it fails with `building for 'iOS', but linking in dylib (.../.pkgx/zlib.net/v1.3.0/lib/libz.1.3.dylib) built for 'macOS'` then run XCode outside that terminal (ie. not with `npx cap open ios`).
|
||||||
|
* Click Distribute -> App Store Connect
|
||||||
|
* In AppStoreConnect, add the build to the distribution: remove the current build with the "-" when you hover over it, then "Add Build" with the new build.
|
||||||
|
* It can take 15 minutes for the build to show up in the list of builds.
|
||||||
|
* You'll probably have to "Manage" something about encryption, disallowed in France.
|
||||||
|
* Then "Save" and "Add to Review" and "Resubmit to App Review".
|
||||||
|
|
||||||
#### First-time iOS Configuration
|
#### First-time iOS Configuration
|
||||||
|
|
||||||
@@ -393,13 +413,15 @@ Prerequisites: Android Studio with SDK installed
|
|||||||
npx capacitor-assets generate --android
|
npx capacitor-assets generate --android
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Open the project in Android Studio:
|
4. Bump version to match iOS, in android/app/build.gradleq
|
||||||
|
|
||||||
|
5. Open the project in Android Studio:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
npx cap open android
|
npx cap open android
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Use Android Studio to build and run on emulator or device.
|
6. Use Android Studio to build and run on emulator or device.
|
||||||
|
|
||||||
## Android Build from the console
|
## Android Build from the console
|
||||||
|
|
||||||
@@ -429,6 +451,12 @@ Prerequisites: Android Studio with SDK installed
|
|||||||
|
|
||||||
... and find your `aab` file at app/build/outputs/bundle/release
|
... and find your `aab` file at app/build/outputs/bundle/release
|
||||||
|
|
||||||
|
At play.google.com/console:
|
||||||
|
|
||||||
|
- Create new release, upload, hit Next.
|
||||||
|
|
||||||
|
- Save & send changes for review.
|
||||||
|
|
||||||
|
|
||||||
## First-time Android Configuration for deep links
|
## First-time Android Configuration for deep links
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ See [TESTING.md](test-playwright/TESTING.md) for detailed test instructions.
|
|||||||
|
|
||||||
## Icons
|
## Icons
|
||||||
|
|
||||||
To add an icon, add to main.ts and reference with `fa` element and `icon` attribute with the hyphenated name.
|
Application icons are in the `assets` directory, processed by the `capacitor-assets` command.
|
||||||
|
|
||||||
|
To add a Font Awesome icon, add to main.ts and reference with `font-awesome` element and `icon` attribute with the hyphenated name.
|
||||||
|
|
||||||
## Other
|
## Other
|
||||||
|
|
||||||
|
|||||||
20
android/.gitignore
vendored
20
android/.gitignore
vendored
@@ -1,5 +1,17 @@
|
|||||||
# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore
|
# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore
|
||||||
|
|
||||||
|
app/build/*
|
||||||
|
!app/build/.npmkeep
|
||||||
|
|
||||||
|
# Copied web assets
|
||||||
|
app/src/main/assets/public
|
||||||
|
|
||||||
|
# Generated Config files
|
||||||
|
app/src/main/assets/capacitor.config.json
|
||||||
|
app/src/main/assets/capacitor.plugins.json
|
||||||
|
app/src/main/res/xml/config.xml
|
||||||
|
|
||||||
|
# secrets
|
||||||
app/gradle.properties.secrets
|
app/gradle.properties.secrets
|
||||||
app/time-safari-upload-key-pkcs12.jks
|
app/time-safari-upload-key-pkcs12.jks
|
||||||
|
|
||||||
@@ -94,11 +106,3 @@ lint/tmp/
|
|||||||
|
|
||||||
# Cordova plugins for Capacitor
|
# Cordova plugins for Capacitor
|
||||||
capacitor-cordova-android-plugins
|
capacitor-cordova-android-plugins
|
||||||
|
|
||||||
# Copied web assets
|
|
||||||
app/src/main/assets/public
|
|
||||||
|
|
||||||
# Generated Config files
|
|
||||||
app/src/main/assets/capacitor.config.json
|
|
||||||
app/src/main/assets/capacitor.plugins.json
|
|
||||||
app/src/main/res/xml/config.xml
|
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
#Wed Apr 09 09:01:13 UTC 2025
|
|
||||||
gradle.version=8.11.1
|
|
||||||
Binary file not shown.
2
android/app/.gitignore
vendored
2
android/app/.gitignore
vendored
@@ -1,2 +0,0 @@
|
|||||||
/build/*
|
|
||||||
!/build/.npmkeep
|
|
||||||
2
assets/README.md
Normal file
2
assets/README.md
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
Application icons are here. They are processed for android & ios by the `capacitor-assets` command, as indicated in the BUILDING.md file.
|
||||||
@@ -122,8 +122,8 @@
|
|||||||
504EC2FC1FED79650016851F /* Project object */ = {
|
504EC2FC1FED79650016851F /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 0920;
|
LastSwiftUpdateCheck = 920;
|
||||||
LastUpgradeCheck = 0920;
|
LastUpgradeCheck = 920;
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
504EC3031FED79650016851F = {
|
504EC3031FED79650016851F = {
|
||||||
CreatedOnToolsVersion = 9.2;
|
CreatedOnToolsVersion = 9.2;
|
||||||
@@ -348,18 +348,19 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 17;
|
||||||
DEVELOPMENT_TEAM = 7XVXYPEQYJ;
|
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
||||||
INFOPLIST_FILE = App/Info.plist;
|
INFOPLIST_FILE = App/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 0.4.6;
|
||||||
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\"";
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.brownspank.timesafari;
|
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VERSIONING_SYSTEM = "apple-generic"; /* allows agvtool to set *_VERSION settings */
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@@ -369,17 +370,18 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 17;
|
||||||
DEVELOPMENT_TEAM = 7XVXYPEQYJ;
|
DEVELOPMENT_TEAM = GM3FS5JQPH;
|
||||||
INFOPLIST_FILE = App/Info.plist;
|
INFOPLIST_FILE = App/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 0.4.6;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.brownspank.timesafari;
|
PRODUCT_BUNDLE_IDENTIFIER = app.timesafari;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
VERSIONING_SYSTEM = "apple-generic"; /* allows agvtool to set *_VERSION settings */
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 116 KiB |
@@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"images" : [
|
"images": [
|
||||||
{
|
{
|
||||||
"filename" : "AppIcon-512@2x.png",
|
"idiom": "universal",
|
||||||
"idiom" : "universal",
|
"size": "1024x1024",
|
||||||
"platform" : "ios",
|
"filename": "AppIcon-512@2x.png",
|
||||||
"size" : "1024x1024"
|
"platform": "ios"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info" : {
|
"info": {
|
||||||
"author" : "xcode",
|
"author": "xcode",
|
||||||
"version" : 1
|
"version": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>en</string>
|
<string>en</string>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>TimeSafari</string>
|
<string>TimeSafari</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
@@ -22,6 +22,10 @@
|
|||||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>NSCameraUsageDescription</key>
|
||||||
|
<string>Time Safari allows you to take photos, and also scan QR codes from contacts.</string>
|
||||||
|
<key>NSPhotoLibraryUsageDescription</key>
|
||||||
|
<string>Time Safari allows you to upload photos.</string>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile</key>
|
<key>UIMainStoryboardFile</key>
|
||||||
@@ -45,9 +49,5 @@
|
|||||||
</array>
|
</array>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSCameraUsageDescription</key>
|
|
||||||
<string>This app uses the camera to scan QR codes and capture photos.</string>
|
|
||||||
<key>NSPhotoLibraryUsageDescription</key>
|
|
||||||
<string>This app needs access to your photo library to save and select photos.</string>
|
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "timesafari",
|
"name": "timesafari",
|
||||||
"version": "0.4.4",
|
"version": "0.4.6",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "timesafari",
|
"name": "timesafari",
|
||||||
"version": "0.4.4",
|
"version": "0.4.6",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capacitor-mlkit/barcode-scanning": "^6.0.0",
|
"@capacitor-mlkit/barcode-scanning": "^6.0.0",
|
||||||
"@capacitor/android": "^6.2.0",
|
"@capacitor/android": "^6.2.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "timesafari",
|
"name": "timesafari",
|
||||||
"version": "0.4.4",
|
"version": "0.4.6",
|
||||||
"description": "Time Safari Application",
|
"description": "Time Safari Application",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Time Safari Team"
|
"name": "Time Safari Team"
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
- gradle
|
- gradle
|
||||||
- java
|
- java
|
||||||
|
- pod
|
||||||
|
|
||||||
# other dependencies are discovered via package.json & requirements.txt & Gemfile (I'm guessing).
|
# other dependencies are discovered via package.json & requirements.txt & Gemfile (I'm guessing).
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"status": "failed",
|
|
||||||
"failedTests": []
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
"status": "failed",
|
|
||||||
"failedTests": [
|
|
||||||
"a29eb57667e0fb28c7e9-7a80e551e7f16a766d0d",
|
|
||||||
"a29eb57667e0fb28c7e9-1a8c76601bb6ea4f735c",
|
|
||||||
"a29eb57667e0fb28c7e9-0a3670fa77fcd5ac9827",
|
|
||||||
"a29eb57667e0fb28c7e9-90c8866cf70c7f96647d",
|
|
||||||
"a29eb57667e0fb28c7e9-4abc584edcf7a6a12389",
|
|
||||||
"a29eb57667e0fb28c7e9-3b443656a23fd8e7eb76",
|
|
||||||
"a29eb57667e0fb28c7e9-1f63cf7a41b756ffe01f",
|
|
||||||
"a29eb57667e0fb28c7e9-4eb03633761e58eac0a4",
|
|
||||||
"db48a48c514e3e2940e5-cef25040a0b285eed2ba",
|
|
||||||
"1c818805c9b0ac973736-726f18ba6163d57238c8",
|
|
||||||
"c52ae54d86eda05904f3-adf7525a07e75f4e3cc2",
|
|
||||||
"2fac21b9c9c3eb062631-9d2d2e9a199603c11b9b",
|
|
||||||
"64242279fe0133650483-20fbacc4e45c5561df6c",
|
|
||||||
"a7ff64a290be94f9d82c-e26ceb13031dafad1133",
|
|
||||||
"868977083268005e6ec0-c27d226d34e20ba4863d",
|
|
||||||
"5e149db5da4a5e319bcc-3298c84d0ebfff5e6d7c",
|
|
||||||
"5e149db5da4a5e319bcc-1981ba81641b6000f80b",
|
|
||||||
"2b5f6d3352de2040032d-bf5ed3a9483d90c396dd",
|
|
||||||
"2b5f6d3352de2040032d-6f52c3699c55c19ccad8",
|
|
||||||
"2b5f6d3352de2040032d-0f478a3208f64651daa1",
|
|
||||||
"2b5f6d3352de2040032d-a05f542cad739ee3b5b9",
|
|
||||||
"955bdfdfe05b442c0f5d-a9ec2b8bc7bd90ea0439",
|
|
||||||
"955bdfdfe05b442c0f5d-2c38171f673436923a8b",
|
|
||||||
"1a1fd29d3f0573e705e6-a3a6805908fe9a29ab11"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user