24 Commits

Author SHA1 Message Date
Katana
347bd3fc73 Upgrade 2025-05-13 12:00:41 +08:00
Katana
b1e69d124b Upgrade deps 2025-04-03 16:04:42 +08:00
Katana
acebffc1d9 UX: Sync with Android 15+ upstream 2025-03-03 15:34:06 +08:00
Katana
9a98f17f65 Upgrade 2025-03-03 15:31:19 +08:00
Katana
5a9a694c33 Support Android 16 2025-01-13 12:30:46 +08:00
Katana
6874df5925 Upd 2024-11-26 16:42:50 +08:00
Katana
19760fc8c9 Merge pull request #47 from muhammadbahaa2001/master
Added Arabic
2024-10-09 16:04:33 +08:00
Katana
87cd814e30 Upgrade app 2024-10-08 16:05:08 +08:00
muhammadbahaa2001
0ef7aa016c Added Arabic 2024-10-06 21:53:07 +03:00
Katana
022aac3d7a Upgrade deps 2024-08-30 11:00:01 +08:00
Katana
637e8cb53e Upgrade dependency 2024-06-26 09:39:41 +08:00
Katana
cb600041a9 Upgrade deps 2024-05-28 11:31:04 +08:00
Katana
e76b07bfcb App: Upgrade deps 2024-04-26 16:30:01 +08:00
Katana
28ac4f808c Upgrade dependency 2024-04-01 12:25:27 +08:00
Katana
f6d1423d49 App: Upgrade to latest AGP 2024-03-05 22:12:02 +08:00
Katana
6f3cfa9e16 App: Optimized for all devices 2024-02-28 01:31:11 +08:00
Katana
e8e4406e5b App: Upgrade sdk 2024-02-20 05:18:01 +08:00
Katana
0baa46355c App: Support Android 15 DP1 2024-02-15 22:27:39 +08:00
Katana
c518603ca3 App: Adopt the latest SDK 2024-02-14 20:53:21 +08:00
Katana
9eb797d28d App: Upgrade app dependency 2024-02-04 01:11:01 +08:00
Katana
6b61dfba35 App: Upgrade app dependency 2024-01-12 02:00:16 +08:00
Katana
43a56ad249 App: Update READMI 2023-12-20 19:20:51 +08:00
Katana
597f3a6a39 App: Transfer to Mundo 2023-12-20 19:18:09 +08:00
Katana
1ba31c1e56 App: Fix bugs above Android 14 2023-11-16 05:59:26 +08:00
16 changed files with 320 additions and 87 deletions

View File

