Merge pull request #4810 from bitpay/bitpay
Simplify user interface & major performance improvements
|
@ -3,30 +3,16 @@ i18n/po/*.mo
|
|||
i18n/crowdin_api_key.txt
|
||||
src/js/translations.js
|
||||
|
||||
# Coinbase API ClientID/Secret
|
||||
coinbase.json
|
||||
src/js/coinbase.js
|
||||
|
||||
# cordova
|
||||
plugins
|
||||
platforms
|
||||
cordova/project-*/*
|
||||
cordova/*.keystore
|
||||
|
||||
amazon.json
|
||||
src/js/amazon.js
|
||||
|
||||
|
||||
# node-webkit
|
||||
cache
|
||||
webkitbuilds/*
|
||||
!webkitbuilds/README.md
|
||||
!webkitbuilds/setup-win.iss
|
||||
!webkitbuilds/favicon.ico
|
||||
!webkitbuilds/.desktop
|
||||
!webkitbuilds/build-osx.sh
|
||||
!webkitbuilds/Background.png
|
||||
|
||||
#fonts
|
||||
public/fonts
|
||||
|
||||
# chrome extensions
|
||||
chrome-app/build/*
|
||||
|
@ -59,7 +45,7 @@ build/Release
|
|||
node_modules
|
||||
bower_components
|
||||
angular-bitcore-wallet-client/angular-bitcore-wallet-client.js
|
||||
angular-pbkdf2/angular-pbkdf2.js
|
||||
angular-bitauth/angular-bitauth.js
|
||||
|
||||
# Users Environment Variables
|
||||
.lock-wscript
|
||||
|
@ -70,9 +56,6 @@ angular-pbkdf2/angular-pbkdf2.js
|
|||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
|
@ -96,39 +79,36 @@ Session.vim
|
|||
.netrwhist
|
||||
*~
|
||||
|
||||
.tags
|
||||
.tags1
|
||||
|
||||
# SASS
|
||||
src/sass/*.css
|
||||
.sass-cache
|
||||
|
||||
# copay public
|
||||
public/icons/*
|
||||
public/css/*
|
||||
public/lib/*
|
||||
public/js/*
|
||||
# copay www
|
||||
www/css/*
|
||||
www/lib/*
|
||||
www/js/*
|
||||
www/fonts
|
||||
|
||||
## templates
|
||||
/config.xml
|
||||
/ionic.config.json
|
||||
/appConfig.json
|
||||
externalServices.json
|
||||
cordova/Makefile
|
||||
cordova/ProjectMakefile
|
||||
app-template/bpapp
|
||||
cordova/ProjectMakefile
|
||||
app-template/bitpay-wallet
|
||||
cordova/config.xml
|
||||
cordova/wp/Package.appxmanifest
|
||||
public/img/logo-negative.svg
|
||||
public/img/logo.svg
|
||||
src/js/appConfig.js
|
||||
src/js/externalServices.js
|
||||
chrome-app/manifest.json
|
||||
www/img/app
|
||||
www/index.html
|
||||
|
||||
|
||||
cordova/Makefile
|
||||
cordova/ProjectMakefile
|
||||
app-template/bpapp
|
||||
cordova/ProjectMakefile
|
||||
cordova/config.xml
|
||||
cordova/wp/Package.appxmanifest
|
||||
public/img/logo-negative.svg
|
||||
public/img/logo.svg
|
||||
src/js/appConfig.js
|
||||
|
||||
cordova/android/res/
|
||||
cordova/wp/Assets/
|
||||
cordova/wp/*.png
|
||||
|
@ -136,7 +116,3 @@ cordova/wp/*.jpg
|
|||
cordova/ios/splash/
|
||||
cordova/ios/icons/
|
||||
cordova/project/
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
168
Gruntfile.js
|
@ -6,12 +6,13 @@ module.exports = function(grunt) {
|
|||
|
||||
// Project Configuration
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
exec: {
|
||||
appConfig: {
|
||||
command: 'node ./util/buildAppConfig.js'
|
||||
},
|
||||
coinbase: {
|
||||
command: 'node ./util/coinbase.js'
|
||||
externalServices: {
|
||||
command: 'node ./util/buildExternalServices.js'
|
||||
},
|
||||
clean: {
|
||||
command: 'rm -Rf bower_components node_modules'
|
||||
|
@ -19,8 +20,8 @@ module.exports = function(grunt) {
|
|||
cordovaclean: {
|
||||
command: 'make -C cordova clean'
|
||||
},
|
||||
osx: {
|
||||
command: 'webkitbuilds/build-osx.sh sign'
|
||||
macos: {
|
||||
command: 'sh webkitbuilds/build-macos.sh sign'
|
||||
},
|
||||
coveralls: {
|
||||
command: 'cat coverage/report-lcov/lcov.info |./node_modules/coveralls/bin/coveralls.js'
|
||||
|
@ -28,20 +29,29 @@ module.exports = function(grunt) {
|
|||
chrome: {
|
||||
command: 'make -C chrome-app '
|
||||
},
|
||||
wp: {
|
||||
command: 'make -C cordova wp',
|
||||
wpinit: {
|
||||
command: 'make -C cordova wp-init',
|
||||
},
|
||||
wpcopy: {
|
||||
command: 'make -C cordova wp-copy',
|
||||
},
|
||||
iosdebug: {
|
||||
command: 'npm run build:ios',
|
||||
},
|
||||
ios: {
|
||||
command: 'make -C cordova ios',
|
||||
command: 'npm run build:ios-release',
|
||||
},
|
||||
xcode: {
|
||||
command: 'open cordova/project-ios/platforms/ios/*.xcodeproj',
|
||||
command: 'npm run open:ios',
|
||||
},
|
||||
androiddebug: {
|
||||
command: 'npm run build:android',
|
||||
},
|
||||
android: {
|
||||
command: 'make -C cordova android',
|
||||
command: 'npm run build:android-release',
|
||||
},
|
||||
androidrun: {
|
||||
command: 'make -C cordova androidrun',
|
||||
command: 'npm run run:android && npm run log:android',
|
||||
},
|
||||
androidbuild: {
|
||||
command: 'cd cordova/project && cordova build android --release',
|
||||
|
@ -51,10 +61,10 @@ module.exports = function(grunt) {
|
|||
stdin: true,
|
||||
},
|
||||
desktopsign: {
|
||||
cmd: 'gpg -u 1112CFA1 --output webkitbuilds/Copay-linux.zip.sig --detach-sig webkitbuilds/Copay-linux.zip && gpg -u 1112CFA1 --output webkitbuilds/Copay-win.exe.sig --detach-sig webkitbuilds/Copay-win.exe'
|
||||
cmd: 'gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-linux.zip.sig --detach-sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg -u 1112CFA1 --output webkitbuilds/<%= pkg.title %>-win.exe.sig --detach-sig webkitbuilds/<%= pkg.title %>-win.exe'
|
||||
},
|
||||
desktopverify: {
|
||||
cmd: 'gpg --verify webkitbuilds/Copay-linux.zip.sig webkitbuilds/Copay-linux.zip && gpg --verify webkitbuilds/Copay-win.exe.sig webkitbuilds/Copay-win.exe'
|
||||
cmd: 'gpg --verify webkitbuilds/<%= pkg.title %>-linux.zip.sig webkitbuilds/<%= pkg.title %>-linux.zip && gpg --verify webkitbuilds/<%= pkg.title %>-win.exe.sig webkitbuilds/<%= pkg.title %>-win.exe'
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
|
@ -65,11 +75,11 @@ module.exports = function(grunt) {
|
|||
},
|
||||
},
|
||||
css: {
|
||||
files: ['src/sass/*.css', 'src/css/*.css'],
|
||||
files: ['src/css/*.css'],
|
||||
tasks: ['concat:css']
|
||||
},
|
||||
sass: {
|
||||
files: ['src/sass/*.scss'],
|
||||
files: ['src/sass/**/**/*.scss'],
|
||||
tasks: ['sass', 'concat:css']
|
||||
},
|
||||
main: {
|
||||
|
@ -94,7 +104,7 @@ module.exports = function(grunt) {
|
|||
},
|
||||
files: [{
|
||||
expand: true,
|
||||
src: ['src/sass/*.scss'],
|
||||
src: ['src/sass/main.scss'],
|
||||
dest: './',
|
||||
ext: '.css'
|
||||
}]
|
||||
|
@ -108,20 +118,21 @@ module.exports = function(grunt) {
|
|||
angular: {
|
||||
src: [
|
||||
'bower_components/qrcode-generator/js/qrcode.js',
|
||||
'bower_components/qrcode-decoder-js/lib/qrcode-decoder.js',
|
||||
'bower_components/moment/min/moment-with-locales.js',
|
||||
'bower_components/angular-ui-router/release/angular-ui-router.js',
|
||||
'bower_components/angular-moment/angular-moment.js',
|
||||
'bower_components/ng-lodash/build/ng-lodash.js',
|
||||
'bower_components/angular-qrcode/angular-qrcode.js',
|
||||
'bower_components/angular-gettext/dist/angular-gettext.js',
|
||||
'bower_components/angular-sanitize/angular-sanitize.js',
|
||||
'bower_components/ng-csv/build/ng-csv.js',
|
||||
'bower_components/ionic-toast/dist/ionic-toast.bundle.min.js',
|
||||
'bower_components/angular-clipboard/angular-clipboard.js',
|
||||
'bower_components/angular-md5/angular-md5.js',
|
||||
'bower_components/angular-mocks/angular-mocks.js',
|
||||
'angular-pbkdf2/angular-pbkdf2.js',
|
||||
'bower_components/ngtouch/src/ngTouch.js',
|
||||
'angular-bitauth/angular-bitauth.js',
|
||||
'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js'
|
||||
],
|
||||
dest: 'public/lib/angular.js'
|
||||
dest: 'www/lib/angular.js'
|
||||
},
|
||||
js: {
|
||||
src: [
|
||||
|
@ -134,53 +145,19 @@ module.exports = function(grunt) {
|
|||
'src/js/controllers/**/*.js',
|
||||
'src/js/translations.js',
|
||||
'src/js/appConfig.js',
|
||||
'src/js/coinbase.js',
|
||||
'src/js/externalServices.js',
|
||||
'src/js/init.js',
|
||||
'src/js/trezor-url.js',
|
||||
'bower_components/trezor-connect/login.js'
|
||||
'bower_components/trezor-connect/login.js',
|
||||
'node_modules/bezier-easing/dist/bezier-easing.min.js',
|
||||
'node_modules/cordova-plugin-qrscanner/dist/cordova-plugin-qrscanner-lib.min.js'
|
||||
],
|
||||
dest: 'public/js/copay.js'
|
||||
dest: 'www/js/copay.js'
|
||||
},
|
||||
css: {
|
||||
src: ['src/sass/*.css', 'src/css/*.css'],
|
||||
dest: 'public/css/copay.css'
|
||||
},
|
||||
foundation: {
|
||||
src: [
|
||||
'bower_components/angular/angular-csp.css',
|
||||
'bower_components/foundation/css/foundation.css',
|
||||
'bower_components/animate.css/animate.css'
|
||||
],
|
||||
dest: 'public/css/foundation.css',
|
||||
},
|
||||
ionic_js: {
|
||||
src: [
|
||||
'bower_components/ionic/release/js/ionic.bundle.min.js'
|
||||
],
|
||||
dest: 'public/lib/ionic.bundle.js'
|
||||
},
|
||||
ionic_css: {
|
||||
src: [
|
||||
'bower_components/ionic/release/css/ionic.min.css'
|
||||
],
|
||||
dest: 'public/css/ionic.css',
|
||||
},
|
||||
ui_components_js: {
|
||||
src: [
|
||||
'bower_components/jquery/dist/jquery.js',
|
||||
'bower_components/roundSlider/dist/roundslider.min.js',
|
||||
'bower_components/angular-gridster/dist/angular-gridster.min.js',
|
||||
'bower_components/javascript-detect-element-resize/detect-element-resize.js'
|
||||
],
|
||||
dest: 'public/lib/ui-components.js'
|
||||
},
|
||||
ui_components_css: {
|
||||
src: [
|
||||
'bower_components/roundSlider/dist/roundslider.min.css',
|
||||
'bower_components/angular-gridster/dist/angular-gridster.min.css'
|
||||
],
|
||||
dest: 'public/css/ui-components.css',
|
||||
},
|
||||
dest: 'www/css/copay.css'
|
||||
}
|
||||
},
|
||||
uglify: {
|
||||
options: {
|
||||
|
@ -188,8 +165,8 @@ module.exports = function(grunt) {
|
|||
},
|
||||
prod: {
|
||||
files: {
|
||||
'public/js/copay.js': ['public/js/copay.js'],
|
||||
'public/lib/angular.js': ['public/lib/angular.js']
|
||||
'www/js/copay.js': ['www/js/copay.js'],
|
||||
'www/lib/angular.js': ['www/lib/angular.js']
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -197,8 +174,8 @@ module.exports = function(grunt) {
|
|||
pot: {
|
||||
files: {
|
||||
'i18n/po/template.pot': [
|
||||
'public/index.html',
|
||||
'public/views/**/*.html',
|
||||
'www/index.html',
|
||||
'www/views/**/*.html',
|
||||
'src/js/routes.js',
|
||||
'src/js/services/*.js',
|
||||
'src/js/controllers/**/*.js'
|
||||
|
@ -217,85 +194,76 @@ module.exports = function(grunt) {
|
|||
},
|
||||
},
|
||||
copy: {
|
||||
icons: {
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: 'bower_components/foundation-icon-fonts/foundation-icons.*',
|
||||
dest: 'public/icons/'
|
||||
},
|
||||
ionic_fonts: {
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: 'bower_components/ionic/release/fonts/ionicons.*',
|
||||
dest: 'public/fonts/'
|
||||
dest: 'www/fonts/'
|
||||
},
|
||||
ionic_js: {
|
||||
expand: true,
|
||||
flatten: true,
|
||||
src: 'bower_components/ionic/release/js/ionic.bundle.min.js',
|
||||
dest: 'www/lib/'
|
||||
},
|
||||
linux: {
|
||||
files: [{
|
||||
expand: true,
|
||||
cwd: 'webkitbuilds/',
|
||||
src: ['.desktop', '../public/img/icons/favicon.ico', '../public/img/icons/icon-256.png'],
|
||||
dest: 'webkitbuilds/Copay/linux64/',
|
||||
src: ['.desktop', '../www/img/app/favicon.ico', '../resources/<%= pkg.name %>/linux/512x512.png'],
|
||||
dest: 'webkitbuilds/<%= pkg.title %>/linux64/',
|
||||
flatten: true,
|
||||
filter: 'isFile'
|
||||
}],
|
||||
}
|
||||
},
|
||||
karma: {
|
||||
unit: {
|
||||
configFile: 'test/karma.conf.js'
|
||||
},
|
||||
prod: {
|
||||
configFile: 'test/karma.conf.js',
|
||||
singleRun: true
|
||||
}
|
||||
},
|
||||
nwjs: {
|
||||
options: {
|
||||
appName: 'Copay',
|
||||
appName: '<%= pkg.title %>',
|
||||
platforms: ['win64', 'osx64', 'linux64'],
|
||||
buildDir: './webkitbuilds',
|
||||
version: '0.16.0',
|
||||
macIcns: './public/img/icons/icon.icns',
|
||||
exeIco: './public/img/icons/icon.ico'
|
||||
macIcns: './resources/<%= pkg.name %>/mac/app.icns',
|
||||
exeIco: './www/img/app/logo.ico'
|
||||
},
|
||||
src: ['./package.json', './public/**/*']
|
||||
src: ['./package.json', './www/**/*']
|
||||
},
|
||||
compress: {
|
||||
linux: {
|
||||
options: {
|
||||
archive: './webkitbuilds/Copay-linux.zip'
|
||||
archive: './webkitbuilds/<%= pkg.title %>-linux.zip'
|
||||
},
|
||||
expand: true,
|
||||
cwd: './webkitbuilds/Copay/linux64/',
|
||||
cwd: './webkitbuilds/<%= pkg.title %>/linux64/',
|
||||
src: ['**/*'],
|
||||
dest: 'copay-linux/'
|
||||
dest: '<%= pkg.title %>-linux/'
|
||||
}
|
||||
},
|
||||
browserify: {
|
||||
dist: {
|
||||
files: {
|
||||
'angular-bitcore-wallet-client/angular-bitcore-wallet-client.js': ['angular-bitcore-wallet-client/index.js'],
|
||||
'angular-pbkdf2/angular-pbkdf2.js': ['angular-pbkdf2/index.js']
|
||||
'angular-bitauth/angular-bitauth.js': ['angular-bitauth/index.js']
|
||||
},
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('default', ['nggettext_compile', 'exec:appConfig', 'exec:coinbase', 'browserify', 'sass', 'concat', 'copy:icons', 'copy:ionic_fonts']);
|
||||
grunt.registerTask('default', ['nggettext_compile', 'exec:appConfig', 'exec:externalServices', 'browserify', 'sass', 'concat', 'copy:ionic_fonts', 'copy:ionic_js']);
|
||||
grunt.registerTask('prod', ['default', 'uglify']);
|
||||
grunt.registerTask('translate', ['nggettext_extract']);
|
||||
grunt.registerTask('test', ['karma:unit']);
|
||||
grunt.registerTask('test-coveralls', ['browserify', 'karma:prod', 'exec:coveralls']);
|
||||
grunt.registerTask('desktop', ['prod', 'nwjs', 'copy:linux', 'compress:linux']);
|
||||
grunt.registerTask('osx', ['prod', 'nwjs', 'exec:osx']);
|
||||
grunt.registerTask('macos', ['prod', 'nwjs', 'exec:macos']);
|
||||
grunt.registerTask('chrome', ['exec:chrome']);
|
||||
grunt.registerTask('wp', ['prod', 'exec:wp']);
|
||||
grunt.registerTask('wp-debug', ['default', 'exec:wp']);
|
||||
grunt.registerTask('ios', ['prod', 'exec:ios', 'exec:xcode']);
|
||||
grunt.registerTask('ios-debug', ['default', 'exec:ios', 'exec:xcode']);
|
||||
grunt.registerTask('wp-copy', ['default', 'exec:wpcopy']);
|
||||
grunt.registerTask('wp-init', ['default', 'exec:wpinit']);
|
||||
grunt.registerTask('ios', ['exec:ios']);
|
||||
grunt.registerTask('ios-debug', ['exec:iosdebug']);
|
||||
grunt.registerTask('ios-run', ['exec:xcode']);
|
||||
grunt.registerTask('cordovaclean', ['exec:cordovaclean']);
|
||||
grunt.registerTask('android-debug', ['default', 'exec:android', 'exec:androidrun']);
|
||||
grunt.registerTask('android', ['prod', 'exec:android']);
|
||||
grunt.registerTask('android-debug', ['exec:androiddebug', 'exec:androidrun']);
|
||||
grunt.registerTask('android', ['exec:android']);
|
||||
grunt.registerTask('android-release', ['prod', 'exec:android', 'exec:androidsign']);
|
||||
grunt.registerTask('desktopsign', ['exec:desktopsign', 'exec:desktopverify']);
|
||||
|
||||
|
|
107
README.md
|
@ -3,7 +3,7 @@
|
|||
[![Build Status](https://secure.travis-ci.org/bitpay/copay.svg)](http://travis-ci.org/bitpay/copay)
|
||||
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/copay/localized.png)](https://crowdin.com/project/copay)
|
||||
|
||||
Copay is an easy-to-use, open-source, multiplatform, multisignature, secure bitcoin wallet platform for both individuals and companies. Copay uses [Bitcore Wallet Service](https://github.com/bitpay/bitcore-wallet-service) (BWS) for peer synchronization and network interfacing.
|
||||
Copay is an easy-to-use, open-source, multiplatform, multisignature, secure bitcoin wallet platform for both individuals and companies. Copay uses [Bitcore Wallet Service](https://github.com/bitpay/bitcore-wallet-service) (BWS) for peer synchronization and network interfacing.
|
||||
|
||||
Binary versions of Copay are available for download at [Copay.io](https://copay.io/#download). Copay Binaries are signed with the key `copay@bitpay.com` – See the section [`How to Verify Copay Signatures`](https://github.com/bitpay/copay#how-to-verify-copay-signatures) for details.
|
||||
|
||||
|
@ -29,7 +29,9 @@ For a list of frequently asked questions please visit the [Copay FAQ](https://gi
|
|||
- Multiple languages supported
|
||||
- Available for [iOS](https://itunes.apple.com/us/app/copay/id951330296), [Android](https://play.google.com/store/apps/details?id=com.bitpay.copay&hl=en), [Windows Phone](http://www.windowsphone.com/en-us/store/app/copay-wallet/4372479b-a064-4d18-8bd3-74a3bdb81c3a), [Chrome App](https://chrome.google.com/webstore/detail/copay/cnidaodnidkbaplmghlelgikaiejfhja?hl=en), [Linux](https://github.com/bitpay/copay/releases/latest), [Windows](https://github.com/bitpay/copay/releases/latest) and [OS X](https://github.com/bitpay/copay/releases/latest) devices
|
||||
|
||||
## Install For Development
|
||||
## Testing in a Browser
|
||||
|
||||
> **Note:** This method should only be used for development purposes. When running Copay in a normal browser environment, browser extensions and other malicious code might have access to internal data and private keys. For production use, see the latest official [releases](https://github.com/bitpay/copay/releases/).
|
||||
|
||||
Clone the repo and open the directory:
|
||||
|
||||
|
@ -47,68 +49,83 @@ npm start
|
|||
|
||||
Visit [`localhost:3000`](http://localhost:3000/) to view the app.
|
||||
|
||||
> **Note:** This method should only be used for development purposes. When running Copay in a normal browser environment, browser extensions and other malicious code might have access to internal data and private keys. For production use, see the latest official [releases](https://github.com/bitpay/copay/releases/).
|
||||
A watch task is also available to rebuild components of the app as changes are made. This task can be run in a separate process – while the server started by `npm start` is running – to quickly test changes.
|
||||
|
||||
## Build Copay App Bundles
|
||||
```
|
||||
npm run watch
|
||||
```
|
||||
|
||||
## Testing on Real Devices
|
||||
|
||||
It's recommended that all final testing be done on a real device – both to assess performance and to enable features that are unavailable to the emulator (e.g. a device camera).
|
||||
|
||||
### Android
|
||||
|
||||
- Install Android SDK
|
||||
- Run `make android`
|
||||
Follow the [Cordova Android Platform Guide](https://cordova.apache.org/docs/en/latest/guide/platforms/android/) to set up your development environment.
|
||||
|
||||
When your developement enviroment is ready, run the `start:android` npm package script.
|
||||
|
||||
```sh
|
||||
npm run apply:copay
|
||||
npm run start:android
|
||||
```
|
||||
|
||||
### iOS
|
||||
|
||||
- Install Xcode 6.1 (or newer)
|
||||
- Run `make ios-prod`
|
||||
Follow the [Cordova iOS Platform Guide](https://cordova.apache.org/docs/en/latest/guide/platforms/android/) to set up your development environment.
|
||||
|
||||
##### Notes for Xcode 7.0
|
||||
When your developement enviroment is ready, run the `start:ios` npm package script.
|
||||
|
||||
###### ATS support
|
||||
|
||||
Before starting Copay from Xcode, add these lines to "Custom iOS Target Properties":
|
||||
|
||||
```
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<true/>
|
||||
</dict>
|
||||
```sh
|
||||
npm run apply:copay
|
||||
npm run start:ios
|
||||
```
|
||||
|
||||
![Example](http://i.stack.imgur.com/nGw3j.png)
|
||||
### Desktop (Linux, macOS, and Windows)
|
||||
|
||||
The desktop version of Copay currently uses NW.js, an app runtime based on Chromium. To get started, first install NW.js on your system from [the NW.js website](https://nwjs.io/).
|
||||
|
||||
App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. [Read complete documentation](https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html).
|
||||
|
||||
###### Invalid Bundle while submitting application
|
||||
|
||||
`iPad Multitasking support requires launch story board in bundle`
|
||||
|
||||
To fix this problem, add the following:
|
||||
When NW.js is installed, run the `start:desktop` npm package script.
|
||||
|
||||
```sh
|
||||
npm run apply:copay
|
||||
npm run start:desktop
|
||||
```
|
||||
<key>UIRequiresFullScreen</key>
|
||||
<string>YES</string>
|
||||
|
||||
## Build Copay App Bundles
|
||||
|
||||
Before building the release version for a platform, run the `clean-all` command to delete any untracked files in your current working directory. (Be sure to stash any uncommited changes you've made.) This guarantees consistency across builds for the current state of this repository.
|
||||
|
||||
The `final` commands build the production version of the app, and bundle it with the release version of the platform being built.
|
||||
|
||||
### Android
|
||||
|
||||
```sh
|
||||
npm run clean-all
|
||||
npm run apply:copay
|
||||
npm run final:android
|
||||
```
|
||||
###### Build settings, headers search path
|
||||
|
||||
Add this line to your Build Settings -> Header Search Paths -> Release
|
||||
|
||||
"$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include"
|
||||
|
||||
### iOS
|
||||
|
||||
```sh
|
||||
npm run clean-all
|
||||
npm run apply:copay
|
||||
npm run final:ios
|
||||
```
|
||||
|
||||
### Windows Phone
|
||||
|
||||
- Install Visual Studio 2013 (or newer)
|
||||
- Run `make wp8-prod`
|
||||
|
||||
### Desktop versions (Windows, OS X, Linux)
|
||||
### Desktop (Linux, macOS, and Windows)
|
||||
|
||||
Copay uses NW.js (also know as node-webkit) for its desktop version. NW.js is an app runtime based on `Chromium` and `node.js`.
|
||||
|
||||
- Install NW.js on your system from [nwjs.io](http://nwjs.io/)
|
||||
- Run `grunt desktop`
|
||||
```sh
|
||||
npm run clean-all
|
||||
npm run apply:copay
|
||||
npm run final:desktop
|
||||
```
|
||||
|
||||
### Google Chrome App
|
||||
|
||||
|
@ -116,9 +133,17 @@ Copay uses NW.js (also know as node-webkit) for its desktop version. NW.js is an
|
|||
|
||||
On success, the Chrome extension will be located at: `browser-extensions/chrome/copay-chrome-extension`. To install it go to `chrome://extensions/` in your browser and ensure you have the 'developer mode' option enabled in the settings. Then click on "Load unpacked chrome extension" and choose the directory mentioned above.
|
||||
|
||||
### Firefox Add-on
|
||||
## Configuration
|
||||
|
||||
The Copay Firefox Extension has been deprecated and is no longer supported.
|
||||
### Enable External Services
|
||||
|
||||
To enable external services, set the `COPAY_EXTERNAL_SERVICES_CONFIG_LOCATION` or `BITPAY_EXTERNAL_SERVICES_CONFIG_LOCATION` environment variable to the location of your configuration before running the `apply` task.
|
||||
|
||||
```sh
|
||||
COPAY_EXTERNAL_SERVICES_CONFIG_LOCATION="~/.copay/externalServices.json" npm run apply:copay
|
||||
# or
|
||||
BITPAY_EXTERNAL_SERVICES_CONFIG_LOCATION="~/.bitpay/externalServices.json" npm run apply:bitpay
|
||||
```
|
||||
|
||||
## About Copay
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
var bitauthModule = angular.module('bitauthModule', []);
|
||||
var bitauth = require('../node_modules/bitauth');
|
||||
|
||||
bitauthModule.constant('MODULE_VERSION', '1.0.0');
|
||||
|
||||
bitauthModule.provider("bitauthService", function() {
|
||||
var provider = {};
|
||||
|
||||
provider.$get = function() {
|
||||
var service = {};
|
||||
|
||||
service = bitauth;
|
||||
|
||||
return service;
|
||||
};
|
||||
|
||||
return provider;
|
||||
});
|
|
@ -1,18 +0,0 @@
|
|||
var pbkdf2Module = angular.module('pbkdf2Module', []);
|
||||
var pbkdf2Sync = require('../node_modules/pbkdf2').pbkdf2Sync;
|
||||
|
||||
pbkdf2Module.constant('MODULE_VERSION', '1.0.0');
|
||||
|
||||
pbkdf2Module.provider("pbkdf2Service", function() {
|
||||
var provider = {};
|
||||
|
||||
provider.$get = function() {
|
||||
var service = {};
|
||||
|
||||
service.pbkdf2Sync = pbkdf2Sync;
|
||||
|
||||
return service;
|
||||
};
|
||||
|
||||
return provider;
|
||||
});
|
|
@ -1,9 +1,9 @@
|
|||
[Desktop Entry]
|
||||
Type=Application
|
||||
Version=*VERSION*
|
||||
Name=*NAMECASENOSPACE*
|
||||
Comment=*DESCRIPTION*
|
||||
Exec=*NAMENOSPACE*
|
||||
Name=*USERVISIBLENAME*
|
||||
Comment=*PURPOSELINE*
|
||||
Exec=*PACKAGENAME*
|
||||
Icon=icon-256.png
|
||||
Terminal=false
|
||||
Categories=Finance
|
||||
|
|
|
@ -1,44 +1,27 @@
|
|||
.PHONY: ios android wp
|
||||
.PHONY: ios android wp
|
||||
|
||||
WORKDIR=project-
|
||||
|
||||
all:
|
||||
|
||||
clean:
|
||||
rm -Rf $(WORKDIR)*
|
||||
clean:
|
||||
rm -Rf $(WORKDIR)*
|
||||
|
||||
wp-init: config.xml
|
||||
cordova create $(WORKDIR)$@ com.bitpay.*BUNDLENAME* "*USERVISIBLENAME*" || echo "Project Path Existed"
|
||||
cp ProjectMakefile $(WORKDIR)$@/Makefile
|
||||
mkdir -p $(WORKDIR)$@/www
|
||||
cp -Rf ../www/* $(WORKDIR)$@/www
|
||||
cp config.xml $(WORKDIR)$@/config.xml
|
||||
make -C $(WORKDIR)$@ $(subst $(WORKDIR),, $(WORKDIR)$@)
|
||||
|
||||
$(WORKDIR)android $(WORKDIR)ios $(WORKDIR)wp: config.xml
|
||||
cordova create $@ com.bitpay.*NAMENOSPACE* *NAMECASENOSPACE* || echo "Project Path Existed"
|
||||
cp ProjectMakefile $@/Makefile
|
||||
cp -af ../public/** $@/www
|
||||
sed "s/<\!-- PLACEHOLDER: CORDOVA SRIPT -->/<script type='text\/javascript' charset='utf-8' src='cordova.js'><\/script>/g" ../public/index.html > $@/www/index.html
|
||||
cp config.xml $@/config.xml
|
||||
make -C $@ $(subst $(WORKDIR),, $@)
|
||||
|
||||
ios: $(WORKDIR)ios
|
||||
make -C $(WORKDIR)ios build-ios
|
||||
|
||||
android: project-android
|
||||
mkdir -p android/platforms/android/res/xml/
|
||||
cp android/build-extras.gradle $(WORKDIR)android/platforms/android/build-extras.gradle
|
||||
cp android/project.properties $(WORKDIR)android/platforms/android/project.properties
|
||||
cp -R android/res/* $(WORKDIR)android/platforms/android/res
|
||||
make -C $(WORKDIR)android build-android
|
||||
|
||||
|
||||
wp: build-wp
|
||||
cp -vf wp/Properties/* $</platforms/wp8/Properties/
|
||||
cp -vf wp/MainPage.xaml $</platforms/wp8/
|
||||
cp -vf wp/Package.appxmanifest $</platforms/wp8/
|
||||
cp -vf wp/Assets/* $</platforms/wp8/Assets/
|
||||
cp -vf wp/SplashScreenImage.jpg $</platforms/wp8/
|
||||
cp -vf wp/ApplicationIcon.png $</platforms/wp8/
|
||||
cp -vf wp/Background.png $</platforms/wp8/
|
||||
cp -af ../public/** $</www
|
||||
wp-copy:
|
||||
cp -rvf wp/Properties/* $(WORKDIR)wp/platforms/wp8/Properties/
|
||||
cp -rvf wp/MainPage.xaml $(WORKDIR)wp/platforms/wp8/
|
||||
cp -rvf wp/Package.appxmanifest $(WORKDIR)wp/platforms/wp8/
|
||||
cp -rvf wp/Assets/* $(WORKDIR)wp/platforms/wp8/Assets/
|
||||
cp -rvf wp/SplashScreenImage.jpg $(WORKDIR)wp/platforms/wp8/
|
||||
cp -rvf wp/ApplicationIcon.png $(WORKDIR)wp/platforms/wp8/
|
||||
cp -rvf wp/Background.png $(WORKDIR)wp/platforms/wp8/
|
||||
cp -rvf ../www/* $(WORKDIR)wp/www
|
||||
wp/fix-svg.sh
|
||||
|
||||
|
||||
androidrun:
|
||||
make -C $(WORKDIR)android run
|
||||
adb logcat | grep copay.js
|
||||
|
|
|
@ -1,51 +1,18 @@
|
|||
.PHONY:plugins ios-platform android-platform wp-platform
|
||||
.PHONY:plugins ios-platform android-platform wp8-platform
|
||||
|
||||
plugins:
|
||||
cordova plugin add cordova-plugin-globalization
|
||||
cordova plugin add cordova.plugins.diagnostic
|
||||
cordova plugin add cordova-plugin-splashscreen
|
||||
cordova plugin add cordova-plugin-statusbar
|
||||
cordova plugin add https://github.com/cmgustavo/Custom-URL-scheme.git --variable URL_SCHEME=bitcoin --variable SECOND_URL_SCHEME=*NAMENOSPACE*
|
||||
cordova plugin add cordova-plugin-inappbrowser
|
||||
cordova plugin add cordova-plugin-x-toast && cordova prepare
|
||||
cordova plugin add https://github.com/VersoSolutions/CordovaClipboard
|
||||
cordova plugin add https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin.git && cordova prepare
|
||||
cordova plugin add cordova-plugin-spinner-dialog
|
||||
cordova plugin add cordova-plugin-dialogs
|
||||
cordova plugin add cordova-plugin-network-information
|
||||
cordova plugin add cordova-plugin-console
|
||||
cordova plugin add cordova-plugin-uniquedeviceid
|
||||
cordova plugin add cordova-plugin-file
|
||||
cordova plugin add cordova-plugin-touch-id
|
||||
cordova plugin add https://github.com/cmgustavo/Custom-URL-scheme.git --variable URL_SCHEME=bitcoin --variable SECOND_URL_SCHEME=*APPURI*
|
||||
cordova prepare
|
||||
cordova plugin add cordova-plugin-transport-security
|
||||
cordova plugin add cordova-ios-requires-fullscreen
|
||||
cordova plugin add cordova-plugin-disable-bitcode
|
||||
rm -rf platforms/android/res/values-es
|
||||
cordova plugin add cordova-plugin-android-fingerprint-auth
|
||||
cordova plugin add cordova-plugin-screen-orientation
|
||||
cordova plugin add ionic-plugin-keyboard
|
||||
cordova plugin add cordova-plugin-whitelist
|
||||
|
||||
|
||||
|
||||
ios-platform android-platform wp-platform:
|
||||
wp8-platform:
|
||||
cordova platforms add $(subst -platform,,$@) || echo "Platform already added"
|
||||
|
||||
ios: ios-platform plugins
|
||||
cordova plugin add https://github.com/tjwoon/csZBar.git
|
||||
cordova plugin add phonegap-plugin-push@1.5.3
|
||||
|
||||
android: android-platform plugins
|
||||
cordova plugin add https://github.com/jrontend/phonegap-plugin-barcodescanner
|
||||
cordova plugin add phonegap-plugin-push@1.2.3
|
||||
|
||||
wp: wp-platform plugins
|
||||
wp: wp8-platform plugins
|
||||
cordova plugin add https://github.com/jrontend/phonegap-plugin-barcodescanner
|
||||
|
||||
build-ios build-android build-wp8:
|
||||
build-wp8:
|
||||
cordova build $(subst build-,,$@)
|
||||
|
||||
run:
|
||||
cordova run --device
|
||||
|
||||
cordova run --device
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<Language code="pl" />
|
||||
<Language code="cs" />
|
||||
</Languages>
|
||||
<App Author="Bitpay Inc." BitsPerPixel="32" Description="*DESCRIPTION*" Genre="apps.normal" ProductID="*WPPRODUCTID*" Publisher="*APPDESCRIPTION*" PublisherID="*WPPUBLISHERID*" RuntimeType="Silverlight" Title="*APPDESCRIPTION*" Version="*VERSION*.0" xmlns="" NotificationService="MPN">
|
||||
<App Author="Bitpay Inc." BitsPerPixel="32" Description="*DESCRIPTION*" Genre="apps.normal" ProductID="*WPPRODUCTID*" Publisher="*APPDESCRIPTION*" PublisherID="*WPPUBLISHERID*" RuntimeType="Silverlight" Title="*PURPOSELINE*" Version="*VERSION*.0" xmlns="" NotificationService="MPN">
|
||||
<IconPath IsRelative="true" IsResource="false">Assets\icon@2.png</IconPath>
|
||||
<Capabilities>
|
||||
<Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
|
||||
|
|
|
@ -5,17 +5,20 @@
|
|||
//
|
||||
|
||||
var templates = {
|
||||
'package.json': '/',
|
||||
'package-template.json': '/',
|
||||
'index.html': 'www/',
|
||||
'Makefile': 'cordova/',
|
||||
'ProjectMakefile': 'cordova/',
|
||||
'config.xml': 'cordova/',
|
||||
'config-template.xml': '/',
|
||||
'ionic.config.json': '/',
|
||||
'Package.appxmanifest': 'cordova/wp/',
|
||||
'.desktop': 'webkitbuilds/.desktop',
|
||||
'setup-win.iss': 'webkitbuilds/setup-win.iss',
|
||||
'.desktop': 'webkitbuilds/',
|
||||
'setup-win.iss': 'webkitbuilds/',
|
||||
'build-macos.sh': 'webkitbuilds/',
|
||||
// 'bower.json': '/',
|
||||
};
|
||||
var configDir = process.argv[2] || 'copay';
|
||||
var JSONheader = ' { ' + "\n" + ' "//":"PLEASE! Do not edit this file directly",' + "\n" + ' "//":" Modify it at app-template/", ' + "\n";
|
||||
var JSONheader = ' { ' + "\n" + ' "//":"Changes to this file will be overwritten",' + "\n" + ' "//":" Modify it in the app-template directory", ' + "\n";
|
||||
|
||||
var MakefileHeader = "# PLEASE! Do not edit this file directly \n# Modify it at app-template/\n";
|
||||
|
||||
|
@ -59,6 +62,15 @@ Object.keys(templates).forEach(function(k) {
|
|||
process.exit(1);
|
||||
}
|
||||
|
||||
if(k === 'config-template.xml'){
|
||||
k = 'config.xml';
|
||||
} else if (k === 'package-template.json') {
|
||||
k = 'package.json';
|
||||
}
|
||||
|
||||
if (!fs.existsSync('../' + targetDir)){
|
||||
fs.mkdirSync('../' + targetDir);
|
||||
}
|
||||
fs.writeFileSync('../' + targetDir + k, content, 'utf8');
|
||||
});
|
||||
|
||||
|
@ -67,7 +79,29 @@ console.log('Copying ' + configDir + '/appConfig.json' + ' to root');
|
|||
configBlob = configBlob.replace('{', JSONheader);
|
||||
fs.writeFileSync('../appConfig.json', configBlob, 'utf8');
|
||||
|
||||
|
||||
////////////////
|
||||
var externalServices;
|
||||
try {
|
||||
var confName = configDir.toUpperCase();
|
||||
var externalServicesConf = confName + '_EXTERNAL_SERVICES_CONFIG_LOCATION';
|
||||
console.log('Looking for ' + externalServicesConf + '...');
|
||||
if(typeof process.env[externalServicesConf] !== 'undefined') {
|
||||
var location = process.env[externalServicesConf]
|
||||
if(location.charAt(0) === '~') {
|
||||
location = location.replace(/^\~/, process.env.HOME || process.env.USERPROFILE);
|
||||
}
|
||||
console.log('Found at: ' + location);
|
||||
console.log('Copying ' + location + ' to root');
|
||||
externalServices = fs.readFileSync(location, 'utf8');
|
||||
} else {
|
||||
throw externalServicesConf + ' environment variable not set.';
|
||||
}
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
externalServices = '{}';
|
||||
console.log('External services not configured');
|
||||
}
|
||||
fs.writeFileSync('../externalServices.json', externalServices, 'utf8');
|
||||
|
||||
function copyDir(from, to, cb) {
|
||||
console.log('Copying dir ' + from + ' to');
|
||||
|
@ -103,18 +137,6 @@ function copyDir(from, to, cb) {
|
|||
}
|
||||
|
||||
|
||||
copyDir(configDir + '/img/', '../public/img/', function() {
|
||||
copyDir(configDir + '/androidRes/', '../cordova/android/res/', function() {
|
||||
copyDir(configDir + '/iosIcons/', '../cordova/ios/icons/', function() {
|
||||
copyDir(configDir + '/iosSplash/', '../cordova/ios/splash/', function() {
|
||||
copyDir(configDir + '/wpAssets/', '../cordova/wp/Assets/', function() {
|
||||
copyDir(configDir + '/wpImg/', '../cordova/wp/', function() {
|
||||
|
||||
// TODO WP
|
||||
console.log("apply.js finished. \n\n");
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
copyDir(configDir + '/img/', '../www/img/app/', function() {
|
||||
console.log("apply.js finished. \n\n");
|
||||
});
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"packageName": "bitpay",
|
||||
"packageDescription": "Secure Bitcoin Wallet",
|
||||
"userVisibleName": "BitPay",
|
||||
"purposeLine": "Secure Bitcoin Wallet",
|
||||
"bundleName": "wallet",
|
||||
"appUri": "bitpay",
|
||||
"name": "bitpay",
|
||||
"nameNoSpace": "bitpay",
|
||||
"nameCase": "BitPay",
|
||||
"nameCaseNoSpace": "BitPay",
|
||||
"gitHubRepoName": "bitpay-wallet",
|
||||
"gitHubRepoUrl": "git://github.com/bitpay/bitpay-wallet.git",
|
||||
"gitHubRepoBugs": "https://github.com/bitpay/bitpay-wallet/issues",
|
||||
"disclaimerUrl": "",
|
||||
"url": "https://bitpay.com",
|
||||
"appDescription": "Secure Bitcoin Wallet",
|
||||
"winAppName": "BitPayWallet",
|
||||
"wpPublisherId": "{}",
|
||||
"wpProductId": "{}",
|
||||
"windowsAppId": "",
|
||||
"pushSenderId": "1036948132229",
|
||||
"description": "Secure Bitcoin Wallet",
|
||||
"version": "1.0.1",
|
||||
"androidVersion": "1",
|
||||
"_extraCSS": null,
|
||||
"_enabledExtensions": {
|
||||
"coinbase": true,
|
||||
"glidera": true,
|
||||
"debitcard": true,
|
||||
"amazon": true
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 626 B |
After Width: | Height: | Size: 921 B |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="116.6 16.8 86.8 30.5"><path d="M203.4 24h-4.5l-2.6 11-.4 1.5c-.3.1-.5.1-.8.2-.5.1-.9.1-1.4.1-.6 0-1-.1-1.4-.3-.3-.2-.6-.4-.7-.7-.1-.3-.2-.7-.2-1.1 0-.4.1-.9.2-1.3l1.4-5.7.9-3.8h-4.6l-2.1 8.8c-.3 1.1-.4 2.1-.4 3 0 1 .1 1.8.4 2.5.3.7.9 1.3 1.7 1.7.8.4 1.9.6 3.3.6 1 0 1.9-.1 2.6-.3h.1c-.2.9-.6 1.6-1.3 2.2-.7.6-1.6.9-2.9.9-.5 0-1.1 0-1.5-.1l-.9 3.7c.6.1 1.3.1 2 .1 1.4 0 2.6-.2 3.6-.5s1.9-.8 2.7-1.4c.7-.6 1.4-1.4 1.9-2.4s.9-2.1 1.2-3.4l3.1-13.1.6-2.2zm-18.9 9.4c-.3 1.1-.4 2.3-.3 3.5.1 1.2.6 2.9 1 3.8h-4.4c-.5-.9-.5-1.3-.6-1.6-.6.5-1.2.8-1.9 1.1-.7.3-1.4.5-2.3.5-1 0-1.9-.2-2.6-.5-.7-.3-1.3-.8-1.8-1.4-.5-.6-.8-1.3-1-2.1-.2-.8-.3-1.6-.3-2.6 0-1.4.3-2.7.7-3.9.5-1.2 1.2-2.3 2.1-3.2.9-.9 3-3 6.5-3h7l-2.1 9.4zm-3.2-5.6c-2.1 0-2.5 0-3.4.4-.6.3-1.1.8-1.6 1.4-.4.5-.8 1.2-1.1 1.9-.3.7-.4 1.5-.4 2.3 0 1 .2 1.7.5 2.3s.9.8 1.8.8c.5 0 .9-.1 1.3-.3.4-.2.8-.5 1.2-.9 0-.5.1-1 .2-1.6s.2-1.1.3-1.5l1.2-4.8m-12.1 2.8c0 1.5-.3 2.8-.7 4.1-.5 1.2-1.2 2.3-2 3.2-.9.9-1.9 1.6-3.1 2.1-1.2.5-2.5.8-3.9.8-.7 0-1.4-.1-2.1-.2l-1.4 5.5h-4.5l5.2-22h6c1.1 0 2.1.2 2.9.5.8.3 1.5.8 2 1.4.5.6.9 1.3 1.2 2.1.3.7.4 1.6.4 2.5zm-11.1 6.2c.3.1.8.1 1.3.1.8 0 1.5-.1 2.2-.4.6-.3 1.2-.7 1.7-1.2s.8-1.2 1.1-1.9c.3-.7.4-1.6.4-2.5 0-.9-.2-1.6-.6-2.2-.4-.6-1.1-.9-2-.9h-1.8l-2.3 9zm-9.4 0c-.6 0-1-.1-1.4-.3-.3-.2-.6-.4-.7-.7-.1-.3-.2-.7-.2-1.1s.1-.9.2-1.3l1.4-5.7h5.1l.9-3.8h-5.2l1.2-4.8-4.8.8-3 12.9c-.3 1.1-.4 2.1-.4 3 0 1 .1 1.8.4 2.5.3.7.9 1.3 1.7 1.7.8.4 1.9.6 3.3.6 1 0 1.9-.1 2.6-.3.1 0 .2 0 .3-.1l.9-3.9c-.3.1-.6.2-.9.2-.5.3-.9.3-1.4.3zM137.2 24l-4 16.7h4.5l4-16.7zm4.9-2l.7-2.9h-4.5l-.7 2.9zm-14.9 2c1 0 1.8.2 2.5.5s1.3.8 1.8 1.4c.5.6.8 1.3 1 2.1s.3 1.6.3 2.5c0 1.4-.3 2.7-.8 4-.5 1.2-1.2 2.3-2.1 3.3s-1.9 1.6-3.2 2.2c-1.2.5-2.5.8-3.9.8h-1c-.5 0-1 0-1.6-.1-.6-.1-1.2-.2-1.9-.4s-1.3-.4-1.9-.7l5.2-22 4.7-.7-1.9 7.8c.4-.2.8-.3 1.2-.4.7-.3 1.1-.3 1.6-.3zm-4 13c.7 0 1.4-.2 2-.5.6-.3 1.2-.8 1.6-1.4.5-.6.8-1.2 1.1-1.9.3-.7.4-1.5.4-2.3 0-1-.2-1.7-.5-2.3-.3-.5-1-.8-1.9-.8-.3 0-.6 0-1 .1-.5.1-.8.3-1.2.6l-2 8.3c.6.1.8.1.9.1.2.1.4.1.6.1z" fill="#FFF"/></svg>
|
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 274 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="252.5 17 185 64"><path d="M437.6 32.1H428l-5.6 23.4-.8 3.1c-.6.2-1 .2-1.7.4-1 .2-1.9.2-2.9.2-1.3 0-2.1-.2-2.9-.6-.6-.4-1.3-.8-1.5-1.5-.2-.6-.4-1.5-.4-2.3s.2-1.9.4-2.7l2.9-12.2 1.9-8.1h-9.8l-4.5 18.7c-.6 2.3-.8 4.5-.8 6.4 0 2.1.2 3.8.8 5.3.6 1.5 1.9 2.7 3.6 3.6 1.7.8 4.1 1.3 7 1.3 2.1 0 4.1-.2 5.6-.6h.2c-.4 1.9-1.3 3.4-2.7 4.7-1.5 1.3-3.4 1.9-6.2 1.9-1 0-2.3 0-3.1-.2l-2 7.9c1.3.2 2.7.2 4.3.2 2.9 0 5.6-.4 7.7-1 2.1-.6 4.1-1.7 5.8-2.9 1.5-1.3 2.9-2.9 4.1-5.1 1-2.1 1.9-4.5 2.5-7.2l6.6-27.8 1.1-4.9zM397.4 52c-.6 2.3-.8 4.9-.6 7.4.2 2.5 1.3 6.2 2.1 8.1h-9.3c-1-1.9-1-2.7-1.3-3.4-1.3 1-2.5 1.7-4.1 2.3-1.5.6-2.9 1-4.9 1-2.1 0-4.1-.4-5.6-1s-2.7-1.7-3.8-2.9c-1-1.3-1.7-2.7-2.1-4.5s-.6-3.4-.6-5.6c0-2.9.6-5.8 1.5-8.3 1-2.5 2.5-4.9 4.5-6.8 1.9-1.9 6.4-6.4 13.8-6.4h14.9L397.4 52zm-6.8-11.8c-4.5 0-5.3 0-7.2.8-1.3.6-2.3 1.7-3.4 2.9-.8 1-1.7 2.5-2.3 4.1-.6 1.5-.8 3.1-.8 4.9 0 2.1.4 3.6 1 4.9.6 1.2 1.9 1.7 3.8 1.7 1 0 1.9-.2 2.7-.6.8-.4 1.7-1 2.5-1.9 0-1 .2-2.1.4-3.4.2-1.3.4-2.3.6-3.1l2.7-10.3m-25.8 6c0 3.1-.6 6-1.5 8.7-1 2.5-2.5 4.9-4.3 6.8-1.9 1.9-4.1 3.4-6.6 4.5s-5.3 1.7-8.3 1.7c-1.5 0-2.9-.2-4.5-.4l-2.9 11.6h-9.5l11-46.8H351c2.3 0 4.5.4 6.2 1s3.1 1.7 4.3 2.9c1 1.3 1.9 2.7 2.5 4.5.6 1.6.8 3.5.8 5.5zm-23.5 13.1c.6.2 1.7.2 2.7.2 1.7 0 3.1-.2 4.7-.8 1.3-.6 2.5-1.5 3.6-2.5 1-1 1.7-2.5 2.3-4.1.6-1.5.8-3.4.8-5.3s-.4-3.4-1.3-4.7c-.8-1.3-2.3-1.9-4.3-1.9H346l-4.7 19.1zm-20 0c-1.3 0-2.1-.2-2.9-.6-.6-.4-1.3-.8-1.5-1.5-.2-.6-.4-1.5-.4-2.3 0-.8.2-1.9.4-2.7l2.9-12.2h10.8l1.9-8.1h-11l2.5-10.2-10.2 1.7-6.4 27.4c-.6 2.3-.8 4.5-.8 6.4 0 2.1.2 3.8.8 5.3.6 1.5 1.9 2.7 3.6 3.6 1.7.9 4.1 1.3 7 1.3 2.1 0 4.1-.2 5.6-.6.2 0 .4 0 .6-.2l1.9-8.3c-.6.2-1.3.4-1.9.4-1 .6-1.9.6-2.9.6zm-24.4-27.2l-8.5 35.5h9.5l8.5-35.5zm10.3-4.3l1.5-6.1h-9.5l-1.5 6.1zm-31.6 4.3c2.1 0 3.8.4 5.3 1s2.7 1.7 3.8 2.9c1 1.3 1.7 2.7 2.1 4.5s.6 3.4.6 5.3c0 2.9-.6 5.8-1.7 8.5-1 2.5-2.5 4.9-4.5 7-1.9 2.1-4.1 3.4-6.8 4.7-2.5 1-5.3 1.7-8.3 1.7H264c-1.1 0-2.1 0-3.4-.2-1.3-.2-2.5-.4-4.1-.8-1.5-.4-2.7-.8-4.1-1.5l11.1-46.6 10-1.5-4.1 16.6c.8-.4 1.7-.6 2.5-.8 1.8-.8 2.6-.8 3.7-.8zm-8.5 27.6c1.5 0 2.9-.4 4.3-1s2.5-1.7 3.4-2.9c1-1.3 1.7-2.5 2.3-4.1s.8-3.1.8-4.9c0-2.1-.4-3.6-1-4.9-.6-1-2.1-1.7-4.1-1.7-.6 0-1.3 0-2.1.2-1 .2-1.7.6-2.5 1.3L264 59.4c1.3.2 1.7.2 1.9.2.3.1.8.1 1.2.1z" fill="#002855"/></svg>
|
After Width: | Height: | Size: 2.2 KiB |
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
SHOULD_SIGN=$1
|
||||
if [ "$SHOULD_SIGN" ]
|
||||
if [ "$SHOULD_SIGN" ]
|
||||
then
|
||||
echo "Will sign the APP"
|
||||
fi
|
||||
|
@ -16,14 +16,19 @@ if [ -d "$dir" ]; then
|
|||
fi
|
||||
|
||||
# set up your app name, architecture, and background image file name
|
||||
APP_NAME="Copay"
|
||||
DMG_BACKGROUND_IMG="Background.png"
|
||||
APP_NAME="*USERVISIBLENAME*"
|
||||
rm dmg-background.tiff
|
||||
ln -s ../resources/*PACKAGENAME*/mac/dmg-background.tiff dmg-background.tiff
|
||||
rm volume-icon.icns
|
||||
ln -s ../resources/*PACKAGENAME*/mac/volume-icon.icns volume-icon.icns
|
||||
DMG_VOLUME_ICON="volume-icon.icns"
|
||||
DMG_BACKGROUND_IMG="dmg-background.tiff"
|
||||
|
||||
PATH_NAME="Copay/osx64/"
|
||||
PATH_NAME="${APP_NAME}/osx64/"
|
||||
# you should not need to change these
|
||||
APP_EXE="${PATH_NAME}${APP_NAME}.app/Contents/MacOS/nwjs"
|
||||
|
||||
VOL_NAME="${APP_NAME}-osx"
|
||||
VOL_NAME="${APP_NAME}"
|
||||
DMG_TMP="${VOL_NAME}-temp.dmg"
|
||||
DMG_FINAL="${VOL_NAME}.dmg"
|
||||
STAGING_DIR="tmp"
|
||||
|
@ -35,11 +40,11 @@ _BACKGROUND_IMAGE_DPI_W=`sips -g dpiWidth ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9
|
|||
if [ $(echo " $_BACKGROUND_IMAGE_DPI_H != 72.0 " | bc) -eq 1 -o $(echo " $_BACKGROUND_IMAGE_DPI_W != 72.0 " | bc) -eq 1 ]; then
|
||||
echo "WARNING: The background image's DPI is not 72. This will result in distorted backgrounds on Mac OS X 10.7+."
|
||||
echo " I will convert it to 72 DPI for you."
|
||||
|
||||
|
||||
_DMG_BACKGROUND_TMP="${DMG_BACKGROUND_IMG%.*}"_dpifix."${DMG_BACKGROUND_IMG##*.}"
|
||||
|
||||
sips -s dpiWidth 72 -s dpiHeight 72 ${DMG_BACKGROUND_IMG} --out ${_DMG_BACKGROUND_TMP}
|
||||
|
||||
|
||||
DMG_BACKGROUND_IMG="${_DMG_BACKGROUND_TMP}"
|
||||
fi
|
||||
|
||||
|
@ -66,11 +71,11 @@ if [ $? -ne 0 ]; then
|
|||
# Sign Code (MATIAS)
|
||||
if [ $SHOULD_SIGN ]
|
||||
then
|
||||
echo "Signing Copay DMG"
|
||||
echo "Signing ${APP_NAME} DMG"
|
||||
|
||||
export IDENTITY="3rd Party Mac Developer Application: BitPay, Inc. (884JRH5R93)"
|
||||
|
||||
# not need for 'out of app store' distribution (?)
|
||||
# not need for 'out of app store' distribution (?)
|
||||
# export PARENT_PLIST=parent.plist
|
||||
# export CHILD_PLIST=child.plist
|
||||
export APP_PATH=${STAGING_DIR}/${APP_NAME}.app
|
||||
|
@ -95,17 +100,43 @@ DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \
|
|||
sleep 2
|
||||
|
||||
# add a link to the Applications dir
|
||||
echo "Add link to /Applications"
|
||||
echo "Adding link to /Applications"
|
||||
pushd /Volumes/"${VOL_NAME}"
|
||||
ln -s /Applications
|
||||
# We name the symlink with a *non-breaking space* to avoid displaying extra text
|
||||
ln -s /Applications " " # <- not your ordinary space
|
||||
popd
|
||||
|
||||
# "bless" the folder to open it in Finder automatically when the volume is mounted
|
||||
echo "Blessing disk image"
|
||||
bless --folder /Volumes/"${VOL_NAME}" --openfolder /Volumes/"${VOL_NAME}"
|
||||
|
||||
# add a background image
|
||||
echo "Adding background to disk image"
|
||||
mkdir /Volumes/"${VOL_NAME}"/.background
|
||||
cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/
|
||||
|
||||
echo "Adding volume icon to disk image"
|
||||
# use fileicon node_module
|
||||
cp "${DMG_VOLUME_ICON}" /Volumes/"${VOL_NAME}"/.VolumeIcon.icns
|
||||
`npm bin`/fileicon set /Volumes/"${VOL_NAME}"/ /Volumes/"${VOL_NAME}"/.VolumeIcon.icns
|
||||
|
||||
# tell the Finder to resize the window, set the background,
|
||||
# change the icon size, place the icons in the right position, etc.
|
||||
echo "Designing the unboxing experience..."
|
||||
WINDOW_X=400
|
||||
WINDOW_Y=100
|
||||
WINDOW_WIDTH=500
|
||||
WINDOW_HEIGHT=375
|
||||
ICON_SIZE=100
|
||||
ICON_LR_PADDING=140
|
||||
ICON_Y=185
|
||||
|
||||
WINDOW_RIGHT=$(expr $WINDOW_X + $WINDOW_WIDTH)
|
||||
WINDOW_BOTTOM=$(expr $WINDOW_Y + $WINDOW_HEIGHT)
|
||||
RIGHT_ICON_PADDING_RIGHT=$(expr $WINDOW_WIDTH - $ICON_LR_PADDING)
|
||||
HIDE_X=100 # no need to exceed WINDOW_WIDTH – will only create another scrollbar
|
||||
HIDE_Y=$(expr $WINDOW_HEIGHT + $ICON_SIZE)
|
||||
|
||||
echo '
|
||||
tell application "Finder"
|
||||
tell disk "'${VOL_NAME}'"
|
||||
|
@ -113,13 +144,17 @@ echo '
|
|||
set current view of container window to icon view
|
||||
set toolbar visible of container window to false
|
||||
set statusbar visible of container window to false
|
||||
set the bounds of container window to {400, 100, 920, 440}
|
||||
set the bounds of container window to {'${WINDOW_X}', '${WINDOW_Y}', '${WINDOW_RIGHT}', '${WINDOW_BOTTOM}'}
|
||||
set viewOptions to the icon view options of container window
|
||||
set arrangement of viewOptions to not arranged
|
||||
set icon size of viewOptions to 72
|
||||
set icon size of viewOptions to '${ICON_SIZE}'
|
||||
set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'"
|
||||
set position of item "'${APP_NAME}'.app" of container window to {160, 205}
|
||||
set position of item "Applications" of container window to {360, 205}
|
||||
set position of item "'${APP_NAME}'.app" of container window to {'${ICON_LR_PADDING}', '${ICON_Y}'}
|
||||
set position of item " " of container window to {'${RIGHT_ICON_PADDING_RIGHT}', '${ICON_Y}'}
|
||||
set position of item ".background" of container window to {'${HIDE_X}', '${HIDE_Y}'}
|
||||
set position of item ".VolumeIcon.icns" of container window to {'${HIDE_X}', '${HIDE_Y}'}
|
||||
set position of item ".fseventsd" of container window to {'${HIDE_X}', '${HIDE_Y}'}
|
||||
set position of item "Icon?" of container window to {'${HIDE_X}', '${HIDE_Y}'}
|
||||
close
|
||||
open
|
||||
update without registering applications
|
|
@ -0,0 +1,147 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<widget id="com.bitpay.*BUNDLENAME*"
|
||||
version="*VERSION*"
|
||||
android-versionCode="*ANDROIDVERSION*"
|
||||
ios-CFBundleVersion="*VERSION*">
|
||||
<name>*USERVISIBLENAME*</name>
|
||||
<description>
|
||||
*PURPOSELINE*
|
||||
</description>
|
||||
<author email="support@bitpay.com" href="*URL*">
|
||||
BitPay Inc.
|
||||
</author>
|
||||
<content src="index.html" />
|
||||
<access origin="*" />
|
||||
<preference name="AndroidPersistentFileLocation" value="Internal" />
|
||||
<preference name="iosPersistentFileLocation" value="Library" />
|
||||
<preference name="DisallowOverscroll" value="true"/>
|
||||
<preference name="HideKeyboardFormAccessoryBar" value="true"/>
|
||||
<!-- #355 -->
|
||||
<!-- <preference name="KeyboardDisplayRequiresUserAction" value="false" /> -->
|
||||
<preference name="StatusBarBackgroundColor" value="#1e3186" />
|
||||
<preference name="BackupWebStorage" value="none"/>
|
||||
<preference name="windows-target-version" value="8.1"/>
|
||||
<preference name="Orientation" value="default" />
|
||||
<preference name="cordova-custom-config-stoponerror" value="true" />
|
||||
|
||||
<preference name="StatusBarOverlaysWebView" value="true" />
|
||||
<preference name="StatusBarStyle" value="lightcontent" />
|
||||
|
||||
<preference name="ShowSplashScreenSpinner" value="false" />
|
||||
<preference name="AutoHideSplashScreen" value="false" />
|
||||
<preference name="FadeSplashScreen" value="true" />
|
||||
<preference name="FadeSplashScreenDuration" value="100" />
|
||||
<preference name="SplashMaintainAspectRatio" value="true" />
|
||||
|
||||
<!-- Plugins -->
|
||||
<plugin name="cordova-plugin-device" spec="~1.1.3"/>
|
||||
<plugin name="cordova-plugin-globalization" spec="~1.0.4" />
|
||||
<plugin name="cordova-plugin-splashscreen" spec="~4.0.0" />
|
||||
<plugin name="cordova-plugin-statusbar" spec="~2.2.0" />
|
||||
<plugin name="cordova-plugin-inappbrowser" spec="~1.5.0" />
|
||||
<plugin name="cordova-plugin-x-toast" spec="~2.5.2" />
|
||||
<plugin name="com.verso.cordova.clipboard" spec="https://github.com/VersoSolutions/CordovaClipboard" />
|
||||
<plugin name="cordova-plugin-x-socialsharing" spec="https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin.git" />
|
||||
<plugin name="cordova-plugin-spinner-dialog" spec="~1.3.1" />
|
||||
<plugin name="cordova-plugin-dialogs" spec="~1.3.0" />
|
||||
<plugin name="cordova-plugin-network-information" spec="~1.3.0" />
|
||||
<plugin name="cordova-plugin-console" spec="~1.0.4" />
|
||||
<plugin name="cordova-plugin-uniquedeviceid" spec="~1.3.2" />
|
||||
<plugin name="cordova-plugin-file" spec="~4.3.0" />
|
||||
<plugin name="cordova-plugin-touch-id" spec="~3.2.0" />
|
||||
<plugin name="cordova-plugin-transport-security" spec="~0.1.2" />
|
||||
<plugin name="cordova-ios-requires-fullscreen" spec="~0.0.2" />
|
||||
<plugin name="cordova-plugin-android-fingerprint-auth" spec="~0.2.0" />
|
||||
<plugin name="cordova-plugin-screen-orientation" spec="~1.4.2" />
|
||||
<plugin name="ionic-plugin-keyboard" spec="~2.2.1" />
|
||||
<plugin name="cordova-plugin-whitelist" spec="~1.3.0" />
|
||||
<plugin name="cordova-plugin-wkwebview-engine" spec="https://github.com/driftyco/cordova-plugin-wkwebview-engine.git" />
|
||||
<plugin name="cordova-plugin-qrscanner" spec="~2.4.0" />
|
||||
<plugin name="cordova-plugin-customurlscheme" spec="https://github.com/cmgustavo/Custom-URL-scheme.git">
|
||||
<variable name="URL_SCHEME" value="bitcoin" />
|
||||
<variable name="SECOND_URL_SCHEME" value="*APPURI*" />
|
||||
</plugin>
|
||||
<plugin name="phonegap-plugin-push" spec="~1.8.2">
|
||||
<variable name="SENDER_ID" value="*PUSHSENDERID*"/>
|
||||
</plugin>
|
||||
<plugin name="cordova-custom-config" spec="~3.0.5" />
|
||||
|
||||
<!-- Supported Platforms -->
|
||||
<engine name="ios" spec="~4.2.1" />
|
||||
<engine name="android" spec="~5.2.2" />
|
||||
<!-- <engine name="windows" spec="~4.4.2" /> -->
|
||||
|
||||
<!-- Platform Specific Settings -->
|
||||
<platform name="ios">
|
||||
<config-file platform="ios" target="*-Info.plist" parent="UIStatusBarHidden"><true/></config-file>
|
||||
<config-file platform="ios" target="*-Info.plist" parent="UIViewControllerBasedStatusBarAppearance"><false/></config-file>
|
||||
<config-file target="*-Info.plist" parent="ITSAppUsesNonExemptEncryption"><false/></config-file>
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60@3x.png" width="180" height="180" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60.png" width="60" height="60" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-60@2x.png" width="120" height="120" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-76.png" width="76" height="76" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-76@2x.png" width="152" height="152" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-83.5@2x.png" width="167" height="167" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-40.png" width="40" height="40" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-40@2x.png" width="80" height="80" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon.png" width="57" height="57" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon@2x.png" width="114" height="114" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-72.png" width="72" height="72" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-72@2x.png" width="144" height="144" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-small.png" width="29" height="29" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-small@2x.png" width="58" height="58" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-50.png" width="50" height="50" />
|
||||
<icon src="resources/*PACKAGENAME*/ios/icon/icon-50@2x.png" width="100" height="100" />
|
||||
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default~iphone.png" width="320" height="480"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default@2x~iphone.png" width="640" height="960"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-Portrait~ipad.png" width="768" height="1024"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-Landscape~ipad.png" width="1024" height="768"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-Landscape@2x~ipad.png" width="2048" height="1536"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-568h@2x~iphone.png" width="640" height="1136"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-667h.png" width="750" height="1334"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-736h.png" width="1242" height="2208"/>
|
||||
<splash src="resources/*PACKAGENAME*/ios/splash/Default-Landscape-736h.png" width="2208" height="1242"/>
|
||||
</platform>
|
||||
|
||||
<platform name="android">
|
||||
<preference name="android-manifest/application/@android:allowBackup" value="false" />
|
||||
|
||||
<icon src="resources/*PACKAGENAME*/android/icon/drawable-ldpi-icon.png" density="ldpi" />
|
||||
<icon src="resources/*PACKAGENAME*/android/icon/drawable-mdpi-icon.png" density="mdpi" />
|
||||
<icon src="resources/*PACKAGENAME*/android/icon/drawable-hdpi-icon.png" density="hdpi" />
|
||||
<icon src="resources/*PACKAGENAME*/android/icon/drawable-xhdpi-icon.png" density="xhdpi" />
|
||||
<icon src="resources/*PACKAGENAME*/android/icon/drawable-xxhdpi-icon.png" density="xxhdpi" />
|
||||
<icon src="resources/*PACKAGENAME*/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi" />
|
||||
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-land-hdpi-screen.png" density="land-hdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-land-ldpi-screen.png" density="land-ldpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-land-mdpi-screen.png" density="land-mdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-land-xhdpi-screen.png" density="land-xhdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-land-xxhdpi-screen.png" density="land-xxhdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-land-xxxhdpi-screen.png" density="land-xxxhdpi"/>
|
||||
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-port-hdpi-screen.png" density="port-hdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-port-ldpi-screen.png" density="port-ldpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-port-mdpi-screen.png" density="port-mdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-port-xhdpi-screen.png" density="port-xhdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-port-xxhdpi-screen.png" density="port-xxhdpi"/>
|
||||
<splash src="resources/*PACKAGENAME*/android/splash/drawable-port-xxxhdpi-screen.png" density="port-xxxhdpi"/>
|
||||
</platform>
|
||||
|
||||
<platform name="windows">
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/StoreLogo.png" target="StoreLogo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Square30x30Logo.png" target="Square30x30Logo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Square44x44Logo.png" target="Square44x44Logo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Square70x70Logo.png" target="Square70x70Logo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Square71x71Logo.png" target="Square71x71Logo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Square150x150Logo.png" target="Square150x150Logo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Square310x310Logo.png" target="Square310x310Logo" />
|
||||
<icon src="resources/*PACKAGENAME*/windows/icon/Wide310x150Logo.png" target="Wide310x150Logo" />
|
||||
|
||||
<splash src="resources/*PACKAGENAME*/windows/splash/SplashScreen.scale-100.png" width="620" height="300"/>
|
||||
<splash src="resources/*PACKAGENAME*/windows/splash/SplashScreenPhone.scale-240.png" width="1152" height="1920"/>
|
||||
</platform>
|
||||
|
||||
</widget>
|
|
@ -1,75 +0,0 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<widget id="com.bitpay.*NAMENOSPACE*"
|
||||
version="*VERSION*"
|
||||
android-versionCode="*ANDROIDVERSION*"
|
||||
ios-CFBundleVersion="*VERSION*">
|
||||
<name>*NAMECASENOSPACE*</name>
|
||||
<description>
|
||||
*APPDESCRIPTION*
|
||||
</description>
|
||||
<author email="support@bitpay.com" href="*URL*">
|
||||
BitPay Inc.
|
||||
</author>
|
||||
<content src="index.html" />
|
||||
<access origin="*" />
|
||||
<preference name="AndroidPersistentFileLocation" value="Internal" />
|
||||
<preference name="iosPersistentFileLocation" value="Library" />
|
||||
<preference name="DisallowOverscroll" value="true"/>
|
||||
<preference name="HideKeyboardFormAccessoryBar" value="true"/>
|
||||
<preference name="SplashScreen" value="copayscreen" />
|
||||
<preference name="ShowSplashScreenSpinner" value="false" />
|
||||
<preference name="AutoHideSplashScreen" value="false" />
|
||||
<preference name="FadeSplashScreen" value="true" />
|
||||
<preference name="FadeSplashScreenDuration" value="1" />
|
||||
<preference name="BackgroundColor" value="#2C3E50" />
|
||||
<preference name="StatusBarOverlaysWebView" value="false" />
|
||||
<preference name="StatusBarBackgroundColor" value="#2C3E50" />
|
||||
<preference name="StatusBarStyle" value="lightcontent" />
|
||||
<preference name="BackupWebStorage" value="none"/>
|
||||
<preference name="windows-target-version" value="8.1"/>
|
||||
<preference name="Orientation" value="default" />
|
||||
|
||||
<platform name="android">
|
||||
<hook type="after_run" src="scripts/afterRun.js" />
|
||||
</platform>
|
||||
|
||||
<platform name="ios">
|
||||
<!-- iOS 8.0+ -->
|
||||
<!-- iPad Pro -->
|
||||
<icon src="../ios/icons/icon-83.5@2x.png" width="167" height="167" />
|
||||
<!-- iPhone 6 Plus -->
|
||||
<icon src="../ios/icons/icon-60@3x.png" width="180" height="180" />
|
||||
<!-- iOS 7.0+ -->
|
||||
<!-- iPhone / iPod Touch -->
|
||||
<icon src="../ios/icons/icon-60@2x.png" width="120" height="120" />
|
||||
<!-- iPad -->
|
||||
<icon src="../ios/icons/icon-76.png" width="76" height="76" />
|
||||
<icon src="../ios/icons/icon-76@2x.png" width="152" height="152" />
|
||||
<!-- iOS 6.1 -->
|
||||
<!-- Spotlight Icon -->
|
||||
<icon src="../ios/icons/icon-40.png" width="40" height="40" />
|
||||
<icon src="../ios/icons/icon-40@2x.png" width="80" height="80" />
|
||||
<!-- iPhone / iPod Touch -->
|
||||
<icon src="../ios/icons/icon.png" width="57" height="57" />
|
||||
<icon src="../ios/icons/icon@2x.png" width="114" height="114" />
|
||||
<!-- iPad -->
|
||||
<icon src="../ios/icons/icon-72.png" width="72" height="72" />
|
||||
<icon src="../ios/icons/icon-72@2x.png" width="144" height="144" />
|
||||
<!-- iPhone Spotlight and Settings Icon -->
|
||||
<icon src="../ios/icons/icon-small.png" width="29" height="29" />
|
||||
<icon src="../ios/icons/icon-small@2x.png" width="58" height="58" />
|
||||
<icon src="../ios/icons/icon-small@3x.png" width="87" height="87" />
|
||||
<!-- iPad Spotlight and Settings Icon -->
|
||||
<icon src="../ios/icons/icon-50.png" width="50" height="50" />
|
||||
<icon src="../ios/icons/icon-50@2x.png" width="100" height="100" />
|
||||
|
||||
<!-- Splash -->
|
||||
<splash src="../ios/splash/Default~iphone.png" width="320" height="480"/>
|
||||
<splash src="../ios/splash/Default@2x~iphone.png" width="640" height="960"/>
|
||||
<splash src="../ios/splash/Default-Portrait~ipad.png" width="768" height="1024"/>
|
||||
<splash src="../ios/splash/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
|
||||
<splash src="../ios/splash/Default-568h@2x~iphone.png" width="640" height="1136"/>
|
||||
<splash src="../ios/splash/Default-667h.png" width="750" height="1334"/>
|
||||
<splash src="../ios/splash/Default-736h.png" width="1242" height="2208"/>
|
||||
</platform>
|
||||
</widget>
|
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 1.3 KiB |
|
@ -1,17 +1,25 @@
|
|||
{
|
||||
"//":"PLEASE! Do not edit this file directly",
|
||||
"//":" Modify it at app-template/",
|
||||
|
||||
|
||||
{
|
||||
"packageName": "copay",
|
||||
"packageDescription": "Copay Bitcoin Wallet",
|
||||
"userVisibleName": "Copay",
|
||||
"purposeLine": "Copay Bitcoin Wallet",
|
||||
"bundleName": "copay",
|
||||
"appUri": "copay",
|
||||
"name": "copay",
|
||||
"nameNoSpace": "copay",
|
||||
"nameCase": "Copay",
|
||||
"nameCaseNoSpace": "Copay",
|
||||
"gitHubRepoName": "copay",
|
||||
"gitHubRepoUrl": "git://github.com/bitpay/copay.git",
|
||||
"gitHubRepoBugs": "https://github.com/bitpay/copay/issues",
|
||||
"disclaimerUrl": "https://copay.io/disclaimer",
|
||||
"url": "https://copay.io",
|
||||
"appDescription": "Copay Bitcoin Wallet",
|
||||
"winAppName": "CopayWallet",
|
||||
"wpPublisherId": "{31cdd08b-457c-413d-b440-f6665eec847d}",
|
||||
"wpProductId": "{5381aa50-9069-11e4-84cc-293caf9cbdc8}",
|
||||
"windowsAppId": "804636ee-b017-4cad-8719-e58ac97ffa5c",
|
||||
"pushSenderId": "1036948132229",
|
||||
"description": "A Secure Bitcoin Wallet",
|
||||
"version": "2.5.0",
|
||||
"androidVersion": "115",
|
||||
|
@ -20,5 +28,5 @@
|
|||
"coinbase": true,
|
||||
"glidera": true,
|
||||
"amazon": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 537 B |
After Width: | Height: | Size: 808 B |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 270 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 1011 B |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 177 KiB |
Before Width: | Height: | Size: 225 KiB |
Before Width: | Height: | Size: 515 KiB |
Before Width: | Height: | Size: 561 KiB |
Before Width: | Height: | Size: 177 KiB |
Before Width: | Height: | Size: 153 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 427 KiB |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 65 KiB |