程序笔记   发布时间:2022-07-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android Studio 4.2及以上创建的项目工程 引入本地framework.jar踩坑记录大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

直接上干货

1.项目根目录下的build.gradle文件࿰c;最外层目录结构࿰c;添加以下代码

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompilE) {
            Set<File> fileSet = options.bootstrapClasspath.getFiles()
            List<File> newFileList =  new ArrayList<>();
            //相对位置࿰c;根据存放的位置修改路径࿰c;如下frameworkmodul为项目的一个module
            newFileList.add(new File("frameworkmodul/libs/framework.jar"))
            newFileList.addAll(fileSet)
            options.bootstrapClasspath = files(
                    newFileList.toArray()
            )
        }
    }
}

2.framework.jar存放的module下的build.gradle文件࿰c;最外层目录结构࿰c;添加以下代码࿰c;把.iml里的

<orderEntry type="jdk" jdkName="Android API XX Platform" jdkType="Android SDK"/>

放到该文件最后(该行原来的是在iml文件中࿰c;第二个component结构中的第一个orderEntry)

.iml文件已存放在了项目根目录下的.idea/modules目录下了࿰c;填写格式如下࿰c;其中“../”为相对路径࿰c;frameworkmodule为framework.jar存放的module;

preBuild {
    doLast {
        def imlFile = file("../.idea/modules/frameworkmodul/" + project.parent.name + "." + project.name + ".iml")
        try {
            def parsedXml = (new XmlParser()).parse(imlFilE)
            def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
            parsedXml.component[1].remove(jdkNodE)
            def sdkString = "Android API " + android.compileSdkVersion.subString("Android-".length()) + " Platform"
            new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
            groovy.xml.XmlUtil.serialize(parsedXml, new Fi@R_489_11396@utputStream(imlFilE))
        } catch (FileNotFoundException E) {
        }
    }
}

3.framework.jar存放的module下的build.gradle文件࿰c;dependencies结构中࿰c;增加

dependencies {
    compi@R_489_11396@nly files('/libs/framework.jar')
}

4.framework.jar所在的module中࿰c;如果要使用framework中的隐藏的方法或实现隐藏的接口࿰c;该类建议使用Java Class(Kotlin Class项目代码会报红࿰c;代码无法追踪到本地的framework.jar中)࿰c;这样可以直接引用到相应的方法࿰c;而且项目不报红(若刚开始引用不到࿰c;先运行下项目试下)࿰c;如下:

import android.media.AudioRecord;
import android.os.bundle;

import androidx.Annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class FrameworkTestActivity extends AppCompatActivity implements AudioRecord.ICAEListener {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        setContentView(R.layout.activity_framework);
    }

    @Override
    public void onWakeup(float v, int i, int i1, String s) {

    }

    @Override
    public void onASRAudioCallBACk(byte[] bytes, int i) {

    }

    @Override
    public void onDWakeupAudioCallBACk(byte[] bytes, int i) {

    }
}

如有错误欢迎指正c;如有疑问请留言~

大佬总结

以上是大佬教程为你收集整理的Android Studio 4.2及以上创建的项目工程 引入本地framework.jar踩坑记录全部内容,希望文章能够帮你解决Android Studio 4.2及以上创建的项目工程 引入本地framework.jar踩坑记录所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。