1

我想让 Launcher2 (AOSP Launcher) 成为我的 Android 4.1.1 设备(分支 jb-release;API 级别 16)的独立数据应用程序(不是系统)。

我找不到任何关于修改什么以使其独立的资源,所以我自己尝试了一下。希望有人可以帮助我这样做(有关错误列表,请参见下面的列表)。

源代码可以在这里找到: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)中的相同

启动器.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

实用程序.java:

The import android.graphics.TableMaskFilter cannot be resolved

工作区.java:

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

2 回答 2

3

这是很多人似乎都想做的事情,而我不久前也做过。

我让 Launcher2 作为一个独立的应用程序编译和运行,然后在这里开源我的工作。

这是 ICS 的 Launcher2,不是 JB,但它们非常相似。请注意,它并非完全没有错误,并且添加小部件会使应用程序崩溃(因为它使用系统级权限。也许如果您通过 root 安装它会起作用)。

这是我必须做的所有事情的清单,我记得做过:

有很多我们无法使用的方法,例如setFastXXX(例如)。setFastAlpha()将这些更改为setXXX(例如,'setAlpha()`)对我有用。

一些我们可以通过的东西getSystemService()直接在代码中初始化,比如 Vibrator 类的使用。这些需要更改才能使用getSystemService()

我最终将 Android 源代码中的许多方法直接复制到我的类中。

您可以签出新版本的 ICS launcher2,并针对我开源的版本运行 diff 以查看完整的更改列表。

于 2013-02-26T10:51:02.340 回答
2

chrislacy 在 GitHub 上托管了一个独立的 Android JellyBean Launcher,您可以将 AppWidgets 添加到主屏幕:) https://github.com/chrislacy/LauncherJellyBean

于 2013-03-14T22:59:30.957 回答