我们在开发SDK的时候有时候需要兼容Eclipse版本和AS版本,AS版本就不说了没多大问题,主要是Eclipse版本会有问题。当开发之使用Eclipse开发的时候接入jar包(AS打包成aar,解压获取Jar)的时候会报错资源id找不到,这是因为aar里面的资源id生成了唯一的int值,但是单独将aar解压拿出jar,去找id的值的时候会找不到的,解决办法有:
利用反射:工具类已封装好
package com.mchsdk.paysdk.utils;
import android.content.Context;
import android.content.res.Resources;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
public class MCHInflaterUtils {
private static final String TAG = "MCHInflaterUtils";
/**
* 获取布局文件
*
* @param con
* 上下文
* @param layoutName
* 布局文件名称
* @return
*/
public static int getLayout(Context con, String layoutName) {
return getIdByName(con, "layout", layoutName);
}
/**
* 获取控件
*
* @param con
* 上下文
* @param controlName
* 控件名称
* @return
*/
public static int getControl(Context con, String controlName) {
return getIdByName(con, "id", controlName);
}
/**
* 获取资源文件
*
* @param con
* 上下文
* @param drawableName
* 资源名称
* @return
*/
public static int getDrawable(Context con, String drawableName) {
return getIdByName(con, "drawable", drawableName);
}
/**
* Refer to external project resour