美文网首页
在Android Studio中使用自定义framework.j

在Android Studio中使用自定义framework.j

作者: 云中的醉 | 来源:发表于2019-08-01 09:42 被阅读0次

    为了调用系统隐藏方法和参数,可使用自定义framework.jar方式来进行调用

    一 修改要调用的信息

    在Android源代码中将需要调用的方法或者变量上的hide信息删掉,如下:

    /************************删之前***************************/
        /** @hide */
        public static final int MIRACAST_DISABLED = 0;
        /** @hide */
        public static final int MIRACAST_SOURCE   = 1;
        /** @hide */
        public static final int MIRACAST_SINK     = 2;
        /** Internal use only @hide */
        public void setMiracastMode(int mode) {
            try {
                mService.setMiracastMode(mode);
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }
    
    /************************删之后***************************/
        public static final int MIRACAST_DISABLED = 0;
        public static final int MIRACAST_SOURCE   = 1;
        public static final int MIRACAST_SINK     = 2;
        public void setMiracastMode(int mode) {
            try {
                mService.setMiracastMode(mode);
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }
    

    二 拷贝Jar文件

    将Android源码编译后中的 android\out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar文件拷贝到Android Studio项目中的libs文件,我这里将其重命名为framework

    三 配置Jar文件

    第一步

    在app的build.gradle的依赖中修改,如下:

    一定要注释掉之前对libs下所有Jar依赖

    //    添加对该jar的依赖,并注释掉对libs所有jar依赖的配置
          compileOnly files('libs/framework.jar')
    //    implementation fileTree(dir: 'libs', include: ['*.jar'])
    

    第二步

    在项目的build.gradle中添加对framework的依赖信息,如下:

    allprojects {
        repositories {
            google()
            jcenter()
        }
        gradle.projectsEvaluated {
            tasks.withType(JavaCompile) {
                options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\framework.jar')
            }
        }
    }
    

    四 重新同步项目

    将项目重新同步,即可调用到隐藏方法(虽然方法调用时可能为红色)

    五 可能出现的问题

    将项目同步后,修改app目录下的app.iml文件
    将自定义framework.jar的依赖顺序调整到Android sdk之前
    在文件内搜索framework.jar,然后剪切粘贴到Android API 26 Platform上方

    注意:每次同步项目后app.iml的顺序都会变,所有每次都有手动调整

    调整后如下:

    <orderEntry type="library" name="Gradle: __local_aars__:E.\work\android_studio_project\WFDSindDroid\app\libs\framework.jar:unspecified@jar" level="project"/>
    
    <orderEntry type="jdk" jdkName="Android API 26 Platform" jdkType="Android SDK" />
    

    相关文章

      网友评论

          本文标题:在Android Studio中使用自定义framework.j

          本文链接:https://www.haomeiwen.com/subject/szbfdctx.html