[Libreoffice-commits] core.git: 4 commits - android/Bootstrap android/experimental android/qa

Michael Meeks michael.meeks at suse.com
Fri Feb 15 03:41:32 PST 2013


 android/Bootstrap/Makefile.shared                                      |    6 
 android/experimental/DocumentLoader/Makefile                           |    7 
 android/qa/desktop/AndroidManifest.xml                                 |   23 
 android/qa/desktop/Makefile                                            |  289 ++++------
 android/qa/desktop/fonts.conf                                          |   14 
 android/qa/desktop/jni/Application.mk                                  |    2 
 android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java |  287 +++++++++
 7 files changed, 428 insertions(+), 200 deletions(-)

New commits:
commit eaf189abf2a3aa9d64a77ec866204203b51f52a8
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Fri Dec 14 14:54:40 2012 +0000

    android: more cleanup / misc. fixes.

diff --git a/android/qa/desktop/Makefile b/android/qa/desktop/Makefile
index d6c7ef1..c7581a2 100644
--- a/android/qa/desktop/Makefile
+++ b/android/qa/desktop/Makefile
@@ -1,6 +1,3 @@
-# lo-main-library - parameter denoting which shlib to load and execute
-# 'lo_main' from
-
 include ../../../config_host.mk
 
 # The default target just builds.
@@ -151,8 +148,5 @@ build-ant: android_version_setup copy-stuff link-so properties setup-jars
 	unset JAVA_HOME && $(ANT) debug
 
 run:
