Allow huawei variants to install microG & support silent installs.

This commit is contained in:
Rahul Patel
2025-07-05 14:59:41 +05:30
parent cfe52d5a04
commit aea945491d
44 changed files with 1662 additions and 145 deletions

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/top_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_layout"
android:layout_alignParentTop="true"
android:gravity="center"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="true"
android:text="@string/onboarding_title_gsf"
android:textAlignment="textStart"
android:textColor="?colorAccent"
android:textSize="42sp" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AuroraTextStyle.Subtitle.Alt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/onboarding_title_gsf_desc"
android:textAlignment="textStart" />
</LinearLayout>
<com.airbnb.epoxy.EpoxyRecyclerView
android:id="@+id/epoxy_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:clipToPadding="false"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
android:padding="@dimen/padding_medium"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/view_dash" />
</LinearLayout>
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:divider="@drawable/divider"
android:orientation="vertical"
android:paddingStart="@dimen/padding_large"
android:paddingEnd="@dimen/padding_large"
android:showDividers="middle">
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkbox_agreement"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/padding_large"
android:paddingEnd="@dimen/padding_xxsmall"
android:text="@string/onboarding_gms_agreement" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_microG"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:maxWidth="@dimen/width_button"
android:text="@string/action_install_microG" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="24dp"
android:visibility="invisible" />
</LinearLayout>
</RelativeLayout>

View File

@@ -38,7 +38,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"

View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:navigationIcon="@drawable/ic_arrow_back" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.airbnb.epoxy.EpoxyRecyclerView
android:id="@+id/epoxy_recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_layout"
android:clipToPadding="false"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
android:padding="@dimen/padding_medium"
android:scrollbars="none"
app:itemSpacing="@dimen/margin_small"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/view_dash" />
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?attr/colorSurface"
android:divider="@drawable/divider"
android:orientation="vertical"
android:showDividers="middle">
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkbox_agreement"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/padding_large"
android:paddingEnd="@dimen/padding_xxsmall"
android:text="@string/onboarding_gms_agreement" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="24dp"
android:visibility="invisible" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_microG"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="0dp"
android:layout_height="56dp"
android:layout_margin="@dimen/margin_xsmall"
android:enabled="false"
android:text="@string/action_install_microG"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/btn_skip"
app:layout_constraintTop_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_skip"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="0dp"
android:layout_height="56dp"
android:layout_margin="@dimen/margin_xsmall"
android:text="@string/action_ignore"
app:layout_constraintEnd_toStartOf="@id/btn_microG"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/top_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:divider="@drawable/divider"
android:orientation="vertical"
android:showDividers="middle">
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:includeFontPadding="true"
android:paddingStart="@dimen/padding_normal"
android:paddingEnd="@dimen/padding_normal"
android:text="@string/onboarding_title_gsf"
android:textAlignment="textStart"
android:textColor="?colorAccent"
android:textSize="32sp" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AuroraTextStyle.Subtitle.Alt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/padding_normal"
android:paddingEnd="@dimen/padding_normal"
android:text="@string/onboarding_title_gsf_desc"
android:textAlignment="textStart" />
</LinearLayout>
<com.airbnb.epoxy.EpoxyRecyclerView
android:id="@+id/epoxy_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/bottom_layout"
android:layout_below="@+id/top_layout"
android:clipToPadding="false"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
android:padding="@dimen/padding_medium"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/view_dash" />
<LinearLayout
android:id="@+id/bottom_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?attr/colorSurface"
android:divider="@drawable/divider"
android:orientation="vertical"
android:paddingStart="@dimen/padding_large"
android:paddingEnd="@dimen/padding_large"
android:showDividers="middle">
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/checkbox_agreement"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/padding_large"
android:paddingEnd="@dimen/padding_xxsmall"
android:text="@string/onboarding_gms_agreement" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_microG"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:enabled="false"
android:text="@string/action_install_microG" />
<com.google.android.material.progressindicator.LinearProgressIndicator
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="24dp"
android:visibility="invisible" />
</LinearLayout>
</RelativeLayout>

