Git Product home page Git Product logo

browser-ios's Introduction

Brave iOS Browser

Download in the App Store

Brave is based on Firefox iOS, most of the Brave-specific code is in the brave dir

These steps should be sufficient to build, but if you need more info, refer to the the Firefox iOS readme

Adding Brave to your app to open links

Either ensure your app supports opening urls in a share menu or use this project https://github.com/brave/ios-open-thirdparty-browser to open links directly.

Setup

The master branch (i.e. the mainline) is Xcode8 + Swift2.3

Install Node.js v5.0.0

Install Carthage: brew install carthage

Do the following commands:

./checkout.sh # builds carthage dependencies
(cd brave && ./setup.sh your.fake.appid) # put in a fake unique app id if you want to build to device
open Client.xcodeproj

build Brave scheme

Note: building your own ad-hoc builds is supported see user device build

Crash reporting using Fabric

To enable, add ~/.brave-fabric-keys with 2 lines, the API key and build secret. Re-run setup.sh and the project will be generated to use Fabric and Crashlytics frameworks.

Tests

Run Product>Test in Xcode to do so. Not all Firefox tests are passing yet.

Contribution Notes

Most of the code is in the brave/ directory. The primary design goal has been to preserve easy merging from Firefox iOS upstream, so hopefully code changes outside of that dir are minimal.

To find changes outside of brave/, look for #if BRAVE / #if !BRAVE (#if/#else/#endif is supported by Swift).

Adding Carthage modules

  1. Add line into Cartfile, run carthage bootstrap to update Cartfile.resolved
  2. Verify that your new module has been added to Cartfile.resolved
  3. Run checkout.sh
  4. In the Xcode Project, go to Client target settings, open the Build Phases tab and add a line such as
$(SRCROOT)/Carthage/Build/iOS/FRAMEWORKNAME.framework

Provisioning Profiles using a Team account

(This section doesn't apply to individual developer accounts, Xcode managed profiles seem to work fine in that case.)

Do not use 'Xcode managed profiles', there is no advantage to this, and debugging problems with that system is a dead end due to lack of transparency in that system.

brave/build-system/profiles has some handy scripts to download the adhoc or developer profiles and install them.

JS Tips

For anyone working with JS in iOS native, I recommend running and debugging your JS in an attached JS console. (Not using an edit/compile/debug cycle in Xcode). When you run from Xcode any iOS web view in the simulator (or attached device), you can then attach from Safari desktop (the Develop menu), and you get a JS console to work in.

We have various JS interpreters available: UIWebView, JavaScriptCore, and WKWebView.

The first is required if we are running JS on the web page, since we are using UIWebView. JavaScriptCore is a stand-alone JS engine that I believe is more up-to-date than UIWebView's. WKWebView will have the most modern JS engine, but requires instantiating a WKWebView for this purpose, which we would prefer to avoid as that is a heavy approach. UIWebView's JS engine is a few years old, and is quite primitive.

None of these are comparable to Safari iOS's JS engine, which is highly up-to-date in its capabilities but is not available to us.

Release Builds

brave/build-system/build-archive.sh does everything. When that completes, the Fabric app detects a new archive and asks to distribute to testers.

Misc Tips

If you get the dreaded "Launch Services Error 0": open ~/Library/Logs/CoreSimulator/CoreSimulator.log for info

Go to the Brave app folder for the most recently run simulator:

cd ~/Library/Developer/CoreSimulator/Devices && cd `ls -t | head -1` && cd data/Containers/Data/Application && cd `find . -iname "*brave*" | head -1 | xargs -I{} dirname {}`

browser-ios's People

Contributors

aaronmt avatar aaronraimist avatar ackratos avatar atulagrwl avatar bkmunar avatar bridiver avatar codestergit avatar darrinhenein avatar diegodoval avatar dusek avatar etiennesegonzac avatar flodolo avatar garvankeeley avatar jamesmudgett avatar jchhikara avatar jhugman avatar johennes avatar k-mar avatar kar1m avatar matthewpurcell avatar mrose17 avatar ncalexan avatar palewar avatar rnewman avatar sachin004 avatar splewako avatar st3fan avatar thebnich avatar vladikoff avatar wesj avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.