解决项目打jar包,资源文件不能打包的问题

需求:

封装了工具类和框架,其中用到了资源文件(res文件下的图片,xml等),将我们封装的工具类使用在客户的app上,要求以jar包的方式调用,不能暴露源码。

出现问题:

我封装了一个UI,需要用到资源文件,但是eclipse不能满足将项目联同资源文件一起打包,尽管Export Jar File时全勾选了.


问题解决思路:

1.使用一个中间项目,添加工具类的jar和资源文件,然后引用这个中间项目

2.使用反射的方法解决jar内的类访问不到中间项目资源文件的问题


问题解决思路

问题解决的步骤:

  1.工具类项目中通过反射来访问资源文件最重要的步骤

    /**
 *
 * 通过反射获取所在项目包下的资源文件id
 * @author Appjoyo
 *
 */
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;  
    }

}


这样引用:


//        因为要封装成jar包,所以通过反射的方式获取资源id
        int layoutId = MResource.getIdByName(mActivity.getApplication(), "layout", "slidingmenumain");
        mSlidingMenu = (SlidingMenu) LayoutInflater.from(mActivity).inflate(layoutId, null);



    

 2.将工具类的项目打成jar包,此处简称tool.jar,注意在导出时只勾选src

 3.新建一个项目 ,此处简称为jarLibrary,将tool.jar添加到该项目的lib文件下。

 4.将工具类中用到的资源文件 ,直接粘贴复制到jarLibrary项目的res对应目录下。

 5.将项目jarLibrary设置为Library项目(右键单击jarLibrary,选择 properties,选择Android,将isLibrary勾选,最后点击确定)

 6.客户项目,此处简称为WorkApp,引用jarLibrary(右键单击,选择 properties,选择Android,选择add,选择jarLibrary,最后点击确定)




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值