最近在做SDK封装的相关工作:
1)Eclipse封装:
可以先把.java文件提取出来打成jar包,然后再把资源文件提取出来copy到要用的工程中。类似友盟等sdk的封装那样。
2)AS封装:
把需要封装成SDK的项目打成AAR包,这个包不同于jar包。相当于整个工程打成包。然后在需要使用的工程直接引用aar包即可。
Eclipse封装比较麻烦一些。尤其是对一些资源文件。
下面这个方法可以帮你去掉R的引用。
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Resources;
/**
* 资源转换器 用于代替R
*/
public class ResConverter {
/**
* 获取资源ID
*
* @param context
* 上下文
* @param name
* 资源名称
* @param type
* 资源类型 id、drawable、layout
* @param packageName
* 包名
* @return
*/
public static final int getResId(Context context, String name, String type,
String packageName) {
Resources themeResources = null;
PackageManager pm = context.getPackageManager();
try {
themeResources = pm.getResourcesForApplication(packageName);
return themeResources.getIdentifier(name, type, packageName);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
使用方法
String pgName = context.getPackageName();
setContentView(ResConverter.getResId(context, "activity_main", "layout", pgName));
TextView tv= (TextView) findViewById(ResConverter.getResId(context, "tv", "id",pgName));