Compare Revisions

Using the B2G desktop client

Revision 300511:

Revision 300511 by Sheppy on

Revision 302145:

Revision 302145 by philikon on

Title:
Using the B2G desktop client
Using the B2G desktop client
Slug:
Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client
Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client
Tags:
"Mobile","B2G","Gaia"
"Mobile","B2G","Gaia"
Content:

Revision 300511
Revision 302145
n8      The Boot to Gecko desktop client, b2g, lets you run Gaia ann8      The Firefox OS desktop client, also called the <em>B2G desk
>d web apps in a Gecko-based environment somewhat similar to an ac>top client</em>, lets you run Gaia and web apps in a Gecko-based 
>tual device. It doesn't emulate device hardware, so it's not adeq>environment somewhat similar to an actual device. It doesn't emul
>uate for testing device APIs, and isn't a replacement for testing>ate device hardware, so it's not adequate for testing device APIs
> on actual hardware. However, it can be useful during the develop>, and isn't a replacement for testing on actual hardware. However
>ment of your application, or while working on the Gaia user inter>, it does have a several APIs enabled that aren't available on Fi
>face itself.>refox such as the Contacts and Settings APIs. It can therefore be
 > useful during the development of our application, or while worki
 >ng on the Gaia user interface itself.
9    </p>
10    <p>9    </p>
10    <p>
11      This article covers building the B2G desktop client, as wel11      This article covers downloading or building the Firefox OS 
>l as how to use it.>desktop client, as well as how to use it.
12    </p>
13    <h2>
14      Download a nightly build
15    </h2>
16    <p>
17      Just like <a href="http://nightly.mozilla.org" title="http:
 >//nightly.mozilla.org">Firefox Nightlies</a>, the Firefox OS desk
 >top client is built every day from the latest source code. The la
 >test build is <a href="http://ftp.mozilla.org/pub/mozilla.org/b2g
 >/nightly/latest-mozilla-central/" title="http://ftp.mozilla.org/p
 >ub/mozilla.org/b2g/nightly/latest-mozilla-central/">available fro
 >m the Mozilla FTP server</a>. Be sure to pick the latest version 
 >and the right archive for your operating system.
18    </p>
19    <p>
20      We can now skip ahead to <a href="#Running_the_desktop_clie
 >nt" title="#Running_the_desktop_client">Running the desktop clien
 >t</a>.
