9978752258
The problem is that the @media-based detection often disagrees with the JS-based detection which then leads to many problems - most notably that part of the UI behaves as if it was a tablet, and the other part as if was a mobile phone, leading to a terrible user experience. This commit changes it so that there is only one way how to detect if we are on mobile phone, tablet or desktop: using the JavaScript, and we will load the appropriate css accordingly. Only one @media-based rule is converted as an example, the rest will follow. Change-Id: Id7bfb58ca12264904b3329db1542ae6b54893f11 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91416 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> Reviewed-by: Jan Holesovsky <kendy@collabora.com> |
||
---|---|---|
.. | ||
Mobile | ||
Mobile.xcodeproj | ||
TestFakeSocket | ||
config.h.in | ||
ios.h | ||
ios.mm | ||
README |
How to build the iOS app: 1) First you need to build the LibreOffice core code for iOS. Put in your autogen.input something like this: --enable-debug --enable-dbgutil --enable-werror --with-distro=LibreOfficeiOS and build "normally". (Naturally, no unit tests will be run when cross-compiling LibreOffice.) Of course there is no requirement to use those --enable options; as a minimum, just --with-distro=LibreOfficeiOS should work. for use with the SIMULATOR you can use: --with-distro=LibreOfficeiOS_Sim Debug is implied when compiling for use in the simulator, but if you don't want that, then edit "distro-configs/LibreOfficeiOS_Sim.conf" This will produce a large number of static archives (.a) here and there in instdir and workdir, but no app that can be run as such. (You can see a list of them in workdir/CustomTarget/ios/ios-all-static-libs.list) 2) Build LOOL Dependencies POCO LIBRARY 2.1) Get the source poco library at https://pocoproject.org/download.html 2.2) Unpack 2.3a) Compile for DEVICE (arm64) use: ./configure --config=iPhone --static --no-tests --no-samples --omit=Data/ODBC,Data/MySQL --prefix=$HOME/poco-ios-arm64 make POCO_TARGET_OSARCH=arm64 -s -j4 make POCO_TARGET_OSARCH=arm64 install 2.3b) Compile for SIMULATOR (x86_64) use: ./configure --config=iPhoneSimulator --static --no-tests --no-samples --omit=Data/ODBC,Data/MySQL --prefix=$HOME/poco-ios-x64 make POCO_TARGET_OSARCH=x86_64 -s -j4 make POCO_TARGET_OSARCH=x86_64 install This will install the poco static libraries and headers to your $home directory into poco-ios-arm64 (and poco-ios-x64) directory. You can change the directory to your wishes, but by installing it this way into a directory in $HOME it doesn't polute your root directories, doesn't need root permissions and can be removed easily. If compiler can't find <string.h> you need to install: open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg 3) Do a separate clone of the online repo on macOS, but don't do any autogen.sh, configure, or make, or open the Mobile Xcode project there yet. We call this the app folder. 4) Here the instructions split. tml uses the first way, mmeeks tried to use the second way. The paths will join again at step 4. EITHER: 4a) On a Linux machine: Do a separate clone of the online repo, run autogen.sh, and configure it with the --enable-iosapp option: ./configure --enable-iosapp --with-app-name="My Own Mobile LibreOffice" Then run make. That will produce files in loleaflet/dist, nothing else. Copy those to the corresponding folder in the app folder from step 2. This is how I do it: make clean && make && tar cf - loleaflet/dist | ssh misan.local 'cd lo/online-ios-device && rm -rf loleaflet/dist && tar xvf -' where misan.local is the macOS machine where I build the app, and ~/lo/online-ios-device is the app folder from step 2. Then back to the Mac: As you were able to build LibreOffice in step 1, you must already have GNU autoconf installed on the Mac. Install also GNU automake and libtool. Preferrably from sources, to make sure a potential installation of brew or similar will not pollute your environment with unknown stuff. As GNU libtool will be needed only for a very minimal part of the build (running the autogen.sh script, but not anything else), it's safest to install it somewhere that is not in your $PATH. Let's say /opt/libtool. (Installing Automake in the default /usr/local, which is in $PATH, is less risky.) Run the autogen.sh script in the app folder, with GNU libtool available: PATH=/opt/libtool/bin:$PATH ./autogen.sh OR: 4b) Install brew: https://brew.sh/ Then: brew install libtool npm ./autogen.sh sudo python -m ensurepip --default-pip sudo pip install polib lxml make ; make Then run: ./autogen.sh Now the instructions join again: 5) In the app folder from step 2, edit the ios/Mobile.xcodeproj/project.pbxproj file in your favourite text editor. Change LOSRCDIR and all instances of "../ios-device" to refer the the LibreOffice core source directory from step 1. 6) In the app folder, run: for DEVICE: ./configure --enable-iosapp --with-app-name="My Own Mobile LibreOffice" --with-lo-builddir=$HOME/lode/dev/LO --with-poco-includes=$HOME/poco-ios-arm64/include --with-poco-libs=$HOME/poco-ios-arm64/lib for SIMULATOR: ./configure --enable-iosapp --with-app-name="My Own Mobile LibreOffice" --with-lo-builddir=$HOME/lode/dev/LO --with-poco-includes=$HOME/poco-ios-x64/include --with-poco-libs=$HOME/poco-ios-x64/lib The configure script puts the app name as the CFBundleDisplayName property into the ios/Mobile/Info.plist file, and sets up some symbolic links that point to the LibreOffice core source and build directories (which typically will be the same, of course). 7) Before opening the Xcode project for the first time - seriously consider disabling source code indexing, this spawns a vast number of git processes, and consumes huge amounts of CPU & memory: Xcode -> Preferences, "Source Control", uncheck "Enable Source Control" 8) Now you can open the Mobile Xcode project, build it, and run it.