gpt4 book ai didi

android - 将服务器类添加到 android.jar

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:05 26 4
gpt4 key购买 nike

现在我可以访问隐藏的和内部的 android API,但现在我想访问服务器中的 AlarmManagerService 之类的东西。我使用 adb pull system/framework/services.jarservices.jar 更改为 services.zip 解压了所有服务器类的目录(包括我正在寻找的 AlarmManagerService)。我现在的问题是如何将这些服务器类添加到我可以在 Eclipse 中使用的 android.jar 文件中?

我希望我的措辞有意义。让我知道是否有任何我可以澄清的困惑。

编辑:从本质上讲,当一切都说完了之后,我希望能够毫无错误地执行如下所示的操作:

import com.android.server.AlarmManagerService;

public class TestActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

AlarmManagerService ams = new AlarmManagerService(this.getApplicationContext());
ams.setTime(1313);
}
}

另一个编辑:

我在查看所有源代码后发现了这一点。

像 AlarmManagerService 这样的类只有包可见性,这就是它不能被导入的原因。有些类是公共(public)的,但许多其他 com.android.server 类具有包构造函数,因此无法实例化。

这是 com.android.server.* 我能够导入并成功创建一个对象:

import com.android.server.AttributeCache;                   
import com.android.server.BootReceiver;
import com.android.server.BrickReceiver;
import com.android.server.ClipboardService;
import com.android.server.ConnectivityService;
import com.android.server.DevicePolicyManagerService;
import com.android.server.DiskStatsService;
import com.android.server.DropBoxManagerService;
import com.android.server.EntropyService;
import com.android.server.InputMethodManagerService;
import com.android.server.LocationManagerService;
import com.android.server.MasterClearReceiver;
import com.android.server.NativeDaemonConnectorException;
import com.android.server.NetStatService;
import com.android.server.NotificationPlayer;
import com.android.server.ProcessMap;
import com.android.server.ProcessStats;
import com.android.server.SystemBackupAgent;
import com.android.server.SystemServer;
import com.android.server.ThrottleService;
import com.android.server.TwilightCalculator;
import com.android.server.Watchdog;

import com.android.server.connectivity.Tethering;

import com.android.server.status.AnimatedImageView;
import com.android.server.status.CloseDragHandle;
import com.android.server.status.DateView;
import com.android.server.status.ExpandedView;
import com.android.server.status.IconMerger;
import com.android.server.status.LatestItemView;
import com.android.server.status.NotificationData;
import com.android.server.status.NotificationLinearLayout;
import com.android.server.status.StatusBarService;
import com.android.server.status.StatusBarView;
import com.android.server.status.StorageNotification;
import com.android.server.status.TickerView;
import com.android.server.status.TrackingPatternView;
import com.android.server.status.TrackingView;
import com.android.server.status.UsbStorageActivity;

最佳答案

android.jar 仅包含公共(public) API 的类文件,我认为您对“com.android”包或其内部包进行了更改。因此,为了反射(reflect) eclipse 中的更改,您必须将路径明确添加到您的 service.jar 到您的项目中。但请记住,这不会在运行时反射(reflect)出来,因为您正在使用的模拟器或设备尚未更新您的更改。而且您不能通过简单地修改 jar 文件来更新它们,因为设备或模拟器使用图像“system.img”,它内部有 .dex 文件作为库而不是内部 API 的 .jar 文件。要对设备/模拟器进行更改,您必须构建整个代码,为此您可以引用 http://source.android.com/source/index.html .

关于android - 将服务器类添加到 android.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com