diff --git a/.gitignore b/.gitignore
index 25ed36579e..08f6e53da2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,8 @@ build/
user.gradle
local.properties
.directory
+bin/
+.project
+.classpath
+.output/
+.settings/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000..fff35a132d
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,37 @@
+image: "registry.gitlab.e.foundation:5000/e/apps/docker-android-apps-cicd:latest"
+
+stages:
+- build
+
+variables:
+ GIT_SUBMODULE_STRATEGY: recursive
+
+before_script:
+- if [ -d "/srv/userscripts" ]; then cp -R userscripts/* /srv/userscripts ; fi
+- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
+- eval $(ssh-agent -s)
+- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
+- mkdir -p ~/.ssh
+- chmod 700 ~/.ssh
+- echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts
+- chmod 644 ~/.ssh/known_hosts
+- export GRADLE_USER_HOME=$(pwd)/.gradle
+- chmod +x ./gradlew
+
+cache:
+ key: ${CI_PROJECT_ID}
+ paths:
+ - .gradle/
+
+build:
+ stage: build
+ script:
+ - echo sdk.dir $ANDROID_HOME > local.properties
+ - echo mapbox.key $MAPBOX_KEY >> local.properties
+ - echo mapbox.enabled true >> local.properties
+ - export TERM=dumb
+ - export JAVA_OPTS="-XX:+CMSClassUnloadingEnabled -XX:+HeapDumpOnOutOfMemoryError -Xmx4096m"
+ - ./gradlew assemble
+ artifacts:
+ paths:
+ - play-services-core/build/outputs/apk/
diff --git a/.gitmodules b/.gitmodules
index 53ff74d8b6..7baca207ed 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,15 +1,20 @@
[submodule "extern/UnifiedNlp"]
path = extern/UnifiedNlp
- url = https://github.com/microg/android_packages_apps_UnifiedNlp.git
+ url = https://gitlab.e.foundation/e/apps/android_packages_apps_UnifiedNlp
+ branch = dev
[submodule "extern/GmsApi"]
path = extern/GmsApi
- url = https://github.com/microg/android_external_GmsApi.git
+ url = https://gitlab.e.foundation/e/apps/GmsApi
+ branch = dev
[submodule "extern/Wearable"]
path = extern/Wearable
- url = https://github.com/microg/android_external_Wearable.git
+ url = https://gitlab.e.foundation/e/apps/Wearable
+ branch = dev
[submodule "extern/GmsLib"]
path = extern/GmsLib
- url = https://github.com/microg/android_external_GmsLib.git
+ url = https://gitlab.e.foundation/e/apps/GmsLib
+ branch = dev
[submodule "extern/RemoteDroidGuard"]
path = extern/RemoteDroidGuard
- url = https://github.com/microg/android_packages_apps_RemoteDroidGuard.git
+ url = https://gitlab.e.foundation/e/apps/android_packages_apps_RemoteDroidGuard
+ branch = dev
diff --git a/extern/GmsApi b/extern/GmsApi
index 2a43448e49..c6448e7c55 160000
--- a/extern/GmsApi
+++ b/extern/GmsApi
@@ -1 +1 @@
-Subproject commit 2a43448e49dc0aec0d6c53c8a27dd58245fdaba6
+Subproject commit c6448e7c55ff95c49a6affe2e514ef96b0a30bf3
diff --git a/extern/GmsLib b/extern/GmsLib
index 15cd4491bc..614e111fa0 160000
--- a/extern/GmsLib
+++ b/extern/GmsLib
@@ -1 +1 @@
-Subproject commit 15cd4491bcca57d627796b35b69bdf8c97564792
+Subproject commit 614e111fa02b9aeb195879735ababe869074617c
diff --git a/extern/RemoteDroidGuard b/extern/RemoteDroidGuard
index 47073dd7a2..0c5c944a54 160000
--- a/extern/RemoteDroidGuard
+++ b/extern/RemoteDroidGuard
@@ -1 +1 @@
-Subproject commit 47073dd7a2a039593fe556af8f9f33e325febfa7
+Subproject commit 0c5c944a54962a4c60cffa44785a36d7251df635
diff --git a/extern/UnifiedNlp b/extern/UnifiedNlp
index 82479b79c7..5516c49cb4 160000
--- a/extern/UnifiedNlp
+++ b/extern/UnifiedNlp
@@ -1 +1 @@
-Subproject commit 82479b79c76353f532e0c6edd0d1dee8d49c48f4
+Subproject commit 5516c49cb40d5008bd76a0818bb856da1b134f05
diff --git a/firebase-dynamic-links b/firebase-dynamic-links
new file mode 120000
index 0000000000..2b9de59721
--- /dev/null
+++ b/firebase-dynamic-links
@@ -0,0 +1 @@
+extern/GmsLib/firebase-dynamic-links
\ No newline at end of file
diff --git a/firebase-dynamic-links-api b/firebase-dynamic-links-api
new file mode 120000
index 0000000000..30d4bb017b
--- /dev/null
+++ b/firebase-dynamic-links-api
@@ -0,0 +1 @@
+extern/GmsApi/firebase-dynamic-links-api
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000000..e08c81d314
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1 @@
+org.gradle.jvmargs=-Xms512m -Xmx4096m
diff --git a/play-services-appinvite b/play-services-appinvite
new file mode 120000
index 0000000000..3147eb928f
--- /dev/null
+++ b/play-services-appinvite
@@ -0,0 +1 @@
+extern/GmsLib/play-services-appinvite
\ No newline at end of file
diff --git a/play-services-appinvite-api b/play-services-appinvite-api
new file mode 120000
index 0000000000..e6b639d2f5
--- /dev/null
+++ b/play-services-appinvite-api
@@ -0,0 +1 @@
+extern/GmsApi/play-services-appinvite-api/
\ No newline at end of file
diff --git a/play-services-core/build.gradle b/play-services-core/build.gradle
index 0aef5a42d7..0a16720d9b 100644
--- a/play-services-core/build.gradle
+++ b/play-services-core/build.gradle
@@ -45,8 +45,10 @@ dependencies {
implementation project(':play-services-api')
implementation project(':play-services-cast-api')
implementation project(':play-services-wearable')
+ implementation project(':play-services-appinvite')
implementation project(':unifiednlp-base')
implementation project(':wearable-lib')
+ implementation project(':firebase-dynamic-links')
implementation project(':remote-droid-guard-lib')
if (useMapbox()) {
@@ -101,6 +103,10 @@ android {
}
}
+ lintOptions {
+ abortOnError false
+ }
+
lintOptions {
disable 'MissingTranslation', 'InvalidPackage', 'BatteryLife', 'ImpliedQuantity', 'MissingQuantity', 'InvalidWakeLockTag'
}
diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml
index fa15b34636..e15987b44c 100644
--- a/play-services-core/src/main/AndroidManifest.xml
+++ b/play-services-core/src/main/AndroidManifest.xml
@@ -442,7 +442,7 @@
-
-
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
@@ -683,6 +695,8 @@
+
+
diff --git a/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteLoaderImpl.java b/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteLoaderImpl.java
index 43bd5cafed..a841984c76 100644
--- a/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteLoaderImpl.java
+++ b/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteLoaderImpl.java
@@ -66,6 +66,10 @@ public int getModuleVersion2(IObjectWrapper context, String moduleId, boolean up
Log.d(TAG, "returning temp fix module version for " + moduleId + ". Cast API wil not be functional!");
return 1;
}
+ if (moduleId.equals("com.google.android.gms.maps_dynamite")) {
+ Log.d(TAG, "returning v1 for maps");
+ return 1;
+ }
Log.d(TAG, "unimplemented Method: getModuleVersion for " + moduleId);
return 0;
}
diff --git a/play-services-core/src/main/java/com/google/android/gms/common/security/ProviderInstallerImpl.java b/play-services-core/src/main/java/com/google/android/gms/common/security/ProviderInstallerImpl.java
index 6d702279f1..cb8d856029 100644
--- a/play-services-core/src/main/java/com/google/android/gms/common/security/ProviderInstallerImpl.java
+++ b/play-services-core/src/main/java/com/google/android/gms/common/security/ProviderInstallerImpl.java
@@ -46,6 +46,8 @@
public class ProviderInstallerImpl {
private static final String TAG = "GmsProviderInstaller";
+
+ //private static final List DISABLED = Collections.singletonList("com.discord");
private static final List DISABLED = Collections.unmodifiableList(Arrays.asList("com.discord", "com.bankid.bus"));
public static void insertProvider(Context context) {
diff --git a/play-services-core/src/main/java/org/microg/gms/appinvite/AppInviteService.java b/play-services-core/src/main/java/org/microg/gms/appinvite/AppInviteService.java
new file mode 100644
index 0000000000..8270f78ab4
--- /dev/null
+++ b/play-services-core/src/main/java/org/microg/gms/appinvite/AppInviteService.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.microg.gms.appinvite;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+import android.os.RemoteException;
+
+import com.google.android.gms.common.api.CommonStatusCodes;
+import com.google.android.gms.common.internal.GetServiceRequest;
+import com.google.android.gms.common.internal.IGmsCallbacks;
+
+import org.microg.gms.BaseService;
+import org.microg.gms.common.GmsService;
+import org.microg.gms.common.PackageUtils;
+
+import org.microg.gms.appinvite.AppInviteServiceImpl;
+
+public class AppInviteService extends BaseService {
+ private static final String TAG = "GmsAppInviteService";
+
+ public AppInviteService() {
+ super("GmsAppInviteSvc", GmsService.APP_INVITE);
+ }
+
+ @Override
+ public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
+ PackageUtils.getAndCheckCallingPackage(this, request.packageName);
+ Log.d(TAG, "callb: " + callback + " ; req: " + request + " ; serv: " + service);
+
+ callback.onPostInitComplete(0, new AppInviteServiceImpl(this, request.packageName, request.extras), null);
+ }
+}
diff --git a/play-services-core/src/main/java/org/microg/gms/appinvite/AppInviteServiceImpl.java b/play-services-core/src/main/java/org/microg/gms/appinvite/AppInviteServiceImpl.java
new file mode 100644
index 0000000000..e3bfe6d34c
--- /dev/null
+++ b/play-services-core/src/main/java/org/microg/gms/appinvite/AppInviteServiceImpl.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.microg.gms.appinvite;
+
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.Bundle;
+import android.app.Activity;
+import android.util.Log;
+import android.content.Context;
+import android.content.Intent;
+
+import com.google.android.gms.common.api.Status;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+import com.google.android.gms.dynamic.ObjectWrapper;
+
+import com.google.android.gms.appinvite.internal.IAppInviteService;
+import com.google.android.gms.appinvite.internal.IAppInviteCallbacks;
+
+
+public class AppInviteServiceImpl extends IAppInviteService.Stub {
+ private static final String TAG = "GmsAppInviteServImpl";
+
+ public AppInviteServiceImpl(Context context, String packageName, Bundle extras) {
+ }
+
+
+ @Override
+ public void updateInvitationOnInstall(IAppInviteCallbacks callback, String invitationId) throws RemoteException {
+ callback.onStatus(Status.SUCCESS);
+ }
+
+ @Override
+ public void convertInvitation(IAppInviteCallbacks callback, String invitationId) throws RemoteException {
+ callback.onStatus(Status.SUCCESS);
+ }
+
+ @Override
+ public void getInvitation(IAppInviteCallbacks callback) throws RemoteException {
+ callback.onStatusIntent(new Status(Activity.RESULT_CANCELED), null);
+ }
+
+
+ @Override
+ public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
+ if (super.onTransact(code, data, reply, flags)) {
+ return true;
+ }
+
+ Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
+ return false;
+ }
+}
diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java
index 7a7bfacf5c..a538c55ffa 100644
--- a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java
+++ b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java
@@ -55,6 +55,7 @@
import org.microg.gms.checkin.LastCheckinInfo;
import org.microg.gms.common.HttpFormClient;
import org.microg.gms.common.Utils;
+import org.microg.gms.gcm.McsService;
import org.microg.gms.people.PeopleManager;
import java.io.IOException;
@@ -357,6 +358,7 @@ public void onException(Exception exception) {
private boolean checkin(boolean force) {
try {
CheckinManager.checkin(LoginActivity.this, force);
+ McsService.scheduleReconnect(this);
return true;
} catch (IOException e) {
Log.w(TAG, "Checkin failed", e);
diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java
index 4b67bdd564..b8cfc399cc 100644
--- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java
+++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java
@@ -43,7 +43,7 @@ public static synchronized LastCheckinInfo checkin(Context context, boolean forc
LastCheckinInfo info = LastCheckinInfo.read(context);
if (!force && info.lastCheckin > System.currentTimeMillis() - MIN_CHECKIN_INTERVAL)
return null;
- if (!PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREF_ENABLE_CHECKIN, false))
+ if (!PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREF_ENABLE_CHECKIN, true))
return null;
List accounts = new ArrayList();
AccountManager accountManager = AccountManager.get(context);
diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java
index 009d9d44a0..68910851aa 100644
--- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java
+++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java
@@ -57,7 +57,7 @@ public CheckinService() {
protected void onHandleIntent(Intent intent) {
try {
ForegroundServiceContext.completeForegroundService(this, intent, TAG);
- if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(PREF_ENABLE_CHECKIN, false)) {
+ if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean(PREF_ENABLE_CHECKIN, true)) {
LastCheckinInfo info = CheckinManager.checkin(this, intent.getBooleanExtra(EXTRA_FORCE_CHECKIN, false));
if (info != null) {
Log.d(TAG, "Checked in as " + Long.toHexString(info.androidId));
diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java b/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java
index 08df8cdb91..cdcc302bd3 100644
--- a/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java
+++ b/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java
@@ -39,7 +39,7 @@ public void onReceive(Context context, Intent intent) {
boolean force = "android.provider.Telephony.SECRET_CODE".equals(intent.getAction());
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREF_ENABLE_CHECKIN, false) || force) {
+ if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREF_ENABLE_CHECKIN, true) || force) {
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()) &&
LastCheckinInfo.read(context).lastCheckin > System.currentTimeMillis() - REGULAR_CHECKIN_INTERVAL) {
return;
diff --git a/play-services-core/src/main/java/org/microg/gms/firebase/dynamiclinks/DynamicLinksService.java b/play-services-core/src/main/java/org/microg/gms/firebase/dynamiclinks/DynamicLinksService.java
new file mode 100644
index 0000000000..bb87a6af73
--- /dev/null
+++ b/play-services-core/src/main/java/org/microg/gms/firebase/dynamiclinks/DynamicLinksService.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.microg.gms.firebase.dynamiclinks;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+import android.os.RemoteException;
+
+import com.google.android.gms.common.api.CommonStatusCodes;
+import com.google.android.gms.common.internal.GetServiceRequest;
+import com.google.android.gms.common.internal.IGmsCallbacks;
+
+import org.microg.gms.BaseService;
+import org.microg.gms.common.GmsService;
+import org.microg.gms.common.PackageUtils;
+
+import org.microg.gms.firebase.dynamiclinks.DynamicLinksServiceImpl;
+
+public class DynamicLinksService extends BaseService {
+ private static final String TAG = "GmsFrbDynamicLinksService";
+
+ public DynamicLinksService() {
+ super("GmsFrbDynamicLinksSvc", GmsService.FRB_DYNAMIC_LINKS);
+ }
+
+ @Override
+ public void handleServiceRequest(IGmsCallbacks callback, GetServiceRequest request, GmsService service) throws RemoteException {
+ PackageUtils.getAndCheckCallingPackage(this, request.packageName);
+ Log.d(TAG, "callb: " + callback + " ; req: " + request + " ; serv: " + service);
+
+ callback.onPostInitComplete(0, new DynamicLinksServiceImpl(this, request.packageName, request.extras), null);
+ }
+}
diff --git a/play-services-core/src/main/java/org/microg/gms/firebase/dynamiclinks/DynamicLinksServiceImpl.java b/play-services-core/src/main/java/org/microg/gms/firebase/dynamiclinks/DynamicLinksServiceImpl.java
new file mode 100644
index 0000000000..9db0f8adac
--- /dev/null
+++ b/play-services-core/src/main/java/org/microg/gms/firebase/dynamiclinks/DynamicLinksServiceImpl.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 e Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.microg.gms.firebase.dynamiclinks;
+
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.Bundle;
+import android.util.Log;
+import android.content.Context;
+import android.content.Intent;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.common.api.CommonStatusCodes;
+
+import com.google.firebase.dynamiclinks.internal.IDynamicLinksService;
+import com.google.firebase.dynamiclinks.internal.IDynamicLinksCallbacks;
+import com.google.firebase.dynamiclinks.internal.DynamicLinkData;
+import com.google.firebase.dynamiclinks.internal.ShortDynamicLink;
+
+
+public class DynamicLinksServiceImpl extends IDynamicLinksService.Stub {
+ private static final String TAG = "GmsFrbDynamicLinksServImpl";
+
+ public DynamicLinksServiceImpl(Context context, String packageName, Bundle extras) {
+ }
+
+
+ @Override
+ public void getInitialLink(IDynamicLinksCallbacks callback, String var2) throws RemoteException {
+ callback.onStatusDynamicLinkData(Status.SUCCESS, new DynamicLinkData());
+ }
+
+
+ @Override
+ public void func2(IDynamicLinksCallbacks callback, Bundle var2) throws RemoteException {
+ Log.d(TAG, "func2: " + callback + ", " + var2);
+ callback.onStatusShortDynamicLink(Status.SUCCESS, new ShortDynamicLink());
+ }
+
+
+ @Override
+ public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
+ if (super.onTransact(code, data, reply, flags)) {
+ return true;
+ }
+
+ Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
+ return false;
+ }
+}
diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java b/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java
index 30a9570349..cb1363651f 100644
--- a/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java
+++ b/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java
@@ -83,7 +83,7 @@ public void update() {
gcmLogEnabled = defaultPreferences.getBoolean(PREF_FULL_LOG, true);
lastPersistedId = defaultPreferences.getString(PREF_LAST_PERSISTENT_ID, "");
confirmNewApps = defaultPreferences.getBoolean(PREF_CONFIRM_NEW_APPS, false);
- gcmEnabled = defaultPreferences.getBoolean(PREF_ENABLE_GCM, false);
+ gcmEnabled = defaultPreferences.getBoolean(PREF_ENABLE_GCM, true);
networkMobile = Integer.parseInt(defaultPreferences.getString(PREF_NETWORK_MOBILE, "0"));
networkWifi = Integer.parseInt(defaultPreferences.getString(PREF_NETWORK_WIFI, "0"));
diff --git a/play-services-core/src/main/java/org/microg/gms/snet/SafetyNetPrefs.java b/play-services-core/src/main/java/org/microg/gms/snet/SafetyNetPrefs.java
index a64757916f..e717e1dc9c 100644
--- a/play-services-core/src/main/java/org/microg/gms/snet/SafetyNetPrefs.java
+++ b/play-services-core/src/main/java/org/microg/gms/snet/SafetyNetPrefs.java
@@ -56,8 +56,8 @@ private SafetyNetPrefs(Context context) {
}
public void update() {
- disabled = defaultPreferences.getBoolean(PREF_SNET_DISABLED, true);
- official = defaultPreferences.getBoolean(PREF_SNET_OFFICIAL, false);
+ disabled = defaultPreferences.getBoolean(PREF_SNET_DISABLED, false);
+ official = defaultPreferences.getBoolean(PREF_SNET_OFFICIAL, true);
selfSigned = defaultPreferences.getBoolean(PREF_SNET_SELF_SIGNED, false);
thirdParty = defaultPreferences.getBoolean(PREF_SNET_THIRD_PARTY, false);
customUrl = defaultPreferences.getString(PREF_SNET_CUSTOM_URL, null);
diff --git a/play-services-core/src/main/java/org/microg/gms/ui/CheckinFragment.java b/play-services-core/src/main/java/org/microg/gms/ui/CheckinFragment.java
index 24b662e7be..0cb277c540 100644
--- a/play-services-core/src/main/java/org/microg/gms/ui/CheckinFragment.java
+++ b/play-services-core/src/main/java/org/microg/gms/ui/CheckinFragment.java
@@ -37,7 +37,7 @@ public CheckinFragment() {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- switchBar.setChecked(PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean(PREF_ENABLE_CHECKIN, false));
+ switchBar.setChecked(PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean(PREF_ENABLE_CHECKIN, true));
}
@Override
diff --git a/play-services-core/src/main/java/org/microg/gms/ui/SettingsActivity.java b/play-services-core/src/main/java/org/microg/gms/ui/SettingsActivity.java
index 0ff66731b2..27b5548325 100644
--- a/play-services-core/src/main/java/org/microg/gms/ui/SettingsActivity.java
+++ b/play-services-core/src/main/java/org/microg/gms/ui/SettingsActivity.java
@@ -104,7 +104,7 @@ private void updateDetails() {
Preferences.splitBackendString(unifiedNlPrefs.getGeocoderBackends()).length;
findPreference(PREF_UNIFIEDNLP).setSummary(getResources().getQuantityString(R.plurals.pref_unifiednlp_summary, backendCount, backendCount));
- boolean checkinEnabled = PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean(PREF_ENABLE_CHECKIN, false);
+ boolean checkinEnabled = PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean(PREF_ENABLE_CHECKIN, true);
findPreference(PREF_CHECKIN).setSummary(checkinEnabled ? R.string.service_status_enabled : R.string.service_status_disabled);
}
}
diff --git a/play-services-core/src/main/res/values-fr/strings.xml b/play-services-core/src/main/res/values-fr/strings.xml
index 3a9d5cf938..84453c231e 100644
--- a/play-services-core/src/main/res/values-fr/strings.xml
+++ b/play-services-core/src/main/res/values-fr/strings.xml
@@ -1,4 +1,5 @@
-
-
-
+ -->
microG Services Core
Paramètres de microG
-
Juste une seconde…
Google
- En poursuivant, vous autorisez cette application et Google à utiliser vos informations en accord avec leurs termes de service et politiques de vie privée respectifs.
+ En poursuivant, vous autorisez cette application et Google à utiliser vos informations en accord avec leurs conditions d\'utilisation et politiques de confidentialité respectifs.
%1$s voudrait :
%1$s voudrait utiliser :
- Gestionnaire du compte Google
+ Gestionnaire de compte Google
Désolé…
"Vous n’avez pas de connexion réseau.
@@ -38,55 +36,43 @@ Ceci peut prendre plusieurs minutes."
Refuser
Authentification requise
%1$s requiert votre autorisation pour accéder à votre compte Google.
-
- écouter les diffusions de status internes
+ écouter les diffusions de statut internes
écouter les messages C2DM
envoyer des messages C2DM aux autres applications
échanger des messages et recevoir des notifications de synchronisation de la part des serveurs de Google
Accès étendu aux services Google
-
Enregistrement du terminal auprès de Google
Google Cloud Messaging
Google SafetyNet
-
Désactivé
Activé
Automatique
Manuel
-
Avancé
Aucun
-
Google Play Jeux
%1$s voudrait utiliser Play Jeux
Pour utiliser Play Jeux il est requis d’installer l’application Google Play Jeux. L’application peut poursuivre sans Play Jeux, mais il est possible qu’elle se comporte de manière imprévue.
-
Sélectionner un emplacement
La sélection d’emplacement n’est pas encore disponible.
Sélectionner cette position
- Lieux environnants.
+ Lieux environnants
(%1$.7f, %2$.7f)
-
- microG Services Core: La permission %1$s est manquante.
-
+ Self check
Réseau mobile
Wi-Fi
- Roaming
+ Itinérance
Autres réseaux
-
-
Support de l’usurpation de signature
Paquets installés
Système
-
Le système supporte l’usurpation de signature :
Votre ROM ne supporte pas nativement l’usurpation de signature. Vous pouvez néanmoins utiliser Xposed ou d’autres mécanismes pour usurper les signatures. Merci de consulter la documentation sur les ROMs supportant l’usurpation de signature et comment utiliser microG sur les autres.
Le système autorise l’usurpation de signature :
C’est une indication forte que la ROM supporte l’usurpation de signature mais que celle-ci requiert une action supplémentaire pour être activée. Merci de consulter la documentation sur les éventuelles étapes nécessaires.
Le système usurpe la signature :
Merci de consulter la documentation sur les éventuelles étapes nécessaires.
-
Play Services (GmsCore)
Play Store (Phonesky)
Services Framework (GSF)
@@ -94,12 +80,9 @@ Ceci peut prendre plusieurs minutes."
Installez l’application %1$s ou tout autre compatible. Merci de consulter la documentation pour obtenir la liste des applications compatibles.
%1$s dispose de la bonne signature :
Soit l’application %1$s installée n’est pas compatible, soit l’usurpation de signature n’est pas activée pour celle-ci. Merci de consulter la documentation sur les applications et ROMs compatibles.
-
Optimisations de la batterie ignorées :
Appuyez ici pour désactiver les optimisations de la batterie. Des applications peuvent mal se comporter si vous ne le faites pas.
-
-
À propos
Composants
Configuration
@@ -107,24 +90,18 @@ Ceci peut prendre plusieurs minutes."
Service de localisation
Mode d’opération
Services
- Test
-
+ Tester
Optimisations de la batterie activées
Vous avez activé Google Cloud Messaging mais l’optimisation de la batterie est activée pour microG Services Core. Afin de recevoir les notifications push vous devriez désactiver les optimisations de la batterie.
- Désactiver les optimisations de la batterie
+ Ignorer les optimisations batterie
Autorisations manquantes
-
Préférences du compte
Informations personnelles & vie privée
Connexion & sécurité
-
Faire confiance à Google pour les autorisations des applications
Si désactivé, l’utilisateur est interrogé avant que la demande d’autorisation d’une application soit envoyée à Google. Certaines applications échoueront à utiliser le compte Google si ceci est désactivé.
-
- Enregistre votre terminal auprès des services Google et crée un identifiant unique. microG retire les identifiants autres que le nom de votre compte Google des informations d’enregistrement.
-
+ Enregistre votre terminal auprès des services Google et crée un identifiant unique. microG retire les éléments identifiants autres que le nom de votre compte Google des informations d’enregistrement.
Plus
-
Google Cloud Messaging est un fournisseur de notifications push utilisé par beaucoup d’applications tierces. Pour l’utiliser vous devez activer l’enregistrement du terminal.
Intervalle des signaux de présence Cloud Messaging
L’intervalle en secondes auquel le système signale sa présence aux serveurs de Google. Augmenter ce nombre réduira la consommation de batterie mais peu induire un délai dans la réception des messages push.\nDéprécié, sera remplacé dans une prochaine version.
@@ -133,10 +110,8 @@ Ceci peut prendre plusieurs minutes."
Confirmation pour les nouvelles applications
Demander avant d’enregistrer une nouvelle application auprès de Google Cloud Messaging
Intervalle de ping : %1$s
-
À propos de microG Services Core
- Informations de version et librairies utilisées
-
+ Informations de version et bibliothèques utilisées
Erreur lors du désenregistrement
Cette application n’est plus installée
Désenregistrer
@@ -145,25 +120,34 @@ Ceci peut prendre plusieurs minutes."
Dernier message : %1$s
Enregistrée
Enregistrée depuis : %1$s
- Désenregistrer %1$s?
+ Self check
Certaines applications ne se réenregistrent pas et/ou ne fournisse pas de moyens de le faire manuellement. Ces applications peuvent ne plus fonctionner correctement après le désenregistrement.\nContinuer ?
Vous avez empêché une application déjà enregistrée de s’enregistrer pour recevoir des notifications push.\nVoulez-vous la désenregistrer maintenant pour qu’elle ne reçoive plus de notifications push à l’avenir ?
Messages : %1$d (%2$d octets)
- Status actuel : Déconnecté
- Status actuel : Connecté depuis %1$s
-
+ Statut actuel : Déconnecté
+ Self check
Google SafetyNet est un système de certification du terminal, assurant que celui-ci est correctement sécurisé et compatible avec Android CTS. Certaines applications utilisent SafetyNet pour des raisons de sécurité ou comme prérequis anti-altérations.\n\nmicroG GmsCore contient une implantation libre de SafetyNet, mais les serveurs officiels requièrent que les requêtes SafetyNet soient signées par le système propriétaire DroidGuard. Une version mise en « bac-à-sable » de DroidGuard est disponible dans une application séparée « DroidGuard Helper ».
-
Tester la certification SafetyNet
-
Utiliser les serveurs officiels
Nécessite un système non-rooté et microG DroidGuard Helper installé
Utiliser un serveur tiers
- Les serveurs tiers peuvent être capable de répondre aux requêtes SafetyNet sans signature de DroidGuard.
- URL serveur tiers
+ Les serveurs tiers peuvent être capable de répondre aux requêtes SafetyNet sans signature de DroidGuard
+ URL du serveur tiers
URL complète du serveur tiers répondant aux requêtes de certification SafetyNet
Utiliser un certificat auto-signé
- Au lieu de requérir un serveur, signer les réponses SafetyNet localement en utilisant un certificat auto-signé. La plupart des applications refuseront d’utiliser des réponses auto-signées.
-
-
+ Au lieu de solliciter un serveur, signer les réponses SafetyNet localement en utilisant un certificat auto-signé. La plupart des applications refuseront d’utiliser des réponses auto-signées.
+ certificat auto-signé
+ serveur tiers
+ serveur officiel
+ Ajouter un compte Google
+ Compte
+ Si activé, toutes les applications de cet appareil pourront lire l\'adresse mail de vos comptes Google, sans avoir à en demander l\'autorisation.
+ Autoriser les applications à trouver les comptes
+ Votre appareil établit une connexion aux serveurs de Google pour vous y connecter.
+\n
+\nCeci peut prendre quelques secondes.
+ Se connecter
+ Self check
+ Configurer microG services Core.
+
\ No newline at end of file
diff --git a/play-services-core/src/main/res/values-nl/strings.xml b/play-services-core/src/main/res/values-nl/strings.xml
new file mode 100644
index 0000000000..a6b3daec93
--- /dev/null
+++ b/play-services-core/src/main/res/values-nl/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt
index b31472cb44..3025263b80 100644
--- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt
+++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt
@@ -210,6 +210,11 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
override fun stopAnimation() = map?.cancelTransitions() ?: Unit
+ override fun setMapStyle(options: MapStyleOptions?): Boolean {
+ Log.d(TAG, "setMapStyle options: " + options?.getJson())
+ return true
+ }
+
override fun setMinZoomPreference(minZoom: Float) {
map?.setMinZoomPreference(minZoom.toDouble() - 1)
}
@@ -436,7 +441,7 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
}
- override fun snapshot(callback: ISnapshotReadyCallback, bitmap: IObjectWrapper) {
+ override fun snapshot(callback: ISnapshotReadyCallback, bitmap: IObjectWrapper?) {
Log.d(TAG, "unimplemented Method: snapshot")
}
@@ -678,23 +683,33 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions)
override fun onResume() = mapView?.onResume() ?: Unit
override fun onPause() = mapView?.onPause() ?: Unit
override fun onDestroy() {
- Log.d(TAG, "destroy");
+ Log.d(TAG, "destroy")
circleManager?.onDestroy()
circleManager = null
+
lineManager?.onDestroy()
lineManager = null
+
fillManager?.onDestroy()
fillManager = null
+
symbolManager?.onDestroy()
symbolManager = null
+
pendingMarkers.clear()
markers.clear()
+
BitmapDescriptorFactoryImpl.unregisterMap(map)
+
view.removeView(mapView)
+
// TODO can crash?
mapView?.onDestroy()
mapView = null
- map = null
+
+ // Don't make it null; this object is not deleted immediately, and it may want to access map.* stuff
+ //map = null
+
created = false
initialized = false
loaded = false
diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/MapView.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/MapView.kt
index 572eba6f5e..9aa8bfd141 100644
--- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/MapView.kt
+++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/MapView.kt
@@ -46,6 +46,7 @@ class MapViewImpl(private val context: Context, options: GoogleMapOptions?) : IM
override fun onResume() = map?.onResume() ?: Unit
override fun onPause() = map?.onPause() ?: Unit
override fun onDestroy() {
+ Log.d(TAG, "destroy")
map?.onDestroy()
map = null
}
diff --git a/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/GoogleMapImpl.java b/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/GoogleMapImpl.java
index b18189a4f1..f16d621f2a 100644
--- a/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/GoogleMapImpl.java
+++ b/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/GoogleMapImpl.java
@@ -59,6 +59,7 @@
import com.google.android.gms.maps.model.GroundOverlayOptions;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions;
+import com.google.android.gms.maps.model.MapStyleOptions;
import com.google.android.gms.maps.model.PolygonOptions;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.gms.maps.model.TileOverlayOptions;
@@ -210,6 +211,12 @@ public void onExitAmbient() throws RemoteException {
}
+ @Override
+ public boolean setMapStyle(MapStyleOptions options) throws RemoteException {
+ Log.d(TAG, "unimplemented Method: setMapStyle");
+ return true;
+ }
+
@Override
public void setMinZoomPreference(float minZoom) throws RemoteException {
Log.d(TAG, "unimplemented Method: setMinZoomPreference");
diff --git a/settings.gradle b/settings.gradle
index cf94adba2e..c92e4a2bfc 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,10 +12,14 @@ include ':play-services-cast-framework-api'
include ':play-services-iid-api'
include ':play-services-location-api'
include ':play-services-wearable-api'
+include ':play-services-appinvite-api'
+include ':firebase-dynamic-links-api'
include ':play-services-base'
include ':play-services-tasks'
include ':play-services-wearable'
+include ':play-services-appinvite'
+include ':firebase-dynamic-links'
include ':play-services-maps-core-mapbox'
include ':play-services-maps-core-vtm'