-	echo "-env:INIFILENAME=file:///assets/program/sofficerc" > cmdline
-#	echo "file:///assets/demo/writer.odt" > cmdline
-	$(ANDROID_SDK_HOME)/platform-tools/adb push cmdline $(APP_DATA_PATH)/cmdline
-	$(ANDROID_SDK_HOME)/platform-tools/adb shell am start -n org.libreoffice.android.exampless/LODesktop -e lo-main-delay 20 -e lo-main-indirect-cmdline "$(APP_DATA_PATH)/cmdline"
-# add -e lo-strace yes # if you want that
+	$(ANDROID_SDK_HOME)/platform-tools/adb shell am start -n org.libreoffice.android.examples/.LODesktop -e input /asset/test1.odt
+# -e lo-main-delay 20  -e lo-strace yes
\ No newline at end of file
diff --git a/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java b/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java
index c8e7990..5891cea 100644
--- a/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java
+++ b/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java
@@ -257,6 +257,8 @@ public class LODesktop
     {
         super.onCreate(savedInstanceState);
 
+        Log.i(TAG, "onCreate - added here\n");
+
         try {
             String input = getIntent().getStringExtra("input");
             if (input == null)
commit 44db691206bf8b413dd04ffb6c762a539d3f2dc1
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Fri Dec 14 14:06:26 2012 +0000

    android: get the desktop demo building again.

diff --git a/android/experimental/DocumentLoader/Makefile b/android/experimental/DocumentLoader/Makefile
index 1333aaf..7ac9b1c 100644
--- a/android/experimental/DocumentLoader/Makefile
+++ b/android/experimental/DocumentLoader/Makefile
@@ -1,15 +1,14 @@
 include ../../../config_host.mk
 
+# The default target just builds.
+all: build-ant
+
 # The package of this app
 APP_PACKAGE=org.libreoffice.android.examples
 
 BOOTSTRAPDIR=../../Bootstrap
 include $(BOOTSTRAPDIR)/Makefile.shared
 
-# The default target just builds.
-
-all: build-ant
-
 copy-stuff:
 # Then "assets". Let the directory structure under assets mimic
 # that under solver for now.
diff --git a/android/qa/desktop/AndroidManifest.xml b/android/qa/desktop/AndroidManifest.xml
index c76425e..c5a6cc0 100644
--- a/android/qa/desktop/AndroidManifest.xml
+++ b/android/qa/desktop/AndroidManifest.xml
@@ -1,23 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="org.libreoffice.android.libo"
+      package="org.libreoffice.android.examples"
       android:versionCode="1"
       android:versionName="1.0">
-    <uses-sdk android:minSdkVersion="9" />
-
-    <application android:label="@string/app_name"
-                 android:debuggable="true">
-        <!-- Bootstrap is the subclass of  android.app.NativeActivity -->
-        <activity android:name="org.libreoffice.android.Bootstrap"
-                  android:label="LibreOffice Viewer test"
-                  android:configChanges="orientation|keyboardHidden">
-            <!-- Tell NativeActivity the name of our .so -->
-            <meta-data android:name="android.app.lib_name"
-                    android:value="lo-bootstrap" />
+    <uses-sdk android:minSdkVersion="9"
+              android:targetSdkVersion="14"/>
+    <application android:label="LO Desktop App"
+                 android:debuggable="true"
+                 android:largeHeap="true"
+                 android:hardwareAccelerated="true">
+        <activity android:name=".LODesktop"
+                  android:label="LO Desktop App"
+                  android:configChanges="keyboardHidden">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
-		<extra android:name="lo-main-library" android:value="libmergedlo" />
             </intent-filter>
         </activity>
     </application>
diff --git a/android/qa/desktop/Makefile b/android/qa/desktop/Makefile
index f90a422..d6c7ef1 100644
--- a/android/qa/desktop/Makefile
+++ b/android/qa/desktop/Makefile
@@ -3,178 +3,127 @@
 
 include ../../../config_host.mk
 
-BOOTSTRAPDIR=../../Bootstrap
-include $(BOOTSTRAPDIR)/Makefile.shared
+# The default target just builds.
+all: build-ant
 
 # The package of this app
-APP_PACKAGE=org.libreoffice.android.libo
+APP_PACKAGE=org.libreoffice.android.examples
+
+BOOTSTRAPDIR=../../Bootstrap
+include $(BOOTSTRAPDIR)/Makefile.shared
 
 # The name of the Bootstrap activity class
 BOOTSTRAP=org.libreoffice.android.Bootstrap
 
 # The default target just builds.
 
-all: build-ant
-
-buildrcs:
-# main sofficerc ini ...
-	mkdir -p assets/program/
-	echo "[Bootstrap]" > assets/program/lofficerc
-	echo "Logo=1" >> assets/program/lofficerc
-	echo "NativeProgress=1" >> assets/program/lofficerc
-	echo "URE_BOOTSTRAP=file:///assets/program/fundamentalrc" >> assets/program/lofficerc
-#	echo "RTL_LOGFILE=file:///dev/log/main" >> assets/program/lofficerc
-	echo "HOME=$(APP_DATA_PATH)/files" >> assets/program/lofficerc
-	echo "OSL_SOCKET_PATH=$(APP_DATA_PATH)/files" >> assets/program/lofficerc
-# - this looks useful but breaks more than it fixes ...
-#	echo "DISABLE_EXTENSION_SYNCHRONIZATION=1" >> assets/program/lofficerc
-
-# fundamentalrc ini ...
-	echo "[Bootstrap]" > assets/program/fundamentalrc
-	echo "LO_LIB_DIR=file://$(APP_DATA_PATH)/lib/" >> assets/program/fundamentalrc
+copy-stuff:
+# Then "assets". Let the directory structure under assets mimic
+# that under solver for now.
+#
+# Please note that I have no idea what all of this is really necessary and for
+# much of this stuff being copied, no idea whether it makes any sense at all.
+# Much of this is copy-pasted from android/qa/sc/Makefile (where a couple of
+# unit tests for sc are built, and those do seem to mostly work) and
+# android/qa/desktop/Makefile (mmeeks's desktop demo, also works to some
+# extent).
+#
+	mkdir -p assets/gz.unpack/program/ure assets/lib assets/program assets/xml/ure assets/ComponentTarget/i18npool/util
+	gzip -9 <$(OUTDIR)/bin/offapi.rdb >assets/gz.unpack/program/offapi.rdb
+	gzip -9 <$(OUTDIR)/bin/oovbaapi.rdb >assets/gz.unpack/program/oovbaapi.rdb
+	gzip -9 <$(OUTDIR)/bin/types.rdb >assets/gz.unpack/program/types.rdb
+	gzip -9 <$(OUTDIR)/bin/ure/types.rdb >assets/gz.unpack/program/ure/types.rdb
+# For some reason the vnd.sun.star.expand:$LO_LIB_DIR doesn't seem to work, it expands to empty!?
+# So just hardcode the known APP_DATA_PATH for now...
+	for F in xml/services xml/ure/services; do \
+		sed -e 's!uri="vnd.sun.star.expand:$$LO_LIB_DIR/!uri="file://$(APP_DATA_PATH)/lib/!g' <$(OUTDIR)/$$F.rdb >assets/$$F.rdb; \
+	done
+	cp $(SRC_ROOT)/odk/examples/java/DocumentHandling/test/test1.odt \
+	   $(SRC_ROOT)/sc/qa/unit/data/xls/border.xls \
+	   $(SRC_ROOT)/sw/qa/core/data/odt/test.odt \
+	   $(SRC_ROOT)/sw/qa/core/data/doc/testVba.doc \
+		assets
+	cp $(WORKDIR)/ComponentTarget/i18npool/util/i18npool.component assets/ComponentTarget/i18npool/util
+#
+	mkdir -p assets/ure/share/misc assets/share/registry/res assets/share/config/soffice.cfg
+	cp -R $(OUTDIR)/xml/*.xcd assets/share/registry
+	mv assets/share/registry/fcfg_langpack_en-US.xcd assets/share/registry/res
+	cp -R $(OUTDIR)/xml/uiconfig/* assets/share/config/soffice.cfg
+	cp -R $(OUTDIR)/xml/registry/* assets/share/registry
+#
+# Set up rc, the "inifile". See BootstrapMap::getBaseIni(). As this app
+# doesn't use soffice_main() (at least I think it shouldn't), the
+# rtl::Bootstrap::setIniFilename() call there that hardcodes
+# /assets/program/lofficerc isn't executed. Instead the hardcoding of
+# /assets/rc in BootstrapMap::getBaseIni() gets used.
+	echo '[Bootstrap]' > assets/rc
+	echo 'Logo=1' >> assets/rc
+	echo 'NativeProgress=1' >> assets/rc
+	echo 'URE_BOOTSTRAP=file:///assets/program/fundamentalrc' >> assets/rc
+#	echo 'RTL_LOGFILE=file:///dev/log/main' >> assets/rc
+	echo "HOME=$(APP_DATA_PATH)/cache" >> assets/rc
+	echo "OSL_SOCKET_PATH=$(APP_DATA_PATH)/cache" >> assets/rc
+#
+# Set up fundamentalrc
+	echo '[Bootstrap]' > assets/program/fundamentalrc
+	echo "LO_LIB_DIR=file:$(APP_DATA_PATH)/lib/" >> assets/program/fundamentalrc
 	echo "URE_LIB_DIR=file://$(APP_DATA_PATH)/lib/" >> assets/program/fundamentalrc # checkme - is this used to find configs ?
-	echo "BRAND_BASE_DIR=file:///assets" >> assets/program/fundamentalrc
+	echo 'BRAND_BASE_DIR=file:///assets' >> assets/program/fundamentalrc
 	echo 'CONFIGURATION_LAYERS=xcsxcu:$${BRAND_BASE_DIR}/share/registry module:$${BRAND_BASE_DIR}/share/registry/modules res:$${BRAND_BASE_DIR}/share/registry' >> assets/program/fundamentalrc
 	echo 'URE_BIN_DIR=file:///assets/ure/bin/dir/not-here/can-we/exec-anyway' >> assets/program/fundamentalrc
-	echo 'URE_MORE_TYPES=file:///assets/ure/share/misc/types.rdb file:///assets/program/types/types.rdb' >> assets/program/fundamentalrc
-	echo 'URE_MORE_SERVICES= <$$BRAND_BASE_DIR/program/services>*' >> assets/program/fundamentalrc
-	echo 'BUNDLED_EXTENSIONS=$$BRAND_BASE_DIR/share/extensions' >> assets/program/fundamentalrc
-	echo 'BUNDLED_EXTENSIONS_USER=$${$$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/extensions/bundled' >> assets/program/fundamentalrc
-	echo 'TMP_EXTENSIONS=$${$$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/extensions/tmp' >> assets/program/fundamentalrc
-	echo 'SHARED_EXTENSIONS_USER=$${$$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/extensions/shared' >> assets/program/fundamentalrc
-	echo 'UNO_SHARED_PACKAGES=$$BRAND_BASE_DIR/share/uno_packages' >> assets/program/fundamentalrc
-	echo 'UNO_SHARED_PACKAGES_CACHE=$$UNO_SHARED_PACKAGES/cache' >> assets/program/fundamentalrc
-	echo 'UNO_USER_PACKAGES=$${$$BRAND_BASE_DIR/program/bootstraprc:UserInstallation}/user/uno_packages' >> assets/program/fundamentalrc
-	echo 'UNO_USER_PACKAGES_CACHE=$$UNO_USER_PACKAGES/cache' >> assets/program/fundamentalrc
-	echo 'PKG_BundledUnoFile=$$BUNDLED_EXTENSIONS_USER/registry/com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc' >> assets/program/fundamentalrc
-	echo 'PKG_SharedUnoFile=$$SHARED_EXTENSIONS_USER/registry/com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc' >> assets/program/fundamentalrc
-	echo 'PKG_UserUnoFile=$$UNO_USER_PACKAGES_CACHE/registry/com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc' >> assets/program/fundamentalrc
-
-# unorc ini ...
-	echo "[Bootstrap]" > assets/program/unorc
-	echo "URE_INTERNAL_LIB_DIR=file://$(APP_DATA_PATH)/lib/" >> assets/program/unorc
-	echo 'UNO_TYPES=file:///assets/ure/share/misc/types.rdb file:///assets/program/types/types.rdb $${URE_MORE_TYPES}' >> assets/program/unorc
-	echo 'UNO_SERVICES=file:///assets/ure/share/misc/services.rdb $${URE_MORE_SERVICES}' >> assets/program/unorc
-# bootstraprc ini ...
-	echo "[Bootstrap]" > assets/program/bootstraprc
-	echo "InstallMode=<installmode>" >> assets/program/bootstraprc
-	echo "ProductKey=LibreOffice 3.5" >> assets/program/bootstraprc
-	echo "UserInstallation=file://$(APP_DATA_PATH)/files/.libreoffice" >> assets/program/bootstraprc
-
-# versionrc ini ...
-	echo "[Version]" > assets/program/versionrc
-	echo "AllLanguages=en-US" >> assets/program/versionrc
-	echo "BuildVersion=" >> assets/program/versionrc
-	echo "buildid=dead-beef" >> assets/program/versionrc
-	echo "ExtensionUpdateURL=http://updateexte.libreoffice.org/ExtensionUpdateService/check.Update" >> assets/program/versionrc
-	echo "ProductMajor=360" >> assets/program/versionrc
-	echo "ProductMinor=1" >> assets/program/versionrc
-	echo "ReferenceOOoMajorMinor=3.6" >> assets/program/versionrc
-	echo "UpdateID=LibreOffice_3_en-US" >> assets/program/versionrc
-	echo "UpdateURL=" >> assets/program/versionrc
-	echo "UpdateUserAgent=<PRODUCT> (${buildid}; ${_OS}; ${_ARCH}; BundledLanguages=${AllLanguages})" >> assets/program/versionrc
-	echo "Vendor=SelfCompiledGit" >> assets/program/versionrc
-
-copy-stuff: buildrcs
-#
-# Copy shared libraries we need to libs/$(ANDROID_APP_ABI) so that ant will
-# include them in the .apk.
+	echo 'URE_MORE_TYPES=$(APP_DATA_PATH)/program/offapi.rdb $(APP_DATA_PATH)/program/oovbaapi.rdb' >> assets/program/fundamentalrc
+	echo 'URE_MORE_SERVICES=file:///assets/xml/services.rdb <$$BRAND_BASE_DIR/program/services>*' >> assets/program/fundamentalrc
 #
-# Copy them to obj/local/$(ANDROID_APP_ABI), too, where gdb will look for
-# them.
+# Set up unorc
+	echo '[Bootstrap]' > assets/program/unorc
+	echo "URE_INTERNAL_LIB_DIR=file://$(APP_DATA_PATH)/lib/" >> assets/program/unorc
+	echo 'UNO_TYPES=$(APP_DATA_PATH)/program/ure/types.rdb $(APP_DATA_PATH)/program/types.rdb $${URE_MORE_TYPES}' >> assets/program/unorc
+	echo 'UNO_SERVICES=file:///assets/xml/ure/services.rdb $${URE_MORE_SERVICES}' >> assets/program/unorc
 #
-	mkdir -p $(SODEST) $(OBJLOCAL)
+# Set up bootstraprc
+	echo '[Bootstrap]' > assets/program/bootstraprc
+	echo 'InstallMode=<installmode>' >> assets/program/bootstraprc
+	echo 'ProductKey=LibreOffice 3.6' >> assets/program/bootstraprc
+	echo "UserInstallation=file://$(APP_DATA_PATH)" >> assets/program/bootstraprc
 #
-# First the most important one, liblo-bootstrap.so
-	$(call COPY,$(OUTDIR)/lib/liblo-bootstrap.so)
+# Set up versionrc
+	echo '[Version]' > assets/program/versionrc
+	echo 'AllLanguages=en-US' >> assets/program/versionrc
+	echo 'BuildVersion=' >> assets/program/versionrc
+	echo 'buildid=dead-beef' >> assets/program/versionrc
+	echo 'ProductMajor=360' >> assets/program/versionrc
+	echo 'ProductMinor=1' >> assets/program/versionrc
+	echo 'ReferenceOOoMajorMinor=3.6' >> assets/program/versionrc
 #
-# Libs and UNO components that we need.
+# .res files
+	mkdir -p assets/program/resource
+	cp $(OUTDIR)/bin/*en-US.res assets/program/resource
 #
-	for F in $(strip \
-		  analysislo \
-		  basegfxlo \
-		  bootstrap.uno \
-		  comphelpgcc3 \
-		  cppcanvaslo \
-		  embobj \
-		  expwrap.uno \
-		  gcc3_uno \
-		  i18nisolang1gcc3 \
-		  icudatalo \
-		  icui18nlo \
-		  iculelo \
-		  icuuclo \
-		  jvmaccessgcc3 \
-		  jvmfwk \
-		  libotouchlo \
-		  introspection.uno \
-		  localedata_en \
-		  localedata_es \
-		  localedata_euro \
-		  localedata_others \
-		  mergedlo \
-		  msfilterlo \
-		  ooxlo \
-		  reflection.uno \
-		  reg \
-		  stocservices.uno \
-		  store \
-		  test \
-		  tllo \
-		  ucbhelper4gcc3 \
-		  uno_cppu \
-		  uno_cppuhelpergcc3 \
-		  uno_sal \
-		  uno_salhelpergcc3 \
-		  unordflo \
-		  unotest \
-		  unoxmllo \
-		  vbahelperlo \
-		  xml2 \
-		  xmlreader \
-		  xmlsecurity \
-		  xslt \
-		  \
-		  swlo \
-		  swuilo \
-		  swdlo \
-		  \
-		  sclo \
-		  scdlo \
-		  scnlo \
-		  scuilo \
-		  scfiltlo \
-		  \
-		  chartcontrollerlo \
-		  chartcorelo \
-		  ); do \
-	    $(call COPYSO,$(OUTDIR)/lib/lib$${F}.so); \
+# Assets that are unpacked at run-time into the app's data directory. These
+# are files read by non-LO code, fontconfig and freetype for now, that doesn't
+# understand "/assets" paths.
+	mkdir -p assets/unpack/etc/fonts
+	cp fonts.conf assets/unpack/etc/fonts
+# $UserInstallation/user/fonts is added to the fontconfig path in
+# vcl/generic/fontmanager/helper.cxx: psp::getFontPath(). UserInstallation is
+# set to the app's data dir above.
+	mkdir -p assets/gz.unpack/user/fonts
+	for F in $(OUTDIR)/pck/Liberation*.ttf $(OUTDIR)/pck/Gen*.ttf $(OUTDIR)/pck/opens___.ttf; do \
+		gzip -9 <$$F >assets/gz.unpack/user/fonts/`basename $$F`; \
 	done
-
 #
-# Then the shared GNU C++ library
-	$(call COPYSO,$(ANDROID_NDK_HOME)/sources/cxx-stl/gnu-libstdc++/$(ANDROID_NDK_TOOLCHAIN_VERSION_SUBDIR)libs/$(ANDROID_APP_ABI)/libgnustl_shared.so)
+# Then gdbserver and gdb.setup so that we can debug with ndk-gdb.
 #
-# Then other "assets" that can be left in the .apk. Let the directory
-# structure under assets mimic the install set - except for the fact
-# that program/ is renamed to lib/ and we put the ure/lib .so's into
-# the assets/lib directory too.
-	mkdir -p assets/program/types assets/program/services
-	mkdir -p assets/program/resource
-	mkdir -p assets/ure/share/misc assets/share/registry/res
-	mkdir -p assets/share/config/soffice.cfg
-# uno types & services
-	cp $(OUTDIR)/bin/types.rdb assets/program/types/
-	cp $(OUTDIR)/bin/ure/types.rdb assets/ure/share/misc/
-	cp $(OUTDIR)/xml/services.rdb assets/program/services
-	cp $(OUTDIR)/xml/ure/services.rdb assets/ure/share/misc/
-# config
-	cp -R $(OUTDIR)/xml/*.xcd assets/share/registry/
-	mv assets/share/registry/fcfg_langpack_en-US.xcd assets/share/registry/res/
-	cp -R $(OUTDIR)/xml/uiconfig/* assets/share/config/soffice.cfg
+	mkdir -p $(SODEST)
+	cp $(ANDROID_NDK_GDBSERVER) $(SODEST)
+	echo set solib-search-path ./obj/local/$(ANDROID_APP_ABI) >$(SODEST)/gdb.setup
+# ------------ Pieces not from DocumentLoader ------------
+# tango artwork / icons
+	mkdir -p assets/share/config
 	cp -R $(OUTDIR)/bin/images_tango.zip assets/share/config/images.zip
-# .res files
-	cp $(OUTDIR)/bin/*en-US.res assets/program/resource/
+# shell / splash images
+	mkdir -p assets/program
+	cp -r $(SRC_ROOT)/icon-themes/galaxy/brand/* assets/program
 # presets - becomes the users home directory, .stamp forces .zip dir creation
 	for D in $(strip autocorr autotext backup basic config gallery \
 	         psprint/driver psprint/fontmetric template \
@@ -182,26 +131,28 @@ copy-stuff: buildrcs
 		mkdir -p assets/presets/$$D ; \
 		echo "content" > assets/presets/$$D/stamp; \
 	done
-# shell / splash images
-	cp -r $(SRC_ROOT)/icon-themes/galaxy/brand/* assets/program
-# Then assets that are unpacked at run-time into the app's data directory.
-	mkdir -p assets/unpack/etc/fonts
-	cp fonts.conf assets/unpack/etc/fonts
-# A sample file for fun ...
-	mkdir -p assets/demo
-	if test -f /opt/libreoffice/tmp/writer.odt; then cp /opt/libreoffice/tmp/writer.odt assets/demo; fi
+
+setup-jars:
 #
-# Then gdbserver and gdb.setup so that we can debug with ndk-gdb.
+# Copy jar files we need
 #
-	cp $(ANDROID_NDK_GDBSERVER) $(SODEST)
-	echo set solib-search-path ./obj/local/$(ANDROID_APP_ABI) >$(SODEST)/gdb.setup
+	for F in $(strip \
+		   java_uno \
+		   juh \
+		   jurt \
+		   ridl \
+		   unoil \
+		   unoloader \
+		  ); do \
+	    $(call COPYJAR,$(OUTDIR)/bin/$${F}.jar); \
+	done
 
-build-ant: android_version_setup copy-stuff link-so properties
+build-ant: android_version_setup copy-stuff link-so properties setup-jars
 	unset JAVA_HOME && $(ANT) debug
 
 run:
 	echo "-env:INIFILENAME=file:///assets/program/sofficerc" > cmdline
 #	echo "file:///assets/demo/writer.odt" > cmdline
 	$(ANDROID_SDK_HOME)/platform-tools/adb push cmdline $(APP_DATA_PATH)/cmdline
-	$(ANDROID_SDK_HOME)/platform-tools/adb shell am start -n $(APP_PACKAGE)/$(BOOTSTRAP) -e lo-main-delay 20 -e lo-main-indirect-cmdline "$(APP_DATA_PATH)/cmdline"
+	$(ANDROID_SDK_HOME)/platform-tools/adb shell am start -n org.libreoffice.android.exampless/LODesktop -e lo-main-delay 20 -e lo-main-indirect-cmdline "$(APP_DATA_PATH)/cmdline"
 # add -e lo-strace yes # if you want that
diff --git a/android/qa/desktop/fonts.conf b/android/qa/desktop/fonts.conf
index 866df8a..699e9d1 100644
--- a/android/qa/desktop/fonts.conf
+++ b/android/qa/desktop/fonts.conf
@@ -6,26 +6,24 @@
 <!-- Font directory list -->
 
 	<dir>/system/fonts</dir>
-	<dir>/data/data/org.libreoffice.android.libo/fonts</dir>
 
 	<alias>
 		<family>serif</family>
 		<prefer>
-			<family>DroidSerif</family>
-			<family>Roboto</family>
+			<family>Droid Serif</family>
 		</prefer>
 	</alias>
 	<alias>
 		<family>sans-serif</family>
 		<prefer>
 			<family>Roboto</family>
-			<family>DroidSerif</family>
+			<family>Droid Sans Fallback</family>
 		</prefer>
 	</alias>
 	<alias>
 		<family>monospace</family>
 		<prefer>
-			<family>DroidSansMono</family>
+			<family>Droid Sans Mono</family>
 		</prefer>
 	</alias>
 
@@ -76,7 +74,7 @@
 	     later to patch in proper code in fontonfig on Android to
 	     find out a good place.
 	-->
-	<cachedir>/data/data/org.libreoffice.android.libo/fontconfig</cachedir>
+	<cachedir>/data/data/org.libreoffice.android.examples/fontconfig</cachedir>
 
 	<config>
 <!--
@@ -146,10 +144,10 @@
 			<int>0xFFFB</int>	<!-- INTERLINEAR ANNOTATION TERMINATOR -->
 		</blank>
 <!--
-  Rescan configuration every 30 seconds when FcFontSetList is called
+  Rescan configuration every 3600 seconds when FcFontSetList is called
  -->
 		<rescan>
-			<int>30</int>
+			<int>3600</int>
 		</rescan>
 	</config>
 
diff --git a/android/qa/desktop/src/dummyfile b/android/qa/desktop/src/dummyfile
deleted file mode 100644
index e69de29..0000000
diff --git a/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java b/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java
new file mode 100644
index 0000000..c8e7990
--- /dev/null
+++ b/android/qa/desktop/src/org/libreoffice/android/examples/LODesktop.java
@@ -0,0 +1,285 @@
+// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+//
+// This file is part of the LibreOffice project.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// This is just a testbed for ideas and implementations. (Still, it might turn
+// out to be somewhat useful as such while waiting for "real" apps.)
+
+// Important points:
+
+// Everything that might take a long time should be done asynchronously:
+//  - loading the document (loadComponentFromURL())
+//  - counting number of pages (getRendererCount())
+//  - rendering a page (render())
+
+// Unclear whether pages can be rendered in parallel. Probably best to
+// serialize all the above in the same worker thread. We use
+// AsyncTask.SERIAL_EXECUTOR below.
+
+// While a page is loading ideally should display some animated spinner (but
+// for now just a static "please wait" text).
+
+// ===
+
+// How should we handle re-rendering at higher resolution when zooming in, and
+// then panning around?
+
+// Hopefully when LO is asked to render just a part of a page (i.e. the
+// MapMode of the device rendered to causes significant parts of the page to
+// be outside the device) the code is clever enough to quickly skip stuff that
+// will be clipped. But I don't hold my breath.
+
+// How could we do it?
+
+// 1/ Re-render just the zoomed-in area. Probably not a good idea, as probably
+// the user will almost immediately also pan a bit or zoom out a bit, which
+// would cause a re-render.
+
+// 2/ Some kind of tiled approach. Initially just one tile for the whole
+// page. When zooming in, at some point (2x?) split the currently visible
+// tiles into four sub-tiles, each initially displaying the same resolution as
+// the parent tile. Start asynchronous rendering of visible sub-tiles at
+// double resolution. Keep the "parent" rendered bitmap but don't keep bitmaps
+// that go out of view. (Except perhaps for some caching.) When zooming out,
+// at some point (0.5x?) merge four sub-tiles back into one. Hmm. Is this the
+// right approach?
+
+// In any case, also this rendering at higher resolution should be done
+// asynchronously, of course. If the user zooms in and pans around, the
+// existing bitmap will be shown scaled (and ugly) until required rendering
+// has finished and then the affected tiles are replaced with
+// higher-resolution ones.
+
+package org.libreoffice.android.examples;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.Matrix;
+import android.graphics.PixelFormat;
+import android.graphics.Paint;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.ColorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.GestureDetector;
+import android.view.Gravity;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.AnimationSet;
+import android.view.animation.TranslateAnimation;
+import android.widget.ImageView;
+import android.widget.NumberPicker;
+import android.widget.TextView;
+import android.widget.ViewFlipper;
+import android.widget.ViewSwitcher;
+
+import junit.framework.Assert;
+
+import com.sun.star.awt.Size;
+import com.sun.star.awt.XBitmap;
+import com.sun.star.awt.XControl;
+import com.sun.star.awt.XDevice;
+import com.sun.star.awt.XToolkitExperimental;
+import com.sun.star.beans.PropertyValue;
+import com.sun.star.frame.XComponentLoader;
+import com.sun.star.frame.XController;
+import com.sun.star.frame.XFrame;
+import com.sun.star.frame.XModel;
+import com.sun.star.lang.XEventListener;
+import com.sun.star.lang.XMultiComponentFactory;
+import com.sun.star.lang.XTypeProvider;
+import com.sun.star.uno.Type;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.view.XRenderable;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.ArrayList;
+
+import org.libreoffice.android.Bootstrap;
+
+public class LODesktop
+    extends Activity
+{
+    private static final String TAG = "LODesktop";
+
+    /**
+     * This class contains the state that is initialized once and never changes
+     * (not specific to a document or a view).
+     */
+    class BootstrapContext
+    {
+        public long timingOverhead;
+        public XComponentContext componentContext;
+        public XMultiComponentFactory mcf;
+        public XComponentLoader componentLoader;
+        public XToolkitExperimental toolkit;
+        public XDevice dummySmallDevice;
+    }
+
+    BootstrapContext bootstrapContext;
+    Bundle extras;
+
+    class MyXController
+        implements XController
+    {
+
+        XFrame frame;
+        XModel model;
+
+        public void attachFrame(XFrame frame)
+        {
+            Log.i(TAG, "attachFrame");
+            this.frame = frame;
+        }
+
+        public boolean attachModel(XModel model)
+        {
+            Log.i(TAG, "attachModel");
+            this.model = model;
+            return true;
+        }
+
+        public boolean suspend(boolean doSuspend)
+        {
+            Log.i(TAG, "suspend");
+            return false;
+        }
+
+        public Object getViewData()
+        {
+            Log.i(TAG, "getViewData");
+            return null;
+        }
+
+        public void restoreViewData(Object data)
+        {
+            Log.i(TAG, "restoreViewData");
+        }
+
+        public XModel getModel()
+        {
+            Log.i(TAG, "getModel");
+            return model;
+        }
+
+        public XFrame getFrame()
+        {
+            Log.i(TAG, "getFrame");
+            return frame;
+        }
+
+        public void dispose()
+        {
+            Log.i(TAG, "dispose");
+        }
+
+        public void addEventListener(XEventListener listener)
+        {
+            Log.i(TAG, "addEventListener");
+        }
+
+        public void removeEventListener(XEventListener listener)
+        {
+            Log.i(TAG, "removeEventListener");
+        }
+    }
+
+    // FIXME: we should prolly manage a bitmap buffer here and give it to
+    // VCL to render into ... and pull the WM/stacking pieces up into the Java ...
+    // [ perhaps ;-]
+    // how can we get an event to "create a window" - need a JNI callback I guess ...
+
+    private void initBootstrapContext()
+    {
+        try
+        {
+            bootstrapContext = new BootstrapContext();
+
+            long t0 = System.currentTimeMillis();
+            long t1 = System.currentTimeMillis();
+            bootstrapContext.timingOverhead = t1 - t0;
+
+            Bootstrap.setup(this);
+
+            // Avoid all the old style OSL_TRACE calls especially in vcl
+            Bootstrap.putenv("SAL_LOG=+WARN+INFO");
+
+            // Log.i(TAG, "Sleeping NOW");
+            // Thread.sleep(20000);
+
+            bootstrapContext.componentContext = com.sun.star.comp.helper.Bootstrap.defaultBootstrap_InitialComponentContext();
+
+            Log.i(TAG, "context is" + (bootstrapContext.componentContext!=null ? " not" : "") + " null");
+
+            bootstrapContext.mcf = bootstrapContext.componentContext.getServiceManager();
+
+            Log.i(TAG, "mcf is" + (bootstrapContext.mcf!=null ? " not" : "") + " null");
+
+            Bootstrap.initVCL();
+
+            Object desktop = bootstrapContext.mcf.createInstanceWithContext
+                ("com.sun.star.frame.Desktop", bootstrapContext.componentContext);
+
+            Log.i(TAG, "desktop is" + (desktop!=null ? " not" : "") + " null");
+
+            bootstrapContext.componentLoader = (XComponentLoader) UnoRuntime.queryInterface(XComponentLoader.class, desktop);
+
+            Log.i(TAG, "componentLoader is" + (bootstrapContext.componentLoader!=null ? " not" : "") + " null");
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace(System.err);
+            finish();
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        try {
+            String input = getIntent().getStringExtra("input");
+            if (input == null)
+                input = "/assets/test1.odt";
+
+            // We need to fake up an argv, and the argv[0] even needs to
+            // point to some file name that we can pretend is the "program".
+            // setCommandArgs() will prefix argv[0] with the app's data
+            // directory.
+
+            String[] argv = { "lo-document-loader", input };
+
+            Bootstrap.setCommandArgs(argv);
+
+            if (bootstrapContext == null)
+                initBootstrapContext();
+
+        }
+        catch (Exception e) {
+            e.printStackTrace(System.err);
+            finish();
+        }
+    }
+}
+
+// vim:set shiftwidth=4 softtabstop=4 expandtab:
commit 6aef5e7807a0b1ebb48da82556e9e53096c9753d
Author: Tor Lillqvist <tml at iki.fi>
Date:   Mon Dec 17 10:28:17 2012 +0200

    This file gets constructed at build-time so no point having it in git
    
    See the properties target in android/Bootstrap/Makefile.shared.

diff --git a/android/qa/desktop/jni/Application.mk b/android/qa/desktop/jni/Application.mk
deleted file mode 100644
index 9b408d0..0000000
--- a/android/qa/desktop/jni/Application.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-APP_ABI := x86
-APP_PLATFORM := android-14
commit be6597a67888dc2b046127cd61712ab2690117e3
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Fri Dec 14 13:47:42 2012 +0000

    avoid re-linking if nothing changed.

diff --git a/android/Bootstrap/Makefile.shared b/android/Bootstrap/Makefile.shared
index 01e8aa3..31029a1 100644
--- a/android/Bootstrap/Makefile.shared
+++ b/android/Bootstrap/Makefile.shared
@@ -85,12 +85,16 @@ WHOLELIBS = \
   )) \
   -Wl,--no-whole-archive
 
-link-so:
+
+$(OBJLOCAL)/liblo-native-code.so : $(wildcard $(OUTDIR)/lib/lib*.a) native-code.cxx
 	mkdir -p $(OBJLOCAL)
 	$(CXX) -Wl,-Map,liblo-native-code.map -Wl,--gc-sections -Wl,--version-script=../../Bootstrap/version.map -Wl,--no-keep-files-mapped -Wl,--no-undefined -DANDROID -DDISABLE_DYNLOADING -shared -o $(OBJLOCAL)/liblo-native-code.so -I$(OUTDIR)/inc native-code.cxx -L$(OUTDIR)/lib $(WHOLELIBS) $(LIBS) -lgnustl_static -landroid -llog -lz
+
+$(SODEST)/liblo-native-code.so : $(OBJLOCAL)/liblo-native-code.so
 	mkdir -p $(SODEST)
 	$(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so
 
+link-so: $(SODEST)/liblo-native-code.so
 
 # If you reinstall an app several times *on the emulator*, even if you
 # uninstall it between, disk space seems to leak that won't get recycled until


More information about the Libreoffice-commits mailing list