View File

@@ -47,7 +47,7 @@
android:text="@string/onboarding_title_permissions"
android:textAlignment="textStart"
android:textColor="?colorAccent"
android:textSize="42sp" />
android:textSize="32sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/subtitle"

View File

@@ -36,7 +36,7 @@
android:text="@string/onboarding_title_welcome"
android:textAlignment="textStart"
android:textColor="?colorAccent"
android:textSize="42sp" />
android:textSize="32sp" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/AuroraTextStyle.Subtitle.Alt"

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Aurora Store
~ Copyright (C) 2021, Rahul Kumar Patel <whyorean@gmail.com>
~
~ Aurora Store is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 2 of the License, or
~ (at your option) any later version.
~
~ Aurora Store is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with Aurora Store. If not, see <http://www.gnu.org/licenses/>.
~
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/txt_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Some text" />

View File

@@ -91,7 +91,7 @@
android:id="@+id/settingsFragment"
android:name="com.aurora.store.view.ui.preferences.SettingsFragment"
android:label="@string/title_settings"
tools:layout="@layout/fragment_setting" >
tools:layout="@layout/fragment_setting">
<action
android:id="@+id/action_settingsFragment_to_permissionsFragment"
app:destination="@id/permissionsFragment" />
@@ -157,6 +157,11 @@
<argument
android:name="packageName"
app:argType="string" />
<argument
android:name="app"
android:defaultValue="@null"
app:argType="com.aurora.gplayapi.data.models.App"
app:nullable="true" />
<action
android:id="@+id/action_appDetailsFragment_to_devAppsFragment"
app:destination="@id/devAppsFragment" />
@@ -169,11 +174,6 @@
<action
android:id="@+id/action_appDetailsFragment_to_detailsExodusFragment"
app:destination="@id/detailsExodusFragment" />
<argument
android:name="app"
android:defaultValue="@null"
app:argType="com.aurora.gplayapi.data.models.App"
app:nullable="true" />
<action
android:id="@+id/action_appDetailsFragment_to_manualDownloadSheet"
app:destination="@id/manualDownloadSheet" />
@@ -183,6 +183,9 @@
<action
android:id="@+id/action_appDetailsFragment_to_installErrorDialogSheet"
app:destination="@id/installErrorDialogSheet" />
<action
android:id="@+id/action_appDetailsFragment_to_gmsWarnFragment"
app:destination="@id/detailsMicroGFragment" />
</fragment>
<fragment
android:id="@+id/categoryBrowseFragment"
@@ -375,6 +378,11 @@
android:defaultValue="true"
app:argType="boolean" />
</fragment>
<fragment
android:id="@+id/detailsMicroGFragment"
android:name="com.aurora.store.view.ui.details.DetailsMicroGFragment"
android:label="MicroGFragment"
tools:layout="@layout/fragment_details_microg" />
<dialog
android:id="@+id/appMenuSheet"
android:name="com.aurora.store.view.ui.sheets.AppMenuSheet"

View File

@@ -62,6 +62,7 @@
<dimen name="height_bottomsheet_button">52dp</dimen>
<dimen name="height_peek">64dp</dimen>
<dimen name="height_nav_header">148dp</dimen>
<dimen name="height_microg_action">96dp</dimen>
<dimen name="radius_small">8dp</dimen>
<dimen name="radius_medium">10dp</dimen>

View File

