From b28512b88936c2acec38e451fb05fc0741c5f77d Mon Sep 17 00:00:00 2001 From: Gioacchino Mazzurco Date: Fri, 5 Oct 2018 22:29:49 +0200 Subject: [PATCH] retroshare-service now build and runs fine on android (even older ones) --- README-Android.asciidoc | 1 + .../Android/prepare-toolchain-clang.sh | 22 ++++-- libretroshare/src/libretroshare.pro | 38 +++++------ libretroshare/src/use_libretroshare.pri | 25 +++++-- .../data/retroshare-service_128x128.png | Bin 0 -> 8200 bytes .../data/retroshare-service_48x48.png | Bin 0 -> 2946 bytes .../src/android/AndroidManifest.xml | 49 +++++++++++--- .../res/drawable/retroshare_128x128.png | 1 - .../android/res/drawable/retroshare_48x48.png | 1 - .../drawable/retroshare_service_128x128.png | 1 + .../res/drawable/retroshare_service_48x48.png | 1 + .../retroshare_service_control_layout.xml | 11 +++ .../service/AppUpdatedReceiver.java | 35 ++++++++++ .../service/BootCompletedReceiver.java | 34 ++++++++++ .../service/RetroShareServiceAndroid.java | 47 +++++++++++++ .../RetroShareServiceControlActivity.java | 64 ++++++++++++++++++ retroshare-service/src/retroshare-service.cc | 9 ++- retroshare-service/src/retroshare-service.pro | 3 + 18 files changed, 296 insertions(+), 46 deletions(-) create mode 100644 retroshare-service/data/retroshare-service_128x128.png create mode 100644 retroshare-service/data/retroshare-service_48x48.png delete mode 120000 retroshare-service/src/android/res/drawable/retroshare_128x128.png delete mode 120000 retroshare-service/src/android/res/drawable/retroshare_48x48.png create mode 120000 retroshare-service/src/android/res/drawable/retroshare_service_128x128.png create mode 120000 retroshare-service/src/android/res/drawable/retroshare_service_48x48.png create mode 100644 retroshare-service/src/android/res/layout/retroshare_service_control_layout.xml create mode 100644 retroshare-service/src/android/src/org/retroshare/service/AppUpdatedReceiver.java create mode 100644 retroshare-service/src/android/src/org/retroshare/service/BootCompletedReceiver.java create mode 100644 retroshare-service/src/android/src/org/retroshare/service/RetroShareServiceAndroid.java create mode 100644 retroshare-service/src/android/src/org/retroshare/service/RetroShareServiceControlActivity.java diff --git a/README-Android.asciidoc b/README-Android.asciidoc index 40efe9c12..f64336c1c 100644 --- a/README-Android.asciidoc +++ b/README-Android.asciidoc @@ -252,3 +252,4 @@ your work-station running - link:https://source.android.com/devices/tech/debug/gdb[] - link:https://fw4spl-org.github.io/fw4spl-blog/2015/07/27/Native-debugging-on-Android-with-QtCreator.html[] - link:https://fragglet.livejournal.com/19646.html[] +- link:https://github.com/android-ndk/ndk/issues/773[How to build without using standalone toolchain?] diff --git a/build_scripts/Android/prepare-toolchain-clang.sh b/build_scripts/Android/prepare-toolchain-clang.sh index 158d3b28a..d767b617e 100755 --- a/build_scripts/Android/prepare-toolchain-clang.sh +++ b/build_scripts/Android/prepare-toolchain-clang.sh @@ -14,7 +14,7 @@ function define_default_value() ## You are supposed to provide the following variables according to your system setup define_default_value ANDROID_NDK_PATH "/opt/android-ndk/" define_default_value ANDROID_NDK_ARCH "arm" -define_default_value ANDROID_PLATFORM_VER "21" +define_default_value ANDROID_PLATFORM_VER "16" define_default_value NATIVE_LIBS_TOOLCHAIN_PATH "${HOME}/Builds/android-toolchains/retroshare-android-${ANDROID_PLATFORM_VER}-${ANDROID_NDK_ARCH}/" define_default_value HOST_NUM_CPU $(nproc) @@ -35,7 +35,7 @@ define_default_value LIBUPNP_SOURCE_VERSION "1.6.25" define_default_value LIBUPNP_SOURCE_SHA256 c5a300b86775435c076d58a79cc0d5a977d76027d2a7d721590729b7f369fa43 define_default_value INSTALL_QT_ANDROID "false" -define_default_value QT_VERSION "5.9.6" +define_default_value QT_VERSION "5.12.0" define_default_value QT_ANDROID_INSTALLER_SHA256 a214084e2295c9a9f8727e8a0131c37255bf724bfc69e80f7012ba3abeb1f763 define_default_value RESTBED_SOURCE_VERSION "4.6" @@ -95,6 +95,15 @@ build_toolchain() ${ANDROID_NDK_PATH}/build/tools/make_standalone_toolchain.py --verbose \ --arch ${ANDROID_NDK_ARCH} --install-dir ${NATIVE_LIBS_TOOLCHAIN_PATH} \ --api ${ANDROID_PLATFORM_VER} + find "${PREFIX}/include/" -not -type d > "${NATIVE_LIBS_TOOLCHAIN_PATH}/deletefiles" +} + +## This avoid include errors due to -isystem and -I ordering issue +delete_copied_includes() +{ + cat "${NATIVE_LIBS_TOOLCHAIN_PATH}/deletefiles" | while read delFile ; do + rm "$delFile" + done } ## More information available at https://gitlab.com/relan/provisioners/merge_requests/1 and http://stackoverflow.com/a/34032216 @@ -230,7 +239,8 @@ build_openssl() # sed -i '/LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \\/d' Makefile make -j${HOST_NUM_CPU} make install -# cp *.so "${SYSROOT}/usr/lib" + rm -f ${PREFIX}/lib/libssl.so* + rm -f ${PREFIX}/lib/libcrypto.so* cd .. } @@ -315,9 +325,10 @@ build_restbed() cd .. rm -rf restbed-build; mkdir restbed-build ; cd restbed-build - cmake -DBUILD_SSL=OFF -DCMAKE_INSTALL_PREFIX=${PREFIX} -B. -H../restbed + cmake -DBUILD_SSL=OFF -DCMAKE_INSTALL_PREFIX="${PREFIX}" -B. -H../restbed make -j${HOST_NUM_CPU} make install + cp "${PREFIX}/library/librestbed.a" "${PREFIX}/lib/" cd .. } @@ -329,6 +340,7 @@ build_sqlite build_sqlcipher build_libupnp build_rapidjson -#build_restbed # qmake build it already +build_restbed +delete_copied_includes echo NATIVE_LIBS_TOOLCHAIN_PATH=${NATIVE_LIBS_TOOLCHAIN_PATH} diff --git a/libretroshare/src/libretroshare.pro b/libretroshare/src/libretroshare.pro index 0bbc52969..cdc1f2326 100644 --- a/libretroshare/src/libretroshare.pro +++ b/libretroshare/src/libretroshare.pro @@ -881,21 +881,23 @@ rs_jsonapi { WRAPPERS_INCL_FILE=$$clean_path($${JSONAPI_GENERATOR_OUT}/jsonapi-includes.inl) WRAPPERS_REG_FILE=$$clean_path($${JSONAPI_GENERATOR_OUT}/jsonapi-wrappers.inl) - restbed.target = $$clean_path($${RESTBED_BUILD_PATH}/library/librestbed.a) - restbed.commands = \ - cd $${RS_SRC_PATH};\ - git submodule update --init --recommend-shallow supportlibs/restbed;\ - cd $${RESTBED_SRC_PATH};\ - git submodule update --init --recommend-shallow dependency/asio;\ - git submodule update --init --recommend-shallow dependency/catch;\ - git submodule update --init --recommend-shallow dependency/kashmir;\ - mkdir -p $${RESTBED_BUILD_PATH}; cd $${RESTBED_BUILD_PATH};\ - cmake -DCMAKE_CXX_COMPILER=$$QMAKE_CXX -DBUILD_SSL=OFF \ - -DCMAKE_INSTALL_PREFIX=. -B. -H$$shell_path($${RESTBED_SRC_PATH});\ - make; make install - QMAKE_EXTRA_TARGETS += restbed - libretroshare.depends += restbed - PRE_TARGETDEPS *= $${restbed.target} + no_rs_cross_compiling { + restbed.target = $$clean_path($${RESTBED_BUILD_PATH}/library/librestbed.a) + restbed.commands = \ + cd $${RS_SRC_PATH};\ + git submodule update --init --recommend-shallow supportlibs/restbed;\ + cd $${RESTBED_SRC_PATH};\ + git submodule update --init --recommend-shallow dependency/asio;\ + git submodule update --init --recommend-shallow dependency/catch;\ + git submodule update --init --recommend-shallow dependency/kashmir;\ + mkdir -p $${RESTBED_BUILD_PATH}; cd $${RESTBED_BUILD_PATH};\ + cmake -DCMAKE_CXX_COMPILER=$$QMAKE_CXX -DBUILD_SSL=OFF \ + -DCMAKE_INSTALL_PREFIX=. -B. -H$$shell_path($${RESTBED_SRC_PATH});\ + make; make install + QMAKE_EXTRA_TARGETS += restbed + libretroshare.depends += restbed + PRE_TARGETDEPS *= $${restbed.target} + } PRE_TARGETDEPS *= $${JSONAPI_GENERATOR_EXE} INCLUDEPATH *= $${JSONAPI_GENERATOR_OUT} @@ -968,12 +970,6 @@ test_bitdht { ################################# Android ##################################### android-* { -## ifaddrs is missing on Android to add them don't use the one from -## https://github.com/morristech/android-ifaddrs -## because it crash, use QNetworkInterface from Qt instead - CONFIG *= qt - QT *= network - DEFINES *= "fopen64=fopen" DEFINES *= "fseeko64=fseeko" DEFINES *= "ftello64=ftello" diff --git a/libretroshare/src/use_libretroshare.pri b/libretroshare/src/use_libretroshare.pri index 64d6dbce0..855bc0d48 100644 --- a/libretroshare/src/use_libretroshare.pri +++ b/libretroshare/src/use_libretroshare.pri @@ -50,14 +50,17 @@ dLibs = rs_jsonapi { RS_SRC_PATH=$$clean_path($${PWD}/../../) RS_BUILD_PATH=$$clean_path($${OUT_PWD}/../../) - RESTBED_SRC_PATH=$$clean_path($${RS_SRC_PATH}/supportlibs/restbed) - RESTBED_BUILD_PATH=$$clean_path($${RS_BUILD_PATH}/supportlibs/restbed) - INCLUDEPATH *= $$clean_path($${RESTBED_BUILD_PATH}/include/) - QMAKE_LIBDIR *= $$clean_path($${RESTBED_BUILD_PATH}/library/) - # Using sLibs would fail as librestbed.a is generated at compile-time - LIBS *= -L$$clean_path($${RESTBED_BUILD_PATH}/library/) -lrestbed - win32-g++:LIBS += -lwsock32 + no_cross_compiling { + RESTBED_SRC_PATH=$$clean_path($${RS_SRC_PATH}/supportlibs/restbed) + RESTBED_BUILD_PATH=$$clean_path($${RS_BUILD_PATH}/supportlibs/restbed) + INCLUDEPATH *= $$clean_path($${RESTBED_BUILD_PATH}/include/) + QMAKE_LIBDIR *= $$clean_path($${RESTBED_BUILD_PATH}/library/) + # Using sLibs would fail as librestbed.a is generated at compile-time + LIBS *= -L$$clean_path($${RESTBED_BUILD_PATH}/library/) -lrestbed + } else:sLibs *= restbed + + win32-g++:dLibs *= wsock32 } linux-* { @@ -79,3 +82,11 @@ LIBS += $$linkStaticLibs(sLibs) PRE_TARGETDEPS += $$pretargetStaticLibs(sLibs) LIBS += $$linkDynamicLibs(dLibs) + +android-* { +## ifaddrs is missing on Android to add them don't use the one from +## https://github.com/morristech/android-ifaddrs +## because it crash, use QNetworkInterface from Qt instead + CONFIG *= qt + QT *= network +} diff --git a/retroshare-service/data/retroshare-service_128x128.png b/retroshare-service/data/retroshare-service_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..84ef9e84bf4de95b1f846a66702f2aef93beab2f GIT binary patch literal 8200 zcmWkz1ymJH6yC>sbW0=oK)Sp00U`}j($Yvu_amePk?s(XZlqh3?ha`w>2CPnzh`IX z?4G-G?%bKV@qLl%stVW`$?H~80r58D&%+BLwqE2lhbq4a*XfX!KVJ=`fJVkeP#^T*vFEV$EKGEG7 zmk8dg;@rCCKcfHo4f_sT;xuSRph)DNaX4tfQc{LeFR(0V6^mLw2zN@Ro1!i6mHsQG zf1;8Y+dQ|KF*x>B4&1Ns6y9kIeO8O3x21(66YJi`tsYCRZivLLFZ~p^AS2;+rUDg# zNzv8_0bAfF5Dc)O7mvdol$l(8tGfk*p#wiy8JzAEGUGRX)d$0cYojp%G{V+m zOeqw2HdZu)DKR&VV17qa<|?q+{OR`M8`(?MsN96qXYQhcrjwUQ0pMKJy1mlct|s&@ zmET(r+}uw$>Jse^1xVd)Q;ggyF2YJB9Da&jP(YlmER{Phi2pYzVCtIrdggv!5#Nob z!*fB4VvVtj37M;_x3Kc7oINX!b6oaMM!9k6Kdniwf3eDuofS~|(~#FL?*(c(HM$d^ zyMUiTQ#f5PE@)n$E&|NG{wx>QpY zA=zNAhB_76wV;g{Kkaf~gfQJT^2tj;*R6rFk4DUQ6@_a4>P!)T9(KxbG!}{~y7WcB zq6Vzi*gkItWny7@lS0488BhOxae1~tF+mLQd1u6l|6L_ZgkMG13|oz+<ezUH79SrkU-plah2`AW^I*f7!mib&rLG`D+}utgk9YmF+~U@IC#~5z;IFN9 zF}AqSwySZW7UF6RNQETmkkD6>0>|X(YRO6PRcTdq^$DBG)RFuJ_I~Y4ljUAzX%i;} zb_@o&I)eVoEv@n7p!JFFsW(430ibDo>mxfW!kCe|UHg~WjEa*ODpL)>jc`jf0MPi4 z?~V#cb28)idc(2nz>4vj%Z{GRa7CX%f{8?RrVE`V4Nqz5?vi-=_WogNq|~5F(SDIH zKLY4PmLSXH6RZ7`jsJETyKvXuhr}B1dbFkx6A=+@|NYCPt*zb2eI61aqVZsX_ou|! z%H!Cc*R6-pXs|&UBGLyOy4W%i`jnNHmXh$|)(uvE`8D-8Ju1+R2f+ffy^t=W>M94` zHGNHRuGzzSI}xJZIk6^f9>!7N5*Iq!r3B^RTHX4AIBD9#^4IkU9No!fm%c`$BxM>!{2v#9 z?c-=_Cbt*XpLUe)q-5le-{CY;39{o*X$Wq>=WTycjmAv^DJ`}d2~Z5|0-v{24R-uV z=G)k%vaC6`|DBs>&rKd{obRGTW%-dgPp#`@i)iZwth^NsanFBv z#joqLp$g?b?h zqp#gD1q&j+oY!jp%Fg@x5Rg#r(O)#mgEo)8dqeT(o-CGx;s(HKG#cV(Zbx~4^RQFB z`b=*pVUkjOgQ2Z`{I1?E>D$rfu(jv5wO6Q#S0>-9sY8l2MNhpB_1@tKCLY7Qseh#o z(%=RpbXc`1_&FIO7W^f(9v$a`y$!qXnQ6(VZBEy2lzPwzueAWFLO`m!1N-$AO z^6f#l70qauvoxHVhNjZfPGS6FMCZW&^!h&S)~9pzc?BIgna#yQ8;6RWOUj4bHQd&~Yt`E?w`u!wTprT7 zGE!tQn~!1C4@%Ph(`tkC$b3hwEF7Cc4dXLhB7CgXa`92~4W!X<&JDaarukRy<|;Tx39no7k5+Ry>^iR7Hg+pt8mcP{HTd^QOPp6XdTSqid<2 z(VoZm*uZt*i~>&XvBlKD_OYn1QFKL;!KB95CgzRto~wpG2I`}$c+{(p9xq~o!}2=6Q|N-^wv$4O@=gjpE#yy<`g4B7IocI z5(I*|ti1!Siyg0hXel%%1{dhaNTWGf_Sf;ynr$7qNV_A5?Xg%5=t>*-*hI3KbNHJ& zzCXx^T;4MzY?yZ#Gxvc|j%t5eWlh_VSNh%9i@4NO5dEO(5=HOdXDW+_8KtU00Sif; zC$gYE1HEhG3294N*C`zSx~u8!{jk6fX3Kp|oL#(RHzaTh(SJ_AtqV5N!x_fsA~B+V z2^|)#4`Tz)H>pMvd1yg%px5${8DJ3YhpLvX%5q@LW5ZTnmRO?N5HZ9HjQ<4by{ukI z>i7cW%)=S|6BOqtv>^+`O}3cb6(>kHjSOh}$SU_nKT!h;(xj>JPeo#EjQkJhM@}?~ zlvjzjv|ho5J8@4ESj<4&^z@uzB2Y1A9;)lDDOx(*s9ihOP;}@1RA6mYxc-uQ#@Z5s zA81#GU!4}@j^t$|@4p$odc%-$CRY0y_1qQ=|9OujrblO}7M%kk1!V<~|K&>WSPlzY z-fF!w@pkQSf~37GEZFE$8|uq|wB3yBwSa(+RG8%;uKJn7cA$zb&)rP`(CBji|K>*Ak1LA<4`1dfzk5+h$y~E&##4 z8Qzu6LI&xGfG(`Ix8mv9n>V6Z?PD2>ZgPS{EoK6yV0Rsh94b>BT<3ubDk1|-!w31y-Ll93*p*;m;E+#}G2dcA{qocYScEeTBPrRii$Z!u z&e2rvo-_VOt)~ZlP9R@dV$}9qOCNTkU^)$b%e#K5vS)RwPTT{`X^Z!~PyoE%j0+wrTJ}7+>$AKuY|Zy%(_r zMd0+X<>w~wSsc0O;?$?SlADerylIb*06NXTBjQ<=083BnXe$GsPl1SZ_&0VGQLb{( z?ctr#<$2$+gMUzjM@D&>(fd(!{#U`2YQwU-;}W8a_9+oi^T0#g7MUgpba2F@)Aw}W zms449o@zTx=3Cb36%8M$0ShsuhSLsh^WN?%`(-F~W}1UbP;@6(E_1Qh-JH#QbN3ey z^GQ<2-ls)7rc#NNfHj-guN=wld3Zkc2hu+%S;tR})fm@^kuQc%XsQ%YMiCJ^A^f6i zzGH!OS{xf^EwoL1_>XD*sTA~CMx|%2iu2dg_gI+(?0c47c}r|biV`{PM>8AyKi68h z#dsY0wfBZEho_V@_Ok{YV*><`q&kx`ATlimu+;;?%mq;b60E`Bav^Hn#S;3vISEn9 zjb8SO+1ka^8Jb*p^2CuKTc9rSi16qco5lqncY9jBn3N}0gPPapa@N)(M!7L=B-fk zRgrXF)T`#lgMekOi$u3fL{-QR05|HvYNF2-;=t!^Kg*ETCtpaFU zd9yvk9K2l?^W!5NE3PCS%uHf!7JGyVBgF`IlG&Mc;?D$dC?Cl0m&$oCvfoCO=$}|z z`*`kFJqe8oMql-MQvm7#Lu)>l%~ig*gWum2g|Okvgc&G*AQf1*@{8kQ%u7myLE{YO z%JsEepXvjfO}NrZ3%S{ba>m5V*hUX48H4p~zR^GtH-Az$49RBwycxW&nQSjv?`d}j zDx%T*2v6)|77^`N%tL6%&dx60Ftqm(t&s99dCy?V;hzRMh{qA-%SFChi`j_uQu5}U z@>=%&O@Y(QzD?o$dPG^dyeZaW|4F5md@e2-u|-4bcyE54?7gBMBRlI!ebsu8bJ27q zD)&v6=WBWaMps2ZXQ21eOY6>-{b0fgvq2AS^S7uO#En|Nk_pTX4$x~0)p8t#X8vsJ z%a(n>5xmmnt1oM5OG3;MzXk#T%&^9^iYAGIX+K}30L!*}n1vDs$iOJlkYi4rcPwdy zQp3Her6ecM&PWkW8?d^2eA53gTOQe36Tji6%(Enwz!pexyn;X&VA}+0VvR@!a=E4d zUe}E!BmTUU4ZUYg7pASQ57OooqWHqQ(f-ID?aS~r{m3I-;v|>(#jS3eudS`EENDJn zcu5BzFV2kmX4cPn20qxc-cKXSlpR?1_zbAOd-sob9H3Xcqquw6Rm&1~-CnaC zO7^!bcxq@1JpAgfmF&kaL?>77EPPQx2cav~$A1gDv9z@aYEhCW^=jg5-BRqG5W z(T7r#$5aRoj1ua5d>^~Ie{|KUG)z;ssKKLoSR8f*#_^)~>~jR)tF_&y7aE!8iu53` zugI=LkIwMjNP3@CCdGJ5t&9;t>s@CnhFNgKfr6X7MiMMt7~wRb}Jer zLJ>JSLuwOaMAKxA`QQ3^Zz~O@gJ2>hk?LM+uwMu;L>O6hCRPPj2$jqOhdp-kVOEC>IO^)HdJ z@ukSG{-ov)Uv_D<0*9*ePKnw1j}&=fZuvp~k~36v%`u=p$m3aC7S2qBEra$3r}KVO zT>u1zX%HC==p@zlO=<6*T&aK@-W&VLsZKYu6DbZKE6EXVqk{$2CviiT1p3sku)zN z*<4$f>&Mf|(;}V@&To6~{UnB_1{|AdkMA=Tkb2g7$thy)N{+mVuW&Ld1^2XAZ~P~c zMDkl=>WVnKnt3+K@d}5!kO3Z^NzJ&4QE%GP!aU&@^5*oRrcJj^r*CBIUMzZV_MfE^ zb3GIH;y}Guq!u<`FS<akPJr&jNfEc6Hn2{*H5|O*)#!;t z(!*P;f&9TVWr&~u6`7qe9=d1>Ce;2NME4Dw+K~4mvti3>IMt<)1}y{YNB!*abq3C) ziVt{T-B}Drs&Sv2m$Q~vz9mI|nZhNyzKExbT+R^^FTW1@L-tMU6B28O@0Z^(NM| zaEPX?6+reE$u9g0mvk zR-YjlfdJp-Pm$9pi#V@!NtV~rQX#6W=@Q55>3pylpaCjyEpUF$BFOlhTrG=|9L!zQ z?sLFk{g?hC`(sFD?eK#=!gsDbW_Z+0x7+`YBH{#jt@b0%trh|~ebiaR|9rP3KU?ZJ z_Z^bhNDKg2FGD41q)ELMTn3wUY4)Q-yJzZ4ONk9;3TGt3hKF5Jq&KBu*9fPX!Pc+^ z`RDXfpH+0mwgOq*aC8S4Zyz-ih3&E~<8ZS(A`t@fLS`}t30lhhw%T%ly1F`7O2iY% z_OI{w6Nlfwe|HhLFYmqP`1}z?0Eu*2!{Og|k0H_d#`0zRhOsX%1&_8l_!(X!SQ;9x zbFFy#SM?`m5Ml7#H%tV9^HE+ktVrScD(XRj2Jfb5Y)2`en{xpJkcuyO8M&*kM^}2T zCi!?V97m^6`Fu9S=^&c)yN}H#$%{y;(#U}x8UNQb)^s45AQdu4>-;)P)&;g)p*b|Z6@*7vpxzQ*+S8NloZJX z<=C&&xYpsoI~R0bCw4Zr%=fa(cyM8l=?|~yg}%BMR^DWJ5BQNQ2jU>APwa>zvU#%K ziM_*h=Vxb{h$c}|TwF~rFww_WoTP_!pYkao41#Lc$Z$pZDvui#hhkStLu11DK}K2m z5pG;{O>WgthHCRUVpqUX4zYw|<;7f@UnT&1$+KPz&HF5n^z@D)4A#lS#B^hlFCM&3 ztr1_aH~hfEM*fz3?JbmrnTbj7=+Z|8wFL>lS8fe)=L_BqE((8QCx*6^w6#4*%Q}$q z4{n|&a=U68qzp*GjICBQ)zzyTs;kEhS4_j$U7kGFNBRGbbd0S#lP)X@a{RwTt)MKS zk*`TuY4e!V3;o|AqfX<;_W<$74HLa8;LEBaWVX@N<3gyOS0Y5N{}uOwUXNr)E%Ht4*^4 zasaRJh(U<-{EEo0HleQLt~Gq_EXB*BA&q7Ro#Z7Z*bfuDP(`c!&V&_FA(l|0-Mhf) z5WoXzp8q15kwbNl-}$xm%Yu}UkwDu>XuGD$n2`@CqXG ziv1e>QG?)=hHcb>G-v-{^-kdKq*zvQX=mmoQhV}GQ270%hleIwJxPm)O zZV7X3QB!ZBq7Xpuz?}4RiB?fz^YW24@Q(UzJr!KH3fRz4S9cb`H$q(_PZf&t=sJ+3 zakZISRuXBEaF)`Z87R}KsNGVA<$_@VMQ1JyM%}c0G^F(AO}vog4h#{`xck?g|0mpl zLMeqNKf6^itmeHjqgp}r9_a(04U(C6O}3L~TSH5tU|L%d3(=;$JQ*r}yXluvc}>8u zL5o|-H!)wI`F3B=!%Cyp!T;GS`55v`U2Sb&;LwR|NCBs3xdK;A997Rjb#mIt*U9qn z3b%@xoqgHX)4=GMs2WW%o)}5*YjI|3a*SEyBjtNL9z|#NFnni$4Z~H7$qWJ(W|5z~ z#Y*{nGwZE_Pe^)h&UV$5N%%YTGHTPRAB1(55J;bnMj8)|xuj=-8_G2>VOXA_7{K0s)oQ(#T_wS2R4b z$%gFvclt*j-QDbFlVBg;nM~$)?)Tht&hOseJ?GxLicc9Hk7ol=nW%Zs&gGh z83!vXltxR&5vZ=Np3>|5_%zM?=vn4Q1k>suc-H5*@QaJdb&VQnHz;_}lCI$g&%SrN z89n{5ZPaL+vf7CT{B#}I#mVjKF=G)(@4P6bcA2JW0B`BK-Wm#pKAtsemVe96mcrl{ zzP!*{Q1W$$yWoQSQ7)%T)37?6BX%A@z?n1xOLoZ3n#AihO}D32Fire_e}lv89s<+s z6Gud(J|2%h@X9N%9O)BY^!NvtFxp^pxk_*$^aceQ}DU*`HaaO{O#H-7S1jl z$qEXkdRD2_bn0OVuF0d#;d;nylQfgy7 z*!}9JuUrxstdF`fb)s&wR7OYfO@tqjx=f2;M#DRFyJP9SWolDmljTgD2QYy~wX9j>Oac&L>*|^6ioWOG4NZlJtST)nU0q*aAI;WB!Trs7*f{}MfEdU-1?>lq zp7&4RjgFwdkJc6l1jcXKvSq-ACdL^+6mO>yTa{9Et*x!wYHDgeo3#(Sy1LhSdj6|9 z?FEx=47ewBCeVsqE?0S~t_J*LM4khJu=O+F;nG3!l|xK{QACyS!gz3mD}xpr>3Un{Im>F>GsfnwMPOk zr^r@#JRV8>)4E#^_)lzIH*Dua(Fp!v7X?no@2+{SWl?qwW}2qC)8p|hsjaQ;&u(LW zwPPBJNvULkKWmz{BU`5$K~m^-J&FA_=YYfBqN#DaY ze}4Z}SEQiLs;iu2O~GN+_3okxWgKhCW_PPn>K6YEE4`yMH6WJ;!|@FOwY9Z+C=?p- zvJx?rW0jRRhJd9Ghhw(S=WDSmYEuaUL{X0dgu~%U z*?i2nHYec1RKdo|vX1g+c9#~9%4@aiT2dhxjhmS|-JxmPH`c9N*PnM>4t+q9>yE^O zI~GoTFO%(5SPa8h3M}mt)YjJKg+if|^lnaoi>s@v$2T=K9ZghxYvG0Mmo@AeKiX|? z8Rf8!?vqF2CMi4JC{Py&1lA;$0p(Bs{i0l}#gXbzXC#_fTBjzipBaXcwDB4+JZsmk z?ErQqh!ikCl?SkW(TtOaT7wh)!AKiGXDEs!lvZ7?65gMA+tI(yUhza~4TIJG{d9ds zV&?PEGyg^8ODW9*in+A&ODXko%JXex*z|nxy$iYy`lFNm!D!ow(-8nnrEzG|mF%8* z8v%Fe#F$OnT(o9;(zldj(FSDSxM?D0`{MwiP^cOhm(cvN!{Hc^tkOU2j!wSIX^XOA+7c@p!(LEeJgl@}lHb zg?8O{DlVB#!YY>yy3>7ANyWm#1W~8WW?P<#pD}=niV6qm-`L|`ulKsaoH((hJkWmU z%&Ko+aq&qdtjg+j3X02bAg8q7v?Usi&d9_~8$d-xg~RQ3zYJWHrr9YX>%3m??b#gB zbbbt2hv0KEl%lBohQ6m9z^JaSu1HHw74)9@zYJ8R;iuS9F93J=e7<9;ZMDyfKJ{Ea z0Y(qh%nmae=7Tj0k)Fe3fYVB;`97cT%|zaS5wO{8#lUBVVnjr45RsPZ>goros;ZLC zg{DrVbfnG$XjVJ+!o)N{u4$T|PvxaeP74++IL|cAEg~|UiwhHY1K0p;KljFEx@+p^ zHw?$=RP1k9#_5B9>v2@6pZa{hdr~=Rzk$Za#{H&gUIiRY*ADDWBh!Gnz9Wgz43VbDj;coE2VyJ7{)Z<7T|Cu{Yc;x@!+5ba)ZK* zh6$f)1-PfFsp;pLc!Sp3>({UUu=gmV6`=Q$uMQByFrIWc9Fyq@)tsJo3_mk2b8n zYjHN>nI4S}KCc+UBHU;w8^zalF9&W$?0&Sro;Pcs9UjP6A07*qoM6N<$g0FMYL;wH) literal 0 HcmV?d00001 diff --git a/retroshare-service/src/android/AndroidManifest.xml b/retroshare-service/src/android/AndroidManifest.xml index ca062305c..7a3930f89 100644 --- a/retroshare-service/src/android/AndroidManifest.xml +++ b/retroshare-service/src/android/AndroidManifest.xml @@ -1,13 +1,34 @@ - - - - + + + + + + + + + + + + + + + + + + + - + + + + + + - - + + + + + + + - + @@ -33,7 +64,7 @@ - +