关于SDK
软件开发工具包(Software Development Kit, SDK)。SDK一般封装了一些功能(常见的比如:账号管理、支付、推送、统计等等),并提供了相关编程接口让第三方调用,SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。
SDK工程
首先我新建一个Android工程,并创建一个SDK类,该类提供两个方法:init用于初始化SDK,login是显示登录界面的方法。
package linchaolong.sdk;
import android.content.Context;
import android.content.Intent;
public class SDK {
private static Context _ctx;
/**
* 初始化SDK
*
* @param ctx
*/
public static void init(Context ctx){
_ctx = ctx;
// 使用动态加载资源id工具类方法前必须先设置上下文
Res.setContext(ctx);
}
/**
* 登录
*/
public static void login(){
_ctx.startActivity(new Intent(_ctx, SDKActivity.class));
}
}
现在我想把这两个接口提供给第三方调用。java代码可以打成jar,但资源文件,如layout、drawble、raw等等,不能直接打到jar里,否则找不到资源。一般资源文件是直接拷贝到第三方工程,或者提供一个库工程第三方引用库工程,或者资源放到assets目录下。
而且,在导出java代码的时候,不能把R.java导出到jar里面,资源id在第三方工程编译时才确定,在SDK工程里如果直接使用R.xxx.xxx(如R.layout.main),第三方工程运行时查找资源就会出错。所以这里资源的id需要动态加载。一般有两种解决方法:
1