将拥有自己资源的工程打包成jar给其他工程引用

本文介绍如何在将包含多种资源的工程打包为jar后,解决资源引用问题,确保其他工程能够正确引用这些资源。通过自定义类实现资源ID获取,以及将资源文件复制到引用jar包的工程中,确保资源正常加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果一个工程有他自己的资源,即不光是只有java文件,还有图片,布局等文件打包成jar包,如果这个工程引用资源的方式是R.xxx.yyy,那么打成jar后给其它工程引用是不行的

解决办法:
1.编写引用资源的类如下:

public class MResource {
    public static int getIdByName(Context context, String className, String name) {
        String packageName = context.getPackageName();
        Class r = null;
        int id = 0;
        try {
            r = Class.forName(packageName + ".R");

            Class[] classes = r.getClasses();
            Class desireClass = null;

            for (int i = 0; i < classes.length; ++i) {
                if (classes[i].getName().split("\\$")[1].equals(className)) {
                    desireClass = classes[i];
                    break;
                }
            }

            if (desireClass != null)
                id = desireClass.getField(name).getInt(desireClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }

        return id;
    }

2.在要打包成jar包的工程中引用资源用以下方式

    private int wheelBackground = MResource.getIdByName(getContext(), "drawable", "wheel_bg");
    private int wheelForeground = MResource.getIdByName(getContext(), "drawable", "wheel_val");
//  private int wheelBackground = R.drawable.wheel_bg;
//  private int wheelForeground = R.drawable.wheel_val;

3.然后把这些资源文件copy到引用这个jar包的工程,并且把要打包成jar包的工程只保留java文件打包成jar,引用即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一鱼浅游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值