如何使用修改aosp框架代码构建的sdk?

How to use the sdk which is built by modifying the aosp framework code?

我是 Android 开源项目 (ASOP) 的新成员。为了研究目的,我一直在尝试使用我自己的更改制作自定义 android 版本。我在 Acitivty.java class 中更改了框架中的一些代码。添加了我的自定义函数,如下所示:

 public final void requestPermissions(@NonNull String[] permissions, int requestCode, String permReason, String dataScope) {
    
    Log.i("PermissionTracker", "Rashed Tracking Permission Manager having requestCode"+Integer.toString(requestCode));
Log.i("PermissionReason", "I am asking permission because of "+permReason);
Log.i("PermissionReason", "The data scope would be "+dataScope);

/*
        Rashed edit end April 23, 2021
    */
    if (requestCode < 0) {
        throw new IllegalArgumentException("requestCode should be >= 0");
    }
    if (mHasCurrentPermissionsRequest) {
        Log.w(TAG, "Can request only one set of permissions at a time");
        // Dispatch the callback with empty arrays which means a cancellation.
        onRequestPermissionsResult(requestCode, new String[0], new int[0]);
        return;
    }
    Intent intent = getPackageManager().buildRequestPermissionsIntent(permissions);
    startActivityForResult(REQUEST_PERMISSIONS_WHO_PREFIX, intent, requestCode, null);
    mHasCurrentPermissionsRequest = true;
}

在那之后,我还做了一些其他更改,主要是添加了一些日志消息并获得了输出。我使用以下命令构建了目录并且它有效:

. build/envsetup.sh
lunch sdk_phone_x86 sdk-eng
make -j16 sdk

我的目标是生成自定义 sdk,它可以在 Android 工作室以及我在另一个应用程序中工作的地方使用。我想从 Android Studio 中的应用调用我修改后的函数。我已成功更新 Android Studio sdk 目录。但问题是,我在 Android Studio 中看不到我修改后的代码。任何人都可以帮我吗?感谢您的提前建议。

如果您的修改是 android 框架的一部分,您需要在 Android Studio 项目中从 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates(例如)/classes.jar 复制修改后的 jar。

您还需要修改顶级 gradle 构建以添加:

allprojects {
    repositories {
        jcenter()
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << '-Xbootclasspath/p:app/src/main/lib/framework.jar'
        }
    }