@@ -4,7 +4,9 @@
## Commercial Indication
You can use this project freely, and we'd recommend you to contact us for el further sdk support.
[Join our grupo for el sdk & usage support.](https://t.me/foxiteu), or you can connect me by mi email.
[Join our grupo for el sdk & usage support.](https://t.me/foxiteu), or you can connect me by my email.
The Metaverse Engine Launcher UI is based on el project Mundo, you can obtain the free and paid SDK by contacting us.
Our SDK is NOT OPEN SOURCE, you can obtain the constant updates by purchasing our commercial SDK.
## About us
@@ -28,31 +30,27 @@ Powerful Android / iOS app modifying tool, you can make your plugins y app more
Email: 1@die.lu
Telegram: [https://t.me/foxiteu](https://t.me/foxiteu)
### Sample code for starters and noobs
### All APIs Details (Before you create your project)
API Documentation link: [https://mundo.bienvenido.top/](https://mundo.bienvenido.top/)
#### Manual launch el engine (not necessary)
```Java
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
FozaCore.startup(base);
}
```
### Sample code for starters and noobs
#### Launch a sample application
```Java
FozaActivityManager.get().launchApp(
MetaActivityManager.launchApp(
applicationPackageName
);
```
or
```Java
FozaActivityManager.get().launchApp(
MetaActivityManager.launchApp(
userPartitionName,
applicationPackageName
);
```
Read more documents on [https://mundo.bienvenido.top/](https://mundo.bienvenido.top/)
### Change logs
#### Oct. 2023
Initial upload mi project.

2
app/.gitignore vendored
View File

@@ -1,5 +1,5 @@
/build
/release
*.apk
/libs/foza-release.aar
/libs/*.aar
/debug/

View File

@@ -2,11 +2,11 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdk 34
compileSdkPreview "Baklava"
defaultConfig {
applicationId "net_62v.launcher"
minSdkVersion 21
targetSdk 34
targetSdk 35
versionCode 1
versionName "1.0"
android {
@@ -39,8 +39,8 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
}
packagingOptions {
jniLibs {
@@ -52,14 +52,16 @@ android {
checkReleaseBuilds false
}
kotlinOptions {
jvmTarget = '1.8'
jvmTarget = '21'
}
namespace 'com.android.launcher'
buildFeatures {
buildConfig true
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation "androidx.annotation:annotation:1.7.0"
implementation 'com.jakewharton.android.repackaged:dalvik-dx:11.0.0_r3'
implementation 'com.jakewharton.android.repackaged:dalvik-dx:14.0.0_r21'
}

View File

@@ -2,6 +2,7 @@
-optimizationpasses 7
-allowaccessmodification
-keep class android.** { *; }
-keep class de.** { *; }
-keepclassmembers class * {
native <methods>;
}

View File

@@ -1,26 +0,0 @@
package com.test.qqy.launcher22;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.test.qqy.launcher22", appContext.getPackageName());
}
}

View File

@@ -59,7 +59,7 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import lu.die.fozacompatibility.FozaActivityManager;
import net_62v.external.MetaActivityManager;
/**
* A simple callback interface which also provides the results of the task.
@@ -525,7 +525,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
mLauncher.startActivitySafely(v, appInfo.intent, appInfo);
}
else try{
Intent reserver = FozaActivityManager.get().obtainSplashLaunchIntent(
Intent reserver = MetaActivityManager.obtainSplashLaunchIntent(
0,
appInfo.componentName.getPackageName(),
mLauncher

View File

@@ -26,6 +26,7 @@ import android.content.res.Resources;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.drawable.TransitionDrawable;
import android.os.RemoteException;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewConfiguration;
@@ -220,7 +221,11 @@ public class DeleteDropTarget extends ButtonDropTarget {
if (isAllAppsApplication(d.dragSource, item)) {
// Uninstall the application if it is being dragged from AppsCustomize
mLauncher.startApplicationUninstallActivity((ApplicationInfo) item);
try {
mLauncher.startApplicationUninstallActivity((ApplicationInfo) item);
} catch (RemoteException e) {
e.printStackTrace();
}
} else if (isWorkspaceOrFolderApplication(d)) {
LauncherModel.deleteItemFromDatabase(mLauncher, item);
} else if (isWorkspaceFolder(d)) {

View File

@@ -61,6 +61,7 @@ import android.os.Debug;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.os.StrictMode;
import android.os.SystemClock;
import android.os.UserManager;
@@ -114,9 +115,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import lu.die.foza.SuperAPI.FozaCore;
import lu.die.fozacompatibility.FozaActivityManager;
import lu.die.fozacompatibility.FozaPackageManager;
import net_62v.external.MetaActivityManager;
import net_62v.external.MetaPackageManager;
/**
* Default launcher application.
@@ -434,7 +434,11 @@ public final class Launcher extends Activity
// On large interfaces, we want the screen to auto-rotate based on the current orientation
unlockScreenOrientation(true);
LauncherLoader.instance().waitForAndGetInitialService(() -> {
FozaPackageManager.get().acquireObtainAppSplash();
try {
MetaPackageManager.acquireObtainAppSplash();
} catch (Exception e) {
e.printStackTrace();
}
return null;
});
}
@@ -2022,7 +2026,7 @@ public final class Launcher extends Activity
else
{
try{
Intent reserveIntent = FozaActivityManager.get().obtainSplashLaunchIntent(
Intent reserveIntent = MetaActivityManager.obtainSplashLaunchIntent(
0,
((ShortcutInfo) tag).intent.getComponent().getPackageName(),
this
@@ -2125,10 +2129,10 @@ public final class Launcher extends Activity
startActivitySafely(null, intent, "startApplicationDetailsActivity");
}
void startApplicationUninstallActivity(ApplicationInfo appInfo) {
if(FozaPackageManager.get().isInnerAppInstalled(appInfo.componentName.getPackageName()))
void startApplicationUninstallActivity(ApplicationInfo appInfo) throws RemoteException {
if(MetaPackageManager.isInnerAppInstalled(appInfo.componentName.getPackageName()))
{
FozaPackageManager.get().uninstallAppFully(appInfo.componentName.getPackageName());
MetaPackageManager.uninstallAppFully(appInfo.componentName.getPackageName());
int messageId = R.string.cling_dismiss;
Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show();
return;

View File

@@ -76,7 +76,9 @@ public class LauncherApplication extends Application {
} else registerReceiver(mModel, filter);
filter = new IntentFilter();
filter.addAction(SearchManager.INTENT_ACTION_SEARCHABLES_CHANGED);
registerReceiver(mModel, filter);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
registerReceiver(mModel, filter, RECEIVER_EXPORTED);
else registerReceiver(mModel, filter);
// Register for changes to the favorites
ContentResolver resolver = getContentResolver();

View File

@@ -1,8 +1,8 @@
package com.android.launcher2
import android.content.Intent
import lu.die.foza.SuperAPI.FozaCore
import lu.die.fozacompatibility.FozaPackageManager
import net_62v.external.MetaCore
import net_62v.external.MetaPackageManager
object LauncherLoader {
// For java
@@ -10,12 +10,12 @@ object LauncherLoader {
fun instance() = this
fun waitForAndGetInitialService(
serviceCallback : () -> Unit
) = FozaCore.registerCoreCallback(
) = MetaCore.registerCoreCallback(
serviceCallback
)
fun obtainLaunchIntentByPackage(
src : String
) = FozaPackageManager.get().getLaunchIntentForPackage(
) = MetaPackageManager.getLaunchIntentForPackage(
Intent(Intent.ACTION_MAIN).setPackage(src) /* Package Name */
)
}

View File

@@ -63,7 +63,8 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
import lu.die.fozacompatibility.FozaPackageManager;
import net_62v.external.MetaPackageManager;
/**
* Maintains in-memory state of the Launcher. It is expected that there should be only one
@@ -2118,7 +2119,11 @@ public class LauncherModel extends BroadcastReceiver {
}
}
});
FozaPackageManager.get().acquireObtainAppSplash();
try {
MetaPackageManager.acquireObtainAppSplash();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -16,7 +16,7 @@
<!-- Full screen view projects under the status bar and contains the background -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:launcher="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
android:id="@+id/launcher"
android:layout_width="match_parent"
android:layout_height="match_parent"

View File

@@ -0,0 +1,262 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
* Copyright (C) 2008 The Android Open Source Project
*
* 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.
*/
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- General -->
<skip />
<!-- اسم التطبيق -->
<string name="application_name">ميتا لانشر</string>
<!-- اسم التطبيق في واجهة الوصول -->
<string name="home">الرئيسية</string>
<!-- اسم جميع التطبيقات التي تعمل كـ uid هذا. -->
<string name="uid_name">تطبيقات أندرويد الأساسية</string>
<!-- اسم المجلد الافتراضي -->
<!-- عنوان مربع الحوار الذي يظهر بعد أن يختار المستخدم ورق الحائط من القائمة -->
<string name="chooser_wallpaper">اختر ورق الحائط من</string>
<!-- تسمية الزر على شاشة معرض ورق الحائط؛ يختار المستخدم هذا الزر لتعيين ورق حائط معين -->
<string name="wallpaper_instructions">تعيين ورق الحائط</string>
<!-- خيار في مربع الحوار "اختر ورق الحائط من" -->
<string name="pick_wallpaper">أوراق الحائط</string>
<!-- يظهر عندما يختار المستخدم اختصارًا لتطبيق تم إلغاء تثبيته [CHAR_LIMIT=none]-->
<string name="activity_not_found">التطبيق غير مثبت.</string>
<!-- تسميات علامات التبويب في درج التخصيص -->
<string name="widgets_tab_label">الأدوات</string>
<!-- لوحة تخصيص التطبيقات -->
<!-- رسالة لإخبار المستخدم بالضغط مع الاستمرار على أداة لإضافتها [CHAR_LIMIT=50] -->
<string name="long_press_widget_to_add">اضغط مع الاستمرار لالتقاط الأداة.</string>
<!-- نص زر السوق. تم إزالة نص زر السوق في Launcher.java
في واجهة الهاتف. [CHAR LIMIT=32] -->
<string name="market">متجر</string>
<!-- سلسلة التنسيق لأبعاد الأداة في الدرج -->
<string name="widget_dims_format">%1$d \u00d7 %2$d</string>
<!-- تنسيق تسمية اختيار الأداة الخارجية [CHAR_LIMIT=25] -->
<string name="external_drop_widget_pick_format" translatable="false">%1$s (%2$d \u00d7 %3$d)</string>
<!-- سلسلة خطأ الأداة الخارجية. هذه هي الرسالة التي تظهر
عندما تسحب عنصرًا إلى الشاشة الرئيسية ولا يمكن أن يتناسب،
أو يحدث خطأ. [CHAR_LIMIT=50] -->
<string name="external_drop_widget_error">لم يتمكن من إسقاط العنصر على هذه الشاشة الرئيسية.</string>
<!-- عنوان اختيار الأداة الخارجية. يظهر هذا كعنوان لـ
مربع الحوار الذي يتيح لك اختيار أي أدوات للتعامل مع إسقاط معين
إذا كانت هناك خيارات متعددة. [CHAR_LIMIT=35] -->
<string name="external_drop_widget_pick_title">اختر الأداة لإنشائها</string>
<!-- المجلدات -->
<skip />
<!-- تسمية حقل اسم المجلد في مربع حوار إعادة تسمية المجلد -->
<string name="rename_folder_label">اسم المجلد</string>
<!-- عنوان مربع الحوار -->
<string name="rename_folder_title">إعادة تسمية المجلد</string>
<!-- الأزرار في مربع حوار إعادة تسمية المجلد -->
<string name="rename_action">موافق</string>
<!-- الأزرار في مربع حوار إعادة تسمية المجلد -->
<string name="cancel_action">إلغاء</string>
<!-- Shortcuts -->
<skip />
<!-- Title of dialog box -->
<string name="menu_item_add_item">إضافة إلى الشاشة الرئيسية</string>
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of all apps -->
<string name="group_applications">التطبيقات</string>
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of all shortcuts -->
<string name="group_shortcuts">اختصارات</string>
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of all widgets/gadgets -->
<string name="group_widgets">الأدوات</string>
<!-- Options in "Add to Home" dialog box; Title of the group containing the list of apps that can set the wallpaper -->
<string name="group_wallpapers">خلفيات</string>
<!-- Error message when user has filled all their home screens -->
<string name="completely_out_of_space">لا يوجد مزيد من المساحة على شاشاتك الرئيسية.</string>
<!-- Error message when user has filled a home screen -->
<string name="out_of_space">لا يوجد مزيد من المساحة على هذه الشاشة الرئيسية.</string>
<!-- Error message when user has filled the hotseat -->
<string name="hotseat_out_of_space">لا يوجد مزيد من المساحة في منطقة الاختصارات.</string>
<!-- Error message when user tries to drop an invalid item on the hotseat -->
<string name="invalid_hotseat_item">هذه الأداة كبيرة جدًا لمنطقة الاختصارات.</string>
<!-- Message displayed when a shortcut is created by an external application -->
<string name="shortcut_installed">تم إنشاء اختصار \"<xliff:g id="name" example="Browser">%s</xliff:g>\".</string>
<!-- Message displayed when a shortcut is uninstalled by an external application -->
<string name="shortcut_uninstalled">تم إزالة اختصار \"<xliff:g id="name" example="Browser">%s</xliff:g>\".</string>
<!-- Message displayed when an external application attempts to create a shortcut that already exists -->
<string name="shortcut_duplicate">اختصار \"<xliff:g id="name" example="Browser">%s</xliff:g>\" موجود بالفعل.</string>
<!-- Title of dialog when user is selecting shortcut to add to homescreen -->
<string name="title_select_shortcut">اختر اختصار</string>
<!-- Title of dialog when user is selecting an application to add to homescreen -->
<string name="title_select_application">اختر تطبيق</string>
<!-- All applications label -->
<string name="all_apps_button_label">التطبيقات</string>
<!-- Label for button in all applications label to go back home (to the workspace / desktop) for accessibility (spoken when the button gets focus). -->
<string name="all_apps_home_button_label">الرئيسية</string>
<!-- Label for trash icon on workspace. Meant to communicate the idea of removing the icon/widget from the home screen, but not permanently. [CHAR_LIMIT=30] -->
<string name="delete_zone_label_workspace">إزالة</string>
<!-- Label for trash icon in All Apps. The icon/widget will become completely unavailable on the device. [CHAR_LIMIT=30] -->
<string name="delete_zone_label_all_apps">إلغاء التثبيت</string>
<!-- Label for delete drop target. [CHAR_LIMIT=30] -->
<string name="delete_target_label">إزالة</string>
<!-- Label for uninstall drop target. [CHAR_LIMIT=30] -->
<string name="delete_target_uninstall_label">إلغاء التثبيت</string>
<!-- Label for the info icon. [CHAR_LIMIT=30] -->
<string name="info_target_label">معلومات التطبيق</string>
<!-- Accessibility: Search button -->
<string name="accessibility_search_button">بحث</string>
<!-- Accessibility: Voice Search button -->
<string name="accessibility_voice_search_button">بحث صوتي</string>
<!-- Accessibility: AllApps button -->
<string name="accessibility_all_apps_button">التطبيقات</string>
<!-- Accessibility: Delete button -->
<string name="accessibility_delete_button">إزالة</string>
<!-- Label for trash icon in All Apps, when an updated system app is selected. The update will be uninstalled. [CHAR_LIMIT=30] -->
<string name="delete_zone_label_all_apps_system_app">إلغاء تثبيت التحديث</string>
<!-- Menus items: -->
<skip />
<!-- Verb, menu item used to add an item on the desktop -->
<string name="menu_add">إضافة</string>
<!-- Menu item used to manage installed applications -->
<string name="menu_manage_apps">إدارة التطبيقات</string>
<!-- Noun, menu item used to set the desktop's wallpaper -->
<string name="menu_wallpaper">خلفية الشاشة</string>
<!-- Verb, menu item used to initiate global search -->
<string name="menu_search">بحث</string>
<!-- Noun, menu item used to bring down the notifications shade -->
<string name="menu_notifications">الإشعارات</string>
<!-- Noun, menu item used to show the system settings -->
<string name="menu_settings">إعدادات النظام</string>
<!-- Noun, menu item used to show help. [CHAR_LIMIT=none] -->
<string name="menu_help">مساعدة</string>
<!-- URL pointing to help text. If empty, no link to help will be created [DO NOT TRANSLATE] -->
<string name="help_url" translatable="false"></string>
<!-- Strings for the contextual action bar (CAB) in All Apps -->
<skip />
<!-- Describes the button for uninstalling the currently selected application.
Text is not displayed, but provided for accessibility. [CHAR_LIMIT=none] -->
<string name="cab_menu_delete_app">إلغاء تثبيت التطبيق</string>
<!-- Describes the button for getting details/info about currently selected application.
Text is not displayed, but provided for accessibility. [CHAR_LIMIT=none] -->
<string name="cab_menu_app_info">تفاصيل التطبيق</string>
<!-- Appears in the CAB when an app is selected in All Apps or Customize mode. [CHAR_LIMIT=50] -->
<string name="cab_app_selection_text">تم اختيار 1 تطبيق</string>
<!-- Appears in the CAB when a widget is selected in Customize mode. [CHAR_LIMIT=50] -->
<string name="cab_widget_selection_text">تم اختيار 1 أداة</string>
<!-- Appears in the CAB when a folder is selected in Customize mode. [CHAR_LIMIT=50] -->
<string name="cab_folder_selection_text">تم اختيار 1 مجلد</string>
<!-- Appears in the CAB when a shortcut is selected in Customize mode. [CHAR_LIMIT=50] -->
<string name="cab_shortcut_selection_text">تم اختيار 1 اختصار</string>
<!-- Permissions: -->
<skip />
<!-- Permission short label -->
<string name="permlab_install_shortcut">تثبيت الاختصارات</string>
<!-- Permission description -->
<string name="permdesc_install_shortcut">يسمح للتطبيق بإضافة اختصارات دون تدخل المستخدم.</string>
<!-- Permission short label -->
<string name="permlab_uninstall_shortcut">إلغاء تثبيت الاختصارات</string>
<!-- Permission description -->
<string name="permdesc_uninstall_shortcut">يسمح للتطبيق بإزالة اختصارات دون تدخل المستخدم.</string>
<!-- Permission short label -->
<string name="permlab_read_settings">قراءة إعدادات الشاشة الرئيسية والاختصارات</string>
<!-- Permission description -->
<string name="permdesc_read_settings">يسمح للتطبيق بقراءة الإعدادات والاختصارات في الشاشة الرئيسية.</string>
<!-- Permission short label -->
<string name="permlab_write_settings">كتابة إعدادات الشاشة الرئيسية والاختصارات</string>
<!-- Permission description -->
<string name="permdesc_write_settings">يسمح للتطبيق بتغيير الإعدادات والاختصارات في الشاشة الرئيسية.</string>
<!-- Widgets: -->
<skip />
<!-- Text to show user in place of a gadget when we can't display it properly -->
<string name="gadget_error_text">مشكلة في تحميل الأداة</string>
<!-- Text to inform the user that they can't uninstall a system application -->
<string name="uninstall_system_app_text">هذا تطبيق نظام ولا يمكن إلغاء تثبيته.</string>
<!-- Title of the Android Dreams (screensaver) module -->
<string name="dream_name">مشغل الصواريخ</string>
<!-- Default folder title -->
<string name="folder_hint_text">مجلد بلا اسم</string>
<!-- Accessibility -->
<skip />
<!-- The format string for Workspace descriptions [CHAR_LIMIT=none] -->
<string name="workspace_description_format">شاشة الرئيسية %1$d</string>
<!-- The format string for default page scroll text [CHAR_LIMIT=none] -->
<string name="default_scroll_format">الصفحة %1$d من %2$d</string>
<!-- The format string for Workspace page scroll text [CHAR_LIMIT=none] -->
<string name="workspace_scroll_format">شاشة الرئيسية %1$d من %2$d</string>
<!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] -->
<string name="apps_customize_apps_scroll_format">صفحة التطبيقات %1$d من %2$d</string>
<!-- The format string for AppsCustomize Apps page scroll text [CHAR_LIMIT=none] -->
<string name="apps_customize_widgets_scroll_format">صفحة الأدوات %1$d من %2$d</string>
<!-- Clings -->
<!-- The title text for the workspace cling [CHAR_LIMIT=none] -->
<string name="workspace_cling_title">اجعل نفسك في المنزل</string>
<!-- The description of how to use the workspace [CHAR_LIMIT=none] -->
<string name="workspace_cling_move_item">يمكنك وضع تطبيقاتك المفضلة هنا.</string>
<!-- The description of how to open all apps from the workspace [CHAR_LIMIT=none] -->
<string name="workspace_cling_open_all_apps">لرؤية جميع تطبيقاتك، المس الدائرة.</string>
<!-- The title text for the All Apps cling [CHAR_LIMIT=none] -->
<string name="all_apps_cling_title">اختر بعض التطبيقات</string>
<!-- The description of how to pick up and add an item to the workspace [CHAR_LIMIT=none] -->
<string name="all_apps_cling_add_item">لإضافة تطبيق إلى الشاشة الرئيسية، المس واحتفظ به.</string>
<!-- The title text for the Folder cling [CHAR_LIMIT=none] -->
<string name="folder_cling_title">نظم تطبيقاتك باستخدام المجلدات</string>
<!-- The description of how to move an app [CHAR_LIMIT=none] -->
<string name="folder_cling_move_item">لتحريك تطبيق، المس واحتفظ به.</string>
<!-- The description of how to create a folder [CHAR_LIMIT=none] -->
<string name="folder_cling_create_folder">لإنشاء مجلد جديد على الشاشة الرئيسية، ضع تطبيقًا فوق آخر.</string>
<!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] -->
<string name="cling_dismiss">حسناً</string>
<!-- Error message on dummy custom cling layout [DO NOT TRANSLATE] -->
<!-- <add-resource type="string" name="default_folder_name" /> -->
<!-- Folder accessibility -->
<!-- The format string for when a folder is opened, speaks the dimensions -->
<string name="folder_opened">تم فتح المجلد، <xliff:g id="width" example="5">%1$d</xliff:g> في <xliff:g id="height" example="3">%2$d</xliff:g></string>
<!-- Instruction that clicking outside will close folder -->
<string name="folder_tap_to_close">اضغط لإغلاق المجلد</string>
<!-- Instruction that clicking outside will commit folder rename -->
<string name="folder_tap_to_rename">اضغط لحفظ إعادة التسمية</string>
<!-- Indication that folder closed -->
<string name="folder_closed">تم إغلاق المجلد</string>
<!-- Folder renamed format -->
<string name="folder_renamed">تم إعادة تسمية المجلد إلى <xliff:g id="name" example="Games">%1$s</xliff:g></string>
<!-- Folder name format -->
<string name="folder_name_format">مجلد: <xliff:g id="name" example="Games">%1$s</xliff:g></string>
<!-- Strings used in device overlays -->
<!-- Clings -->
<!-- Dummy string [CHAR_LIMIT=40] -->
<!-- Dummy string [CHAR_LIMIT=60] -->
<!-- Dummy string [CHAR_LIMIT=40] -->
<!-- Dummy string [CHAR_LIMIT=60] -->
</resources>

View File

@@ -1,17 +0,0 @@
package com.test.qqy.launcher22;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}

View File

@@ -7,10 +7,8 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.3'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20'
// classpath 'com.android.tools.build:gradle-experimental:3.3.2'
// classpath 'com.trend.lazyinject:aopweave:3.4.0-beta'
classpath 'com.android.tools.build:gradle:8.10.0'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.0-Beta2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}

View File

@@ -20,6 +20,5 @@ android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
android.injected.testOnly=false
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false