集成SDK
1、YunOS SDK接入需要的准备工作
1) 入驻YunOS开放平台,创建Native APP应用。
2) 选择需要的SDK,打包下载。
注意事项:下载的SDK中,有一张安全图片文件yw_1222.jpg ,在指定路径 res/drawable 下,请勿修改和移动,res目录下的东西全部放到工程对应目录下。
2、SDK加入工程
1)将下载的所有文件拷贝到自己项目工程对应的文件夹。
2)合并SDK中的清单文件
SDK初始化
使用AlibabaSDK.asyncInit方法来初始化SDK,建议将AlibabaSDK.asyncInit方法的调用放在Appliction的onCreate中,在应用启动时就初始化。(SDK中的所有方法都要在主线程中调用)
第二个参数为InitResultCallback,可以使用此回调判断AlibabaSDK是否初始化成功,如果初始化失败,大部分情况是签名认证失败,你的认证安全图片信息与keystore不一致。
AlibabaSDK.asyncInit(this, new InitResultCallback() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "初始化成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(int code, String message) {
Toast.makeText(MainActivity.this, "初始化异常", Toast.LENGTH_SHORT).show();
}
});
功能组件
YunOS基础包
1) YunOS免登授权组件YunosAuthService 使用说明: //open.yunos.com/doc/detail?documentId=103430
YunOS工具包
1) 线程池组件 ExecutorService
2) 数据打点组件 UserTrackerService
3) 淘宝开放平台接口组件 TopService
4) H5页面组件 H5WebPageService
YunOS工具包组件
线程池
public interface ExecutorService {
public void postHandlerTask(Runnable runnable);
public void postUITask(Runnable runnable);
public void postTask(Runnable runnable);
public Looper getDefaultLooper();
}
数据打点
public interface UserTrackerService {
/**
* @param label自定义事件名称
* @param page事件对应的页面
*/
public void sendCustomHit(String label, final Activity activity);
/**
* @param label自定义事件名称
* @param page事件对应的页面
* @param prop事件所携带的属性
*/
public void sendCustomHit(String label, String page, Map<String, String> prop);
/**
* @param label自定义事件名称
* @param time事件从开始到完成消耗的时长
* @param page事件对应的页面
* @param prop事件所携带的属性
*/
public void sendCustomHit(String label, long time, String page, Map<String, String> prop);
/**
* @param label 自定义事件名称
* @param eventId 事件 Id
* @param action 行为名称
* @param time 事件从开始到完成消耗的时长
* @param page 事件对应的页面
* @param prpos
*/
public void sendCustomHit(String label, int eventId, String action, long time, String page, Map<String, String> prpos);
淘宝开放平台接口
import java.util.Map;
public interface TopService
{
public Result<String> invoke(Map<String, String> paramMap);
}
示例:
public void getTaobaoTime(final Activity activity,
final ResultCallback<Result<String>> callback) {
new Thread(new Runnable() {
public void run() {
TopService topService = AlibabaSDK.getService(TopService.class);
Map<String, String> parameters = new HashMap<String, String>();
parameters.put(TopService.METHOD_KEY, "taobao.time.get");
parameters.put("format", "json");
try {
final Result<String> result = topService.invoke(parameters);
activity.runOnUiThread(new Runnable() {
public void run() {
if (result.code != ResultCode.SUCCESS.code) {
callback.onFailure(result.code, result.message);
} else {
callback.onSuccess(result);
}
}
});
} catch (final Exception e) {
activity.runOnUiThread(new Runnable() {
public void run() {
callback.onFailure(
ResultCode.HTTP_REQUEST_EXCEPTION.code,
e.getMessage());
}
});
}
}
}).start();
}
H5页面
public interface H5WebPageService {
public void showPage(Activity activity, FailureCallback callback, String url);
public void showPage(Activity activity, FailureCallback callback, UiSettings settings, String url);
}
混淆
-keepattributes Signature
-keep class sun.misc.Unsafe { *; }
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-keep class com.alipay.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-keep class com.ut.** {*;}
-dontwarn com.ut.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
常见问题
1) 初始化不成功开发者经常遇到的情况
1、生成的安全图片和程序的keystore是否一致,这个问题最常见,最好是重新生成apk,新打包SDK试试。
2、SDK包不完整。比如:so文件缺失,清单文件不完整,详细检查是相关文件是否都导入到项目中。
3、网络异常。比如:手机没有联网,模拟器网络问题,设置了网络代理等等。
2) 如果你用 Studio在运行中遇到Error:Execution failed for task ':app:dexDebug'.
> ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_60\bin\java.exe'' finished with non-zero exit value 2类似错误,可以删掉引用SDK中的Support-v4.jar后重新运行
常见错误code
参考:http://baichuan.taobao.com/portal/doc?articleId=406