KorhalNexus7: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
h1. Building
h1. Building


<code><br />mkdir <sub>/korhal # or wherever you want your checkout<br />cd</sub>/korhal<br />repo init -u git</code>gitorious.org:korhal/manifest.git<br />repo sync<br />source build/envsetup.sh<br /><code>
<code>
mkdir ~/korhal # or wherever you want your checkout
cd~/korhal
repo init -u git@gitorious.org:korhal/manifest.git
repo sync
source build/envsetup.sh
</code>


For each of the tgz's here, extract and execute the binary inside the source tree (<sub>/korhal if using the above instructions):
For each of the tgz's here, extract and execute the binary inside the source tree (~/korhal if using the above instructions):
<br />https://developers.google.com/android/nexus/drivers#grouperjzo54k
 
<br />The hardware name for the Nexus 7 is &quot;grouper&amp;quot;, thus we initialize lunch with that.
https://developers.google.com/android/nexus/drivers#grouperjzo54k
<br /></code><br />lunch full_grouper-eng<br />make <s>j8<br /><code>
 
<br />h1. Preparing device
The hardware name for the Nexus 7 is "grouper", thus we initialize lunch with that.
<br />This will wipe your Nexus 7 device, make sure you have backed up anything you wish to keep. You only need to follow the instructions in this section once for any given device.
 
<br />The bootloader needs to be unlocked:
<code>
<br />http://www.droid-life.com/2012/07/17/how-to-unlock-the-nexus-7-bootloader/
lunch full_grouper-eng
<br />Short story, enable USB debugging in &quot;Settings</s>&gt; Developer options&amp;quot;. If you don't see it you probably have Android 4.2 and need to go to &quot;Settings <s>&gt; About tablet&amp;quot; and tap the &quot;Build number&amp;quot; entry seven times, and it will tell you &quot;You are now a developer!&quot;.
make -j8
<br />Then follow these steps:
</code>
<br /></code><br />./adb reboot bootloader<br />sudo ./fastboot oem unlock<br /><code>
 
<br />The adb and fastboot tools come with the Android SDK (adb.exe and fastboot.exe on Windows). You can run &quot;adb devices&amp;quot; to make sure that the computer recognizes the Nexus 7.
h1. Preparing device
<br />At this point you might need to re-enable USB debugging in the settings before continuing with the flashing.
 
<br />h1. Flashing device
This will wipe your Nexus 7 device, make sure you have backed up anything you wish to keep. You only need to follow the instructions in this section once for any given device.
<br />Now we can flash the device with the images that we built earlier (replace <sub>/korhal with your build directory).
 
<br /></code><br />./adb reboot bootloader<br />sudo ./fastboot flash boot</sub>/korhal/out/target/product/grouper/boot.img<br />sudo ./fastboot flash system <sub>/korhal/out/target/product/grouper/system.img # might take a minute or more<br />sudo ./fastboot erase userdata<br /><code>
The bootloader needs to be unlocked:
<br />h1. Playing
 
<br />h2. Fonts
http://www.droid-life.com/2012/07/17/how-to-unlock-the-nexus-7-bootloader/
<br />To fix &quot;QFontDatabase: Cannot find font directory /system//lib/fonts - is Qt installed correctly?&quot; I needed to do the following in adb shell (run &quot;./adb shell&amp;quot; on the host to start a shell running on the device):
 
<br /></code><br />mount -o remount,rw /system<br /><code>
Short story, enable USB debugging in "Settings-> Developer options". If you don't see it you probably have Android 4.2 and need to go to "Settings -> About tablet" and tap the "Build number" entry seven times, and it will tell you "You are now a developer!".
<br />Then, from the host:
 
<br /></code><br />adb push</sub>/korhal/qt/qtbase/lib/fonts/ /system/lib/fonts/<br /><code>
Then follow these steps:
<br />h2. Touch input
 
