Development/BuildingForAndroid

From The Document Foundation Wiki
Jump to: navigation, search

How to build it

The build instructions are very similar to the normal How To Build instructions. Additionally, you will need:

We develop on Linux as the host environment. When you have the NDK and SDK, clone the git repo:

git clone git://anongit.freedesktop.org/libreoffice/core libreoffice
cd libreoffice

Place the unpacked SDK and NDK under external/, i.e. you should have external/android-sdk-linux/ and external/android-ndk/ directories.

Add the following to your autogen.input, and start the build:

# create your autogen.input, so that it looks like:
cat autogen.input
--with-distro=LibreOfficeAndroid
# configure (and install packages as needed)
./autogen.sh
# start the build
make

How to run it

cd android/source
make install

This will install the .apk to the default emulator or device.

Hacking it

We appreciate any help with the development - every patch counts :-) If you don't know what to work on, have a look at Android Most Annoying Bugs.

More information about the development can be found in:

Hints

If you want to speed-up your development cycle, use the Icecream distributed compiler. Specific instructions how to set it up for cross-compiling LibreOffice on Android are in the Using Icecream to speed up the LibreOffice Android build blog post.

gtktiledviewer

gtktiledviewer is a test app that allows development of the LOK API implementations in LO core without any additional complexity (Android or Online both add complexity).

See the gnome-documents page about how to use the underlying GTK widget with that frontend.

At the moment gtktiledviewer has no testsuite, so here is a checklist to do manual testing if there is some larger rework on it.

Basic feature set:

  1. Click inside a paragraph. Result: Caret appears at the position where the user clicked.
  2. Click inside a paragraph, start typing. Result: text appears in the application.
  3. Click inside a bullet list, type Enter. Result: new bullet is inserted, caret is on the new line.
  4. Double-click inside a paragraph. Result: entire word is selected, the selection has handles to allow shrinking or growing the selection.
  5. Drag the shown handles inside the paragraph. Result: the selection grows or shrinks according to the movements.
  6. Text is selected, type a word. Result: The selected text is deleted, the word is typed in.
  7. Double-click inside a cell in a table or a spreadsheet. Result: If empty, the entire cell is selected. If any text is there, the closest word is selected. If the handles are dragged outside of the cell boundary, selection turns into a able selection.
  8. Click on an image. Result: selection rectangle of the image (including handles) appears.
  9. Drag the image's selection handles. Result: The image is resized, keeping the aspect ratio.
  10. Click on a text inside a shape. Result: Caret appears inside the shape text.
  11. Click on the border of a shape. Result: Bounding box of the shape appears as the selection, including handles to manipulate the object.
  12. Drag a handle of the shape's selection. Result: The shape resizes according to the drag. The resizing does not keep aspect ratio.
  13. Select text (double-click on a word), trigger Bold action on the toolbar. Result: The selected text will be emboldened.

Features implemented after the TDF-funded project ended:

  1. Search for something in the document. The search result is highlighted.
    1. If the document is an Impress one, then if the search result is on a next slide, the viewer switches to that slide automatically and the part selector is updated.
    2. If the search term is not found, the findbar is updated to say so.
    3. If nothing is selected, then search starts from the top left corner of the visible area, not from the cursor position.
  2. Desktop-style selection with the mouse (click somewhere, then drag the mouse to the end position).
  3. Progress-bar on load.
  4. Clicking on a hyperlinks opens the URL in a browser.
  5. Add or remove enough content to/from a Writer document so the number of pages changes. The viewer should update the document size correctly. (E.g. scrollbars.)
  6. Select Writer text, copy, paste to e.g. abiword: formatting should be preserved, as HTML is used for copying.
  7. Select Writer shape text, paste to abiword, at least plain text should show up, as it's detected that HTML is not supported.
  8. Switch Impress slides, type text after the slide change -- text should appear. (Focus does not remain on the part selector widget.)
  9. Switch Calc sheets, after sheet switch the contents of the new sheet is visible. (Tiles from the old sheet are not kept.)