@@ -76,6 +76,7 @@
<string name="action_granted">"Granted"</string>
<string name="action_ignore">"Ignore"</string>
<string name="action_install">"Install"</string>
<string name="action_install_microG">"Install microG Bundle"</string>
<string name="action_installations">"Installations"</string>
<string name="action_installing">"Installing"</string>
<string name="action_join">"Join"</string>
@@ -193,21 +194,6 @@
<string name="notification_channel_export">App export notification</string>
<string name="notification_channel_install">Install notification</string>
<string name="notification_channel_downloads">Downloads notification</string>
<string name="onboarding_permission_select">"Aurora Store requires following permissions"</string>
<string name="onboarding_title_installer">"Installer"</string>
<string name="onboarding_title_permissions">"Permissions"</string>
<string name="onboarding_title_welcome">"Welcome"</string>
<string name="onboarding_welcome_select">"How you doing?"</string>
<string name="onboarding_permission_esa">"External storage access"</string>
<string name="onboarding_permission_esa_desc">To save APK expansion files (OBBs) for large apps &amp; games.</string>
<string name="onboarding_permission_esm">"External storage manager"</string>
<string name="onboarding_permission_installer">"Installer permission"</string>
<string name="onboarding_permission_installer_desc">"Allow installing apps from Aurora Store"</string>
<string name="onboarding_permission_installer_legacy_desc">"Allow installation of apps from unknown sources"</string>
<string name="onboarding_permission_notifications">"Notifications"</string>
<string name="onboarding_permission_notifications_desc">"Send notifications regarding installations status"</string>
<string name="onboarding_permission_doze">"Background downloads"</string>
<string name="onboarding_permission_doze_desc">"Allow Aurora Store to download and update apps in background"</string>
<string name="pref_common_extra">"Extras"</string>
<string name="pref_filter_fdroid_summary">"Don't check updates for apps installed from F-Droid"</string>
<string name="pref_filter_fdroid_title">"Filter F-Droid apps"</string>
@@ -362,6 +348,31 @@
<string name="app_info_min_android">"Minimum Android Version"</string>
<string name="app_info_target_android">"Target API Level"</string>
<!-- OnBoarding Fragment -->
<string name="onboarding_title_installer">"Installer"</string>
<string name="onboarding_title_gsf">"App Compatibility"</string>
<string name="onboarding_title_gsf_desc">"Missing dependencies"</string>
<string name="onboarding_title_permissions">"Permissions"</string>
<string name="onboarding_title_welcome">"Welcome"</string>
<string name="onboarding_welcome_select">"How you doing?"</string>
<string name="onboarding_permission_esa">"External storage access"</string>
<string name="onboarding_permission_esa_desc">To save APK expansion files (OBBs) for large apps &amp; games.</string>
<string name="onboarding_permission_esm">"External storage manager"</string>
<string name="onboarding_permission_installer">"Installer permission"</string>
<string name="onboarding_permission_installer_desc">"Allow installing apps from Aurora Store"</string>
<string name="onboarding_permission_installer_legacy_desc">"Allow installation of apps from unknown sources"</string>
<string name="onboarding_permission_notifications">"Notifications"</string>
<string name="onboarding_permission_notifications_desc">"Send notifications regarding installations status"</string>
<string name="onboarding_permission_doze">"Background downloads"</string>
<string name="onboarding_permission_doze_desc">"Allow Aurora Store to download and update apps in background"</string>
<string name="onboarding_permission_select">"Aurora Store requires following permissions"</string>
<string name="onboarding_gms_agreement">"I have read and agree to the microG Terms of Service and Privacy Policy"</string>
<string name="onboarding_gms_missing">"We couldn't find Google Play Services on your device, several popular apps now require it to function properly!"</string>
<string name="onboarding_gms_microg">"microG is a free and open-source implementation that provides similar functionality to run apps dependent on Google Play Services for Android devices through re-implementation.\n\nmicroG enables apps to access those Google APIs, enhancing compatibility for users while offering privacy benefits. \n\nmicroG will run automatically in the background when you open applications dependent on Google Mobile Services."</string>
<string name="microg_privacy_policy">Read microG Privacy Policy</string>
<string name="microg_license_agreement">Read microG License and Agreement</string>
<string name="microg_website">Visit microG Project Website</string>
<!-- InstallerFragment -->
<string name="session_installer_subtitle">Session based installer for bundled/split APKs</string>
<string name="session_installer_desc">Recommended, in-built and supports all Android versions</string>