<br />At the moment, you need to manually build qtbase/src/plugins/generic/evdevtouch and push it to the device.
<code>
<br />First, on the device, run &quot;mkdir /system/plugins/generic&amp;quot;. Then, from the host:
./adb reboot bootloader
<br /></code><br />cd <sub>/korhal/qt/qtbase/src/plugins/generic/evdevtouch<br /></sub>/korhal/qt/qtbase/bin/qmake &amp;&amp; make<br />adb push <sub>/korhal/qt/qtbase/plugins/generic/libqevdevtouchplugin.so /system/plugins/generic/libqevdevtouchplugin.so<br /><code>
sudo ./fastboot oem unlock
<br />h2. Visual splendor
</code>
<br />To get qmlscene to show something on top of the system UI, you'll need edit</sub>/korhal/qt/qtbase/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp and change mControl</s>&gt;setLayer(0x00000001); to mControl-&gt;setLayer(0x40000000);
 
<br />Then, re-build the eglfs plugin and push it.
The adb and fastboot tools come with the Android SDK (adb.exe and fastboot.exe on Windows). You can run "adb devices" to make sure that the computer recognizes the Nexus 7.
<br /></code><br />cd</sub>/korhal/qt/qtbase/src/plugins/platforms/eglfs<br /><sub>/korhal/qt/qtbase/bin/qmake &amp;&amp; make<br />adb push</sub>/korhal/qt/qtbase/plugins/platforms/libqeglfs.so /system/plugins/platforms<br /><code>
 
At this point you might need to re-enable USB debugging in the settings before continuing with the flashing.
 
h1. Flashing device
 
Now we can flash the device with the images that we built earlier (replace ~/korhal with your build directory).
 
<code>
./adb reboot bootloader
sudo ./fastboot flash boot~/korhal/out/target/product/grouper/boot.img
sudo ./fastboot flash system ~/korhal/out/target/product/grouper/system.img # might take a minute or more
sudo ./fastboot erase userdata
</code>
 
h1. Playing
 
h2. Fonts
 
To fix "QFontDatabase: Cannot find font directory /system//lib/fonts - is Qt installed correctly?" I needed to do the following in adb shell (run "./adb shell" on the host to start a shell running on the device):
 
<code>
mount -o remount,rw /system
</code>
 
Then, from the host:
 
<code>
adb push~/korhal/qt/qtbase/lib/fonts/ /system/lib/fonts/
</code>
 
h2. Touch input
 
At the moment, you need to manually build qtbase/src/plugins/generic/evdevtouch and push it to the device.
 
First, on the device, run "mkdir /system/plugins/generic". Then, from the host:
 
<code>
cd ~/korhal/qt/qtbase/src/plugins/generic/evdevtouch
~/korhal/qt/qtbase/bin/qmake &amp;&amp; make
adb push ~/korhal/qt/qtbase/plugins/generic/libqevdevtouchplugin.so /system/plugins/generic/libqevdevtouchplugin.so
</code>
 
h2. Visual splendor
 
To get qmlscene to show something on top of the system UI, you'll need edit~/korhal/qt/qtbase/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp and change mControl->setLayer(0x00000001); to mControl->setLayer(0x40000000);
 
Then, re-build the eglfs plugin and push it.
 
<code>
cd~/korhal/qt/qtbase/src/plugins/platforms/eglfs
~/korhal/qt/qtbase/bin/qmake &amp;&amp; make
adb push~/korhal/qt/qtbase/plugins/platforms/libqeglfs.so /system/plugins/platforms
</code>


== Running qmlscene ==
== Running qmlscene ==


First we copy over a simple qml example, then we run qmlscene remotely. It's also possible to run it from the shell after doing &quot;adb shell&amp;quot;.
First we copy over a simple qml example, then we run qmlscene remotely. It's also possible to run it from the shell after doing "adb shell".


