diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml new file mode 100644 index 0000000000..e3d221271d --- /dev/null +++ b/.github/workflows/ios.yml @@ -0,0 +1,121 @@ +name: Android and iOS build on MacOS + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: macOS-latest + steps: + - uses: actions/checkout@master + + - name: Set XCode Version + run: sudo xcode-select -s /Applications/Xcode_11.app + + - name: Installing Homebrew + run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" + + - name: Installing Java 8 + run: brew tap adoptopenjdk/openjdk && brew cask install adoptopenjdk/openjdk/adoptopenjdk8 + + - name: Installing Gradle + run: brew install gradle + + - name: Installing Android Studio + run: brew cask install android-sdk + + - name: Setting Variables + run: | + export GRADLE_HOME=/usr/local/opt/gradle + export ANDROID_HOME=/usr/local/share/android-sdk + export PATH=$GRADLE_HOME/bin:$PATH + export PATH=$ANDROID_HOME/tools:$PATH + export PATH=$ANDROID_HOME/platform-tools:$PATH + + - name: Updating SDK Manager + run: sdkmanager --update + + - name: List available packages for Debug + run: sdkmanager --list + + - name: Download Buildtools 28.0.3 + run: (echo y; echo y; echo y;) | sdkmanager "build-tools;28.0.3" + + - name: Download Android 28 + run: (echo y; echo y; echo y;) | sdkmanager "platforms;android-28" + + - name: Download Android Platform Tools + run: (echo y; echo y; echo y;) | sdkmanager "platform-tools" + + - name: Download Support Library Android M2 + run: (echo y; echo y; echo y;) | sdkmanager "extras;android;m2repository" + + - name: Download Support Library Google M2 + run: (echo y; echo y; echo y;) | sdkmanager "extras;google;m2repository" + + - name: Download Support Library Solver for ConstraintLayout 1.0.2 + run: (echo y; echo y; echo y;) | sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" + + - name: Download Support Library ConstraintLayout for Android 1.0.2 + run: (echo y; echo y; echo y;) | sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" + + - name: Download Android SDK Command line tools + run: (echo y; echo y; echo y;) | sdkmanager "cmdline-tools;latest" + + - name: Download Google Services + run: (echo y; echo y; echo y;) | sdkmanager "extras;google;google_play_services" + + - name: Download System Image Default + run: (echo y; echo y; echo y;) | sdkmanager "system-images;android-28;default;x86_64" + + - name: Download System Image Google APIs + run: (echo y; echo y; echo y;) | sdkmanager "system-images;android-28;google_apis;x86_64" + + - name: List current SDK Install + run: sdkmanager --list + + - name: Adding Build tools to Path + run: export PATH=$ANDROID_HOME/build-tools/$(ls -tr $ANDROID_HOME/build-tools/ | tail -1):$PATH + + # This is ugly but it is the only thing that seems to work. + - name: Accepting Android license + run: (echo y; echo y; echo y; echo y; echo y; echo y) | $ANDROID_HOME/tools/bin/sdkmanager --licenses + + - name: Installing CocoaPods + run: gem install cocoapods + + - name: Update Pods + run: pod repo update + working-directory: ./ios + + - name: Yarn Install + run: yarn install + + - name: Pod Install + run: pod install + working-directory: ./ios + + - name: Asset Directory + run: mkdir -p ./android/app/src/main/assets + + - name: Building React Native Bundle Android + run: npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res + + - name: Building React Native Bundle iOS + run: npx react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios + + +# - name: Checking Gradle dependencies +# run: ./gradlew check +# working-directory: ./android + +# - name: Android Build +# run: ./gradlew build +# working-directory: ./android + +# - name: iOS Build +# run: xcodebuild -workspace PrivateKit.xcworkspace -configuration Release -scheme PrivateKit + diff --git a/app/views/Export.js b/app/views/Export.js index 02746b0924..741ad1c7d4 100644 --- a/app/views/Export.js +++ b/app/views/Export.js @@ -10,7 +10,7 @@ import { Text, Image, Dimensions, - TouchableOpacity + TouchableOpacity,BackHandler } from 'react-native'; import colors from "../constants/colors"; @@ -68,6 +68,19 @@ class ExportScreen extends Component { this.props.navigation.navigate('LocationTrackingScreen', {}) } + handleBackPress = () => { + this.props.navigation.navigate('LocationTrackingScreen', {}); + return true; + }; + + componentDidMount() { + BackHandler.addEventListener("hardwareBackPress", this.handleBackPress); + } + + componentWillUnmount() { + BackHandler.removeEventListener("hardwareBackPress", this.handleBackPress); + } + render() { return ( diff --git a/app/views/Import.js b/app/views/Import.js index 76bffdc520..ef583ac940 100644 --- a/app/views/Import.js +++ b/app/views/Import.js @@ -9,7 +9,7 @@ import { View, Text, Image, - TouchableOpacity + TouchableOpacity,BackHandler } from 'react-native'; import colors from "../constants/colors"; @@ -28,16 +28,22 @@ class ImportScreen extends Component { SearchAndImport(); } - componentDidMount() { - + backToMain() { + this.props.navigation.navigate('LocationTrackingScreen', {}) } - componentWillUnmount() { } + handleBackPress = () => { + this.props.navigation.navigate('LocationTrackingScreen', {}); + return true; + }; - backToMain() { - this.props.navigation.navigate('LocationTrackingScreen', {}) + componentDidMount() { + BackHandler.addEventListener("hardwareBackPress", this.handleBackPress); } + componentWillUnmount() { + BackHandler.removeEventListener("hardwareBackPress", this.handleBackPress); + } render() { return ( diff --git a/app/views/News.js b/app/views/News.js index 4af69ec5a3..585e770e47 100644 --- a/app/views/News.js +++ b/app/views/News.js @@ -8,7 +8,7 @@ import { Image, View, Text, - TouchableOpacity + TouchableOpacity,BackHandler } from 'react-native'; import colors from "../constants/colors"; @@ -27,6 +27,18 @@ class NewsScreen extends Component { this.props.navigation.navigate('LocationTrackingScreen', {}) } + handleBackPress = () => { + this.props.navigation.navigate('LocationTrackingScreen', {}); + return true; + }; + + componentDidMount() { + BackHandler.addEventListener("hardwareBackPress", this.handleBackPress); + } + + componentWillUnmount() { + BackHandler.removeEventListener("hardwareBackPress", this.handleBackPress); + } render() { return (