296 lines
6.0 KiB
Plaintext
296 lines
6.0 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
if [ "$#" -ne 2 ]; then
|
||
|
echo "USAGE: $0 PACKAGE_NAME DESCRIPTION"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
PROJECT_HOME=~/AndroidStudioProjects
|
||
|
ORG_PATH="$PROJECT_HOME/defaultOrg"
|
||
|
KEY_PROPERTIES_PATH="$PROJECT_HOME/defaultKeyProperties"
|
||
|
|
||
|
packageName="$1"
|
||
|
description="$2"
|
||
|
|
||
|
echo "Package Name: $packageName"
|
||
|
echo "Description: $description"
|
||
|
|
||
|
|
||
|
if [[ -f "$ORG_PATH" ]]; then
|
||
|
org=`cat "$PROJECT_HOME/defaultOrg"`
|
||
|
else
|
||
|
echo "Could not find file with default org in $ORG_PATH"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [[ -f "$KEY_PROPERTIES_PATH" ]]; then
|
||
|
keyProperties=`cat "$PROJECT_HOME/defaultKeyProperties"`
|
||
|
else
|
||
|
echo "Could not find file with default key properties in $KEY_PROPERTIES_PATH"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
flutter create --org "$org" "$packageName" || exit 1
|
||
|
|
||
|
cd "$packageName"
|
||
|
|
||
|
#########################
|
||
|
#### create .gitignore ##
|
||
|
#########################
|
||
|
|
||
|
cat > .gitignore <<EOF
|
||
|
# Miscellaneous
|
||
|
*.class
|
||
|
*.log
|
||
|
*.pyc
|
||
|
*.swp
|
||
|
.DS_Store
|
||
|
.atom/
|
||
|
.buildlog/
|
||
|
.history
|
||
|
.svn/
|
||
|
|
||
|
# IntelliJ related
|
||
|
*.iml
|
||
|
*.ipr
|
||
|
*.iws
|
||
|
.idea/
|
||
|
|
||
|
# The .vscode folder contains launch configuration and tasks you configure in
|
||
|
# VS Code which you may wish to be included in version control, so this line
|
||
|
# is commented out by default.
|
||
|
#.vscode/
|
||
|
|
||
|
# Flutter/Dart/Pub related
|
||
|
**/doc/api/
|
||
|
.dart_tool/
|
||
|
.flutter-plugins
|
||
|
.packages
|
||
|
.pub-cache/
|
||
|
.pub/
|
||
|
/build/
|
||
|
|
||
|
# Android related
|
||
|
**/android/**/gradle-wrapper.jar
|
||
|
**/android/.gradle
|
||
|
**/android/captures/
|
||
|
**/android/gradlew
|
||
|
**/android/gradlew.bat
|
||
|
**/android/local.properties
|
||
|
**/android/**/GeneratedPluginRegistrant.java
|
||
|
**/android/key.properties
|
||
|
|
||
|
# iOS/XCode related
|
||
|
**/ios/**/*.mode1v3
|
||
|
**/ios/**/*.mode2v3
|
||
|
**/ios/**/*.moved-aside
|
||
|
**/ios/**/*.pbxuser
|
||
|
**/ios/**/*.perspectivev3
|
||
|
**/ios/**/*sync/
|
||
|
**/ios/**/.sconsign.dblite
|
||
|
**/ios/**/.tags*
|
||
|
**/ios/**/.vagrant/
|
||
|
**/ios/**/DerivedData/
|
||
|
**/ios/**/Icon?
|
||
|
**/ios/**/Pods/
|
||
|
**/ios/**/.symlinks/
|
||
|
**/ios/**/profile
|
||
|
**/ios/**/xcuserdata
|
||
|
**/ios/.generated/
|
||
|
**/ios/Flutter/App.framework
|
||
|
**/ios/Flutter/Flutter.framework
|
||
|
**/ios/Flutter/Generated.xcconfig
|
||
|
**/ios/Flutter/app.flx
|
||
|
**/ios/Flutter/app.zip
|
||
|
**/ios/Flutter/flutter_assets/
|
||
|
**/ios/Flutter/flutter_export_environment.sh
|
||
|
**/ios/ServiceDefinitions.json
|
||
|
**/ios/Runner/GeneratedPluginRegistrant.*
|
||
|
|
||
|
# Exceptions to above rules.
|
||
|
!**/ios/**/default.mode1v3
|
||
|
!**/ios/**/default.mode2v3
|
||
|
!**/ios/**/default.pbxuser
|
||
|
!**/ios/**/default.perspectivev3
|
||
|
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||
|
EOF
|
||
|
|
||
|
|
||
|
|
||
|
git init
|
||
|
|
||
|
##################################
|
||
|
## generate empty launcher icon ##
|
||
|
##################################
|
||
|
|
||
|
convert -size 2048x2048 xc:white LauncherIcon.png
|
||
|
|
||
|
|
||
|
|
||
|
############################
|
||
|
## overwrite pubspec.yaml ##
|
||
|
############################
|
||
|
|
||
|
cat > pubspec.yaml <<EOF
|
||
|
name: $packageName
|
||
|
description: $description
|
||
|
|
||
|
version: 1.0.0+1
|
||
|
|
||
|
environment:
|
||
|
sdk: ">=2.2.2 <3.0.0"
|
||
|
|
||
|
dependencies:
|
||
|
flutter:
|
||
|
sdk: flutter
|
||
|
intl: ^0.15.7
|
||
|
shared_preferences: ^0.5.4+8
|
||
|
cupertino_icons: ^0.1.2
|
||
|
|
||
|
dev_dependencies:
|
||
|
flutter_test:
|
||
|
sdk: flutter
|
||
|
flutter_launcher_icons: "^0.7.3"
|
||
|
|
||
|
flutter_icons:
|
||
|
image_path: "LauncherIcon.png"
|
||
|
android: true
|
||
|
ios: true
|
||
|
|
||
|
flutter:
|
||
|
uses-material-design: true
|
||
|
|
||
|
EOF
|
||
|
|
||
|
|
||
|
|
||
|
#########################################
|
||
|
## generate key.properties for signing ##
|
||
|
#########################################
|
||
|
|
||
|
cat > android/key.properties <<EOF
|
||
|
$keyProperties
|
||
|
EOF
|
||
|
|
||
|
|
||
|
############################
|
||
|
## overwrite build.gradle ##
|
||
|
############################
|
||
|
|
||
|
cat > android/app/build.gradle <<EOF
|
||
|
def localProperties = new Properties()
|
||
|
def localPropertiesFile = rootProject.file('local.properties')
|
||
|
if (localPropertiesFile.exists()) {
|
||
|
localPropertiesFile.withReader('UTF-8') { reader ->
|
||
|
localProperties.load(reader)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||
|
if (flutterRoot == null) {
|
||
|
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||
|
}
|
||
|
|
||
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||
|
if (flutterVersionCode == null) {
|
||
|
flutterVersionCode = '1'
|
||
|
}
|
||
|
|
||
|
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||
|
if (flutterVersionName == null) {
|
||
|
flutterVersionName = '1.0'
|
||
|
}
|
||
|
|
||
|
apply plugin: 'com.android.application'
|
||
|
apply from: "\$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||
|
|
||
|
def keystoreProperties = new Properties()
|
||
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||
|
if (keystorePropertiesFile.exists()) {
|
||
|
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||
|
}
|
||
|
|
||
|
|
||
|
android {
|
||
|
compileSdkVersion 28
|
||
|
|
||
|
lintOptions {
|
||
|
disable 'InvalidPackage'
|
||
|
}
|
||
|
|
||
|
defaultConfig {
|
||
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||
|
applicationId "$org.$packageName"
|
||
|
minSdkVersion 16
|
||
|
targetSdkVersion 28
|
||
|
versionCode flutterVersionCode.toInteger()
|
||
|
versionName flutterVersionName
|
||
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||
|
}
|
||
|
|
||
|
signingConfigs {
|
||
|
release {
|
||
|
keyAlias keystoreProperties['keyAlias']
|
||
|
keyPassword keystoreProperties['keyPassword']
|
||
|
storeFile file(keystoreProperties['storeFile'])
|
||
|
storePassword keystoreProperties['storePassword']
|
||
|
}
|
||
|
}
|
||
|
buildTypes {
|
||
|
release {
|
||
|
signingConfig signingConfigs.release
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
flutter {
|
||
|
source '../..'
|
||
|
}
|
||
|
|
||
|
dependencies {
|
||
|
testImplementation 'junit:junit:4.12'
|
||
|
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||
|
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||
|
}
|
||
|
|
||
|
EOF
|
||
|
|
||
|
#####################
|
||
|
## empty README.md ##
|
||
|
#####################
|
||
|
cat > README.md <<EOF
|
||
|
# $packageName
|
||
|
|
||
|
$description
|
||
|
|
||
|
EOF
|
||
|
|
||
|
|
||
|
#####################
|
||
|
## create Makefile ##
|
||
|
#####################
|
||
|
|
||
|
cat > Makefile <<EOF
|
||
|
.PHONY: clean all launcherIcon
|
||
|
|
||
|
all: launcherIcon
|
||
|
flutter pub get
|
||
|
flutter build appbundle
|
||
|
|
||
|
clean:
|
||
|
flutter clean
|
||
|
|
||
|
launcherIcon:
|
||
|
flutter pub get
|
||
|
flutter pub run "flutter_launcher_icons:main"
|
||
|
|
||
|
EOF
|
||
|
|
||
|
|
||
|
################
|
||
|
## test build ##
|
||
|
################
|
||
|
|
||
|
make clean launcherIcon all
|
||
|
make clean
|