n14      Preparing to buildn23      Building the desktop client
15    </h2>
16    <p>24    </h2>
25    <p>
17      The first thing you need to do is set up a <a href="/En/Dev26      The first thing we need to do is set up a <a href="/En/Deve
>eloper_Guide/Build_Instructions#Build_prerequisites" title="En/De>loper_Guide/Build_Instructions#Build_prerequisites" title="En/Dev
>veloper_Guide/Build_Instructions#Build_prerequisites">standard Mo>eloper_Guide/Build_Instructions#Build_prerequisites">standard Moz
>zilla build environment</a>. Once you have that, you can pull dow>illa build environment</a>. Once we have that, we can pull down t
>n the code you'll need and configure to build the B2G desktop cli>he code we'll need and configure to build the Firefox OS desktop 
>ent.>client.
n20      Pulling the code for the first timen29      Downloading the code for the first time
21    </h3>
22    <p>30    </h3>
23      There are two sets of code you need: mozilla-central (to ge
>t <a href="/en-US/docs/Gecko" title="/en-US/docs/Accessibility/AT 
>-APIs/Gecko">Gecko</a> and the <a href="/en-US/docs/XUL" title="/ 
>en-US/docs/XUL">XUL</a> and b2g software frontend code) and Gaia. 
24    </p>31    <p>
32      In a directory where we'd like the source code to go, let's
 > clone the <code>mozilla-central</code> repository that contains 
 >all of Gecko:
25    <p>33    </p>
26      Create a directory somewhere into which you want to put it 
>all, then do: 
27    </p>34    <pre>
28    <pre>
29 hg clone http://hg.mozilla.org/mozilla-central src35 hg clone http://hg.mozilla.org/mozilla-central
30 git clone https://github.com/mozilla-b2g/gaia gaia
n33      Updating the code for future buildsn38      Updating the code
34    </h3>
35    <p>39    </h3>
36      When you do additional builds later, you'll want to make su
>re you have the latest code. Here's how to refresh both <a href=" 
>/en-US/docs/mozilla-central" title="/en-US/docs/mozilla-central"> 
>mozilla-central</a> and Gaia: 
37    </p>40    <p>
41      When we do subsequent builds later, we'll want to make sure
 > we have the latest code. Here's how to pull the latest changes:
38    <pre>42    </p>
39cd src43    <pre>
40hg pull &amp;&amp; hg update44cd mozilla-central
41cd ../gaia45hg pull -u
42git fetch
43git merge origin/master
n45    <h2 id="Create_a_mozconfig">n47    <h3 id="Create_a_mozconfig">
n47    </h2>n49    </h3>
n49      Next, you need to create a <code>.mozconfig</code> file to n51      Next, we need to create a <code>mozconfig</code> file in th
>configure the build system to build the Boot to Gecko client inst>e <code>mozilla-central</code> directory to configure the build s
>ead of FIrefox. Create the file and put something like this in it>ystem to build the Boot to Gecko client instead of Firefox:
>: 
n67    <h2 id="Build">n69    <h3 id="Build">
68      Build70      Building
69    </h2>71    </h3>
70    <p>
71      Now you're ready to build. First, you need to build the Boo
>t to Gecko app itself. Just do this from within the mozilla-centr 
>al (<code>src</code>) directory: 
72    </p>72    <p>
73    <pre>73      Now we're ready to build the desktop client with the follow
 >ing command issued from the <code>mozilla-central</code> director
 >y:
74make -f client.mk build
75</pre>
76    <p>74    </p>
75    <pre>
76make -f client.mk
77</pre>
78    <p>
77      The built client will be placed in the <code>../build</code79      The built client will be placed in the <code>../build/dist<
>> directory (based on the value you specify for <code>MOZ_OBJDIR<>/code> directory (based on the value you specify for <code>MOZ_OB
>/code> in the <code>.mozconfig</code> file).>JDIR</code> in the <code>mozconfig</code> file).
78    </p>
79    <p>80    </p>
80      Next, you need to generate the required profile directory a81    <h2 id="Run">
>nd do some other preparation of Gaia. The new profile contains a  
>customized extension and other configuration needed to make B2G r 
>un properly. So do this in the <code>gaia</code> directory: 
82      Running the desktop client
83    </h2>
81    </p>84    <p>
85      By default the desktop client will show an empty screen bec
 >ause it doesn't know which web app to load initially as the syste
 >m app. The collection of system apps and default apps that come w
 >ith Firefox OS is called Gaia.
86    </p>
87    <h3>
88      Downloading Gaia
89    </h3>
82    <pre>90    <p>
83cd ${GAIA}91      To download Gaia for the first time, let's clone the source
 > code repository on GitHub:
92    </p>
93    <pre>
94 git clone https://github.com/mozilla-b2g/gaia
95</pre>
96    <p>
97      To update an already existing clone of Gaia, we can pull in
 > the latest changes from GitHub:
98    </p>
99    <pre>
100cd gaia
101git pull
102</pre>
103    <h3>
104      Generating a profile
105    </h3>
106    <p>
107      Next we need to set up Gaia's apps for the desktop client. 
 >This includes packaging the Gaia apps in the same way like they w
 >ould be installed on the device, as well as setting up the permis
 >sions for the privileged system apps. We do this by generating a 
 >profile. The following command will take care of that: The new pr
 >ofile contains a customized extension and other configuration nee
 >ded to make B2G run properly. So do this in the <code>gaia</code>
 > directory:
108    </p>
109    <pre>
110cd gaia
n86    <h2 id="Run">n
87      Run
88    </h2>113    <p>
89    <p>114      This should create a <code>profile</code> directory below t
 >he <code>gaia</code> directory.
90      Now you're ready to run the B2G client.
n93      Linuxn117      Running on Linux
n95    <pre>n119    <p>
96../build/dist/bin/b2g -profile profile120      To run the desktop client against the Gaia profile we just 
 >generate, we simply invoke the <code>b2g</code> binary with the p
 >rofile parameter. The binary will be located in the tarball we do
 >wnloaded earlier or in the <code>../build/dist/bin</code> directo
 >ry if we built the client ourselves.
121    </p>
122    <pre>
123.../b2g -profile gaia/profile
n105      Macn132      Running on Mac
106    </h3>
107    <pre>
108../build/dist/B2G.app/Contents/MacOS/b2g -profile /full/path/to/g
>aia/profile 
109</pre>
110    <h3 id="Make_it_easier">
111      Make it easier
112    </h3>
113    <p>133    </h3>
114      You can make runing B2G a little easier by setting the valu
>es of the shell environment variable <code>B2G_HOMESCREEN</code>  
>to "<span class="nowiki">http://system.gaiamobile.org:8080</span> 
>", and by adding the <code>$MOZ_OBJDIR/dist/bin/</code> (on Linux 
>) or <code>$MOZ_OBJDIR/dist/B2G.app/Contents/MacOS/</code> direct 
>ory to your <code>$PATH</code>. 
115    </p>134    <p>
135      On Mac, the command line is slightly more complicated due t
 >o the location of the <code>b2g</code> binary and the need for ab
 >solute paths when specifying the profile directory:
136    </p>
137    <pre>
138.../B2G.app/Contents/MacOS/b2g -profile /full/path/to/gaia/profil
 >e
139</pre>
n122    <h3 id="Specifying_the_screen_size" name="option-screen">n146    <h3 id="option-screen" name="option-screen">
n170    <h3 id="Opening_the_JavaScript_console" name="option-console"n194    <h3 id="option-console" name="option-console">
>> 
n177../build/dist/bin/b2g -jsconsole -profile <em>/path/to/your/profin201.../b2g -jsconsole -profile <em>/path/to/your/profile</em>
>le</em> 
n185    <h3 id="Launching_a_specific_application_at_startup" name="opn209    <h3 id="option-runapp" name="option-runapp">
>tion-runapp"> 
n192 ../build/dist/bin/b2g -profile <em>/path/to/your/gaia/profile</en216 .../b2g -profile <em>/path/to/your/gaia/profile</em> --runapp em
>m> --runapp email>ail
t217      <li>The Home key performs the same function as the "home" bt241      <li>The Home key performs the same function as the "home" b
>utton; if you're on a Mac whose keyboard doesn't have one, Fn+← s>utton; if you're on a Mac, the Home key is availablas Fn+← (Fn 
>hould do it (Left Arrow, not Backspace).>Left Arrow).
218      </li>
219      <li>There is not, currently, a key that simulates the "menu
>" button on devices that have them. 

Back to History