</code><br />adb push ~/korhal/qt/qtdeclarative/examples/quick/mousearea/mousearea.qml /data/mousearea.qml<br />adb shell qmlscene /data/mousearea.qml -plugin evdevtouch:/dev/input/event0<br /><code>
<code>
adb push ~/korhal/qt/qtdeclarative/examples/quick/mousearea/mousearea.qml /data/mousearea.qml
adb shell qmlscene /data/mousearea.qml -plugin evdevtouch:/dev/input/event0
</code>

Revision as of 11:10, 25 February 2015

h1. Building

mkdir ~/korhal # or wherever you want your checkout
cd~/korhal
repo init -u git@gitorious.org:korhal/manifest.git
repo sync
source build/envsetup.sh

For each of the tgz's here, extract and execute the binary inside the source tree (~/korhal if using the above instructions):

https://developers.google.com/android/nexus/drivers#grouperjzo54k

The hardware name for the Nexus 7 is "grouper", thus we initialize lunch with that.

lunch full_grouper-eng
make -j8

h1. Preparing device

This will wipe your Nexus 7 device, make sure you have backed up anything you wish to keep. You only need to follow the instructions in this section once for any given device.

The bootloader needs to be unlocked:

http://www.droid-life.com/2012/07/17/how-to-unlock-the-nexus-7-bootloader/

Short story, enable USB debugging in "Settings-> Developer options". If you don't see it you probably have Android 4.2 and need to go to "Settings -> About tablet" and tap the "Build number" entry seven times, and it will tell you "You are now a developer!".

Then follow these steps:

./adb reboot bootloader
sudo ./fastboot oem unlock

The adb and fastboot tools come with the Android SDK (adb.exe and fastboot.exe on Windows). You can run "adb devices" to make sure that the computer recognizes the Nexus 7.

At this point you might need to re-enable USB debugging in the settings before continuing with the flashing.

h1. Flashing device

Now we can flash the device with the images that we built earlier (replace ~/korhal with your build directory).

./adb reboot bootloader
sudo ./fastboot flash boot~/korhal/out/target/product/grouper/boot.img
sudo ./fastboot flash system ~/korhal/out/target/product/grouper/system.img # might take a minute or more
sudo ./fastboot erase userdata

h1. Playing

h2. Fonts

To fix "QFontDatabase: Cannot find font directory /system//lib/fonts - is Qt installed correctly?" I needed to do the following in adb shell (run "./adb shell" on the host to start a shell running on the device):

mount -o remount,rw /system

Then, from the host:

adb push~/korhal/qt/qtbase/lib/fonts/ /system/lib/fonts/

h2. Touch input

At the moment, you need to manually build qtbase/src/plugins/generic/evdevtouch and push it to the device.

First, on the device, run "mkdir /system/plugins/generic". Then, from the host:

cd ~/korhal/qt/qtbase/src/plugins/generic/evdevtouch
~/korhal/qt/qtbase/bin/qmake &amp;&amp; make
adb push ~/korhal/qt/qtbase/plugins/generic/libqevdevtouchplugin.so /system/plugins/generic/libqevdevtouchplugin.so

h2. Visual splendor

To get qmlscene to show something on top of the system UI, you'll need edit~/korhal/qt/qtbase/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp and change mControl->setLayer(0x00000001); to mControl->setLayer(0x40000000);

Then, re-build the eglfs plugin and push it.

cd~/korhal/qt/qtbase/src/plugins/platforms/eglfs
~/korhal/qt/qtbase/bin/qmake &amp;&amp; make
adb push~/korhal/qt/qtbase/plugins/platforms/libqeglfs.so /system/plugins/platforms

Running qmlscene

First we copy over a simple qml example, then we run qmlscene remotely. It's also possible to run it from the shell after doing "adb shell".

adb push ~/korhal/qt/qtdeclarative/examples/quick/mousearea/mousearea.qml /data/mousearea.qml
adb shell qmlscene /data/mousearea.qml -plugin evdevtouch:/dev/input/event0