2013-02-26 3 views
1

Я хотел бы сделать Launcher2 (AOSP Launcher) автономным приложением данных (не для системы) для моего устройства Android 4.1.1 (Branch jb-release, API уровня 16).Сделать Launcher2 автономным

Я не могу найти какие-либо ресурсы для изменения, чтобы сделать его автономным, поэтому я попробовал сам. Надеюсь, кто-то может помочь мне в этом (список ошибок см. В списках ниже).

Исходный код можно найти здесь: https://android.googlesource.com/platform/packages/apps/Launcher2/+/jb-release/src/com/android/launcher2

AppsCustomizedPagedView.java:

The import android.graphics.Insets cannot be resolved 
The import android.graphics.TableMaskFilter cannot be resolved 

Я думаю, оба из-за @Hide. Любое обходное решение или хорошее решение здесь?

Cling.java:

The method findViewToTakeAccessibilityFocusFromHover(View, View) of type Cling must override or implement a supertype method (Class Cling extends android.widget.FrameLayout) 
The method includeForAccessibility() is undefined for the type View 

HolographicOutlineHelper.java:

The import android.graphics.TableMaskFilter cannot be resolved 

То же, что и в AppsCustomizedPagedView.java (@Hide)

Launcher.java:

The import android.os.SystemProperties cannot be resolved 
The import com.android.common cannot be resolved 
The method clearAllAnimations() is undefined for the type ValueAnimator 
The method startSearch(String, boolean, ComponentName, Bundle, boolean) in the type SearchManager is not applicable for the arguments (String, boolean, ComponentName, Bundle, boolean, Rect) 
SystemProperties cannot be resolved 
The method requestAccessibilityFocus() is undefined for the type Cling 

PagedViewWidgetImageView.java:

The import android.graphics.Insets cannot be resolved 
The method getLayoutInsets() is undefined for the type Drawable 

RocketLauncher.java:

The import android.support cannot be resolved 
The constructor RocketLauncher.Board(RocketLauncher, null) is undefined 

SearchDropTargetBar.java:

The method getCompatibilityInfo() is undefined for the type Resources 

Utilities.java:

The import android.graphics.TableMaskFilter cannot be resolved 

Workspace.java:

The method getRealMetrics(DisplayMetrics) is undefined for the type Display 
The method setChildrenLayersEnabled(boolean) is undefined for the type ViewGroup 

ответ

3

Это то, что многие люди, кажется, хотят сделать, и то, что я сделал некоторое время назад.

Я получил Launcher2 для компиляции и запуска в качестве самостоятельного приложения, а затем откройте мои усилия here.

Это Launcher2 от ICS, а не JB, но они очень похожи. Обратите внимание, что это не полная ошибка, и добавление виджета приведет к сбою приложения (поскольку оно использует разрешение на уровне системы. Возможно, если вы установили через root, это сработает).

Вот список того, что все, что я должен был сделать, что я могу вспомнить делать:

Есть много способов, как setFastXXX (например, setFastAlpha()), которые не доступны для нас. Изменение их на setXXX (например, 'setAlpha() `) работало для меня.

Некоторые вещи, которые доступны нам через getSystemService(), инициализируются непосредственно в коде, например, использование класса Vibrator. Их необходимо изменить для использования getSystemService()

Я закончил копирование большого количества методов из исходного кода Android непосредственно в мои классы.

Вы можете проверить новую версию ICS launcher2 и запустить diff против той, которую я открыл, чтобы увидеть полный список изменений.

+0

Спасибо! Это действительно хорошая база для начала работы! Это то, что я буду делать. С какой версии вы начали? mr0 или mr1? – dtrunk

+0

@dtrunk Добро пожаловать! Я отредактирую свой пост с небольшим списком изменений, которые я сделал для его компиляции. –

+0

@dtrunk Я не помню, какую версию я использовал. Я делал кодирование почти год назад (когда-то в июне, я думаю), но только открывал его недавно, увидев много людей, пытающихся сделать то же самое. –

2

Существует автономный Android JellyBean Launcher размещен на GitHub по chrislacy, и вы можете добавить AppWidgets на домашний экран :) https://github.com/chrislacy/LauncherJellyBean

+1

Я не могу заставить это работать как автономное приложение - он начинается, но он не реагирует на касания в нижней панели (вы знаете, где находятся телефон, контакты, все приложения, сообщения и значки браузера). –