Skip to content

Commit

Permalink
2.5.0版本增加
Browse files Browse the repository at this point in the history
  • Loading branch information
MaYiFei1995 committed Jun 26, 2024
1 parent 5d525e8 commit f833d2d
Show file tree
Hide file tree
Showing 21 changed files with 653 additions and 4 deletions.
223 changes: 223 additions & 0 deletions Doc/2.5.0/DemoHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
package com.example.oaidtest2;

import android.content.Context;
import android.util.Log;

import com.bun.miitmdid.core.InfoCode;
import com.bun.miitmdid.core.MdidSdkHelper;
import com.bun.miitmdid.interfaces.IIdentifierListener;
import com.bun.miitmdid.interfaces.IPermissionCallbackListener;
import com.bun.miitmdid.interfaces.IdSupplier;
import com.bun.miitmdid.pojo.IdSupplierImpl;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.util.List;

/**
* Date: 16:27 2021/2/26 0026
* Version: 1.0.3
**/
public class DemoHelper implements IIdentifierListener {
public static long startTimeMillis;
public static long endTimeMillis;
public static final String TAG = "DemoHelper";
private final AppIdsUpdater appIdsUpdater;
private boolean isCertInit = false;
private boolean isSupported = false;
private boolean isLimited = false;
private boolean isSupportRequestOAIDPermission = false;
public boolean isSDKLogOn = true; // TODO (1)设置 是否开启sdk日志
public static final String ASSET_FILE_NAME_CERT = "com.example.oaidtest2.cert.pem"; // TODO (2)设置 asset证书文件名

public DemoHelper(AppIdsUpdater appIdsUpdater, String lib) {
// TODO (3)加固版本在调用前必须载入SDK安全库,因为加载有延迟,推荐在application中调用loadLibrary方法
// System.loadLibrary("msaoaidsec");
this.appIdsUpdater = appIdsUpdater;
}

public void getDeviceIds(Context cxt) {
getDeviceIds(cxt, true, true, true);
}

/**
* 获取OAID
*
* @param cxt
*/
public void getDeviceIds(Context cxt, boolean isGetOAID, boolean isGetVAID, boolean isGetAAID) {
// TODO (4)初始化SDK证书
startTimeMillis = System.nanoTime();
if (!isCertInit) { // 证书只需初始化一次
// 证书为PEM文件中的所有文本内容(包括首尾行、换行符)
try {
startTimeMillis = System.nanoTime();
isCertInit = MdidSdkHelper.InitCert(cxt, loadPemFromAssetFile(cxt, ASSET_FILE_NAME_CERT));
} catch (Error e) {
e.printStackTrace();
}
if (!isCertInit) {
Log.w(TAG, "getDeviceIds: cert init failed");
}
}

// (可选)设置InitSDK接口回调超时时间(仅适用于接口为异步),默认值为5000ms.
// 注:请在调用前设置一次后就不再更改,否则可能导致回调丢失、重复等问题
try {
MdidSdkHelper.setGlobalTimeout(5000);
} catch (Error error) {
error.printStackTrace();
}
int code = 0;
// TODO (5)调用SDK获取ID
try {
// if x86 throws Error
code = MdidSdkHelper.InitSdk(cxt, isSDKLogOn, isGetOAID, isGetVAID, isGetAAID, this);
} catch (Error error) {
error.printStackTrace();
} finally {
long time = endTimeMillis - startTimeMillis;
Log.d(TAG, "Time Consume:" + time);
}

// TODO (6)根据SDK返回的code进行不同处理
IdSupplierImpl unsupportedIdSupplier = new IdSupplierImpl();
if (code == InfoCode.INIT_ERROR_CERT_ERROR) { // 证书未初始化或证书无效,SDK内部不会回调onSupport
// APP自定义逻辑
Log.w(TAG, "cert not init or check not pass");
onSupport(unsupportedIdSupplier);
} else if (code == InfoCode.INIT_ERROR_DEVICE_NOSUPPORT) { // 不支持的设备, SDK内部不会回调onSupport
// APP自定义逻辑
Log.w(TAG, "device not supported");
onSupport(unsupportedIdSupplier);
} else if (code == InfoCode.INIT_ERROR_LOAD_CONFIGFILE) { // 加载配置文件出错, SDK内部不会回调onSupport
// APP自定义逻辑
Log.w(TAG, "failed to load config file");
onSupport(unsupportedIdSupplier);
} else if (code == InfoCode.INIT_ERROR_MANUFACTURER_NOSUPPORT) { // 不支持的设备厂商, SDK内部不会回调onSupport
// APP自定义逻辑
Log.w(TAG, "manufacturer not supported");
onSupport(unsupportedIdSupplier);
} else if (code == InfoCode.INIT_ERROR_SDK_CALL_ERROR) { // sdk调用出错, SSDK内部不会回调onSupport
// APP自定义逻辑
Log.w(TAG, "sdk call error");
onSupport(unsupportedIdSupplier);
} else if (code == InfoCode.INIT_INFO_RESULT_DELAY) { // 获取接口是异步的,SDK内部会回调onSupport
Log.i(TAG, "result delay (async)");
} else if (code == InfoCode.INIT_INFO_RESULT_OK) { // 获取接口是同步的,SDK内部会回调onSupport
Log.i(TAG, "result ok (sync)");
} else {
// sdk版本高于DemoHelper代码版本可能出现的情况,无法确定是否调用onSupport
// 不影响成功的OAID获取
Log.w(TAG, "getDeviceIds: unknown code: " + code);
}
}

/**
* APP自定义的getDeviceIds(Context cxt)的接口回调
*
* @param supplier
*/
@Override
public void onSupport(IdSupplier supplier) {
if (supplier == null) {
Log.w(TAG, "onSupport: supplier is null");
return;
}
if (appIdsUpdater == null) {
Log.w(TAG, "onSupport: callbackListener is null");
return;
}
endTimeMillis = System.nanoTime();
boolean isSupported;
boolean isLimited;
String oaid, vaid, aaid;
// 获取Id信息
// 注:IdSupplier中的内容为本次调用MdidSdkHelper.InitSdk()的结果,不会实时更新。
// 如需更新,需调用MdidSdkHelper.InitSdk()
isSupported = supplier.isSupported();
isLimited = supplier.isLimited();
oaid = supplier.getOAID();
vaid = supplier.getVAID();
aaid = supplier.getAAID();
float timeConsume = (endTimeMillis - startTimeMillis)/1000000f;;
// TODO (7) 自定义后续流程,以下显示到UI的示例
String idsText = "support: " + (isSupported ? "true" : "false") +
"\nlimit: " + (isLimited ? "true" : "false") +
"\nOAID: " + oaid +
"\nVAID: " + vaid +
"\nAAID: " + aaid +
"\nTime Consume: "+ timeConsume + "ms" +
"\n";
Log.d(TAG, "onSupport: ids: \n" + idsText);
this.setIsSupported(isSupported);
this.setIsLimited(isLimited);
this.setSupportRequestOAIDPermission(supplier.isSupportRequestOAIDPermission());
appIdsUpdater.onIdsValid(idsText);

}

public interface AppIdsUpdater {
void onIdsValid(String ids);
}

/**
* 从asset文件读取证书内容
*
* @param context
* @param assetFileName
* @return 证书字符串
*/
public static String loadPemFromAssetFile(Context context, String assetFileName) {
try {
InputStream is = context.getAssets().open(assetFileName);
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuilder builder = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
builder.append(line);
builder.append('\n');
}
return builder.toString();
} catch (IOException e) {
Log.e(TAG, "loadPemFromAssetFile failed");
return "";
}
}

public long getTimeConsume() {
// 因为证书只初始化一次,所以这个只能获取一次
return this.endTimeMillis - this.startTimeMillis;
}

public void requestOAIDPermission(Context appContext, IPermissionCallbackListener listener) {
MdidSdkHelper.requestOAIDPermission(appContext, listener);
}

public boolean getIsSupported() {
return this.isSupported;
}

public boolean setIsSupported(boolean isSupported) {
return this.isSupported = isSupported;
}

public boolean getIsLimited() {
return this.isLimited;
}

public boolean setIsLimited(boolean isLimited) {
return this.isLimited = isLimited;
}

public boolean getIsSupportRequestOAIDPermission() {
return isSupportRequestOAIDPermission;
}

public void setSupportRequestOAIDPermission(boolean supportRequestOAIDPermission) {
isSupportRequestOAIDPermission = supportRequestOAIDPermission;
}
}
Binary file not shown.
4 changes: 4 additions & 0 deletions Doc/2.5.0/example_batch.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
��Ա�ʺ�,����,����,APP����
example,com.example.a,[email protected],a
example,com.example.b,[email protected],b
example,com.example.c,[email protected],c
Binary file added Doc/2.5.0/oaid_sdk_2.5.0.aar
Binary file not shown.
Binary file added Doc/2.5.0/oaid_sdk_2.5.0_demo_src.zip
Binary file not shown.
Binary file added Doc/2.5.0/oaid_sdk_demo_release_20240521.apk
Binary file not shown.
139 changes: 139 additions & 0 deletions Doc/2.5.0/release note.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
2024年5月23日 version 2.5.0
1. 升级荣耀厂商集成包,实现荣耀手机上应用级管控功能
2. 新增腾讯厂商集成包,实现腾讯应用宝电脑版上获取OAID标识功能

2024年4月10日 version 2.4.1
1. 升级360厂商集成包,优化360手机上获取OAID功能逻辑
2. 修复已知问题

2024年1月25日 version 2.4.0
1. 升级vivo厂商集成包,实现vivo手机上应用级管控功能
2. 新增小度厂商集成包,实现小度智能屏上获取OAID标识功能
3. 升级OPPO厂商集成包,提升OPPO手机上获取标识成功率

2023年11月20日 version 2.3.0
1.升级OPPO厂商集成包,实现OPPO手机上应用级管控功能
2.完善vivo获取VAID接口逻辑
3.增加荣耀手机厂商集成包
4.增加华为手机上获取VAID和AAID标识功能

2023年5月16日 version 2.2.0
1. 升级华为接口,解决HMS Core 6.10.4.302版本以上获取不到OAID问题
2.升级Freeme厂商集成包,能适配Freeme 系统老版本
3.修复其他已知问题

2023年2月14日 version 2.1.0
1. 优化360手机厂商判断逻辑
2. 完善360手机上在Android10以下版本获取OAID开关标志位的逻辑
3. 修复已知问题

2022年9月5日 version 2.0.0
1. 增加支持360OS接口
2. 新增freeme支持品牌名称
3. 修复在部分5.0手机上接口异常问题
4. 优化获取华为oaid接口逻辑

2022年5月20日 version 1.2.1
1. 修复isLimited接口返回错误状态而导致的OAID可获取判断错误问题

2022年4月28日 version 1.2.0
1. 更新OPPO sdk,优化获取id超时问题
2. 更新加固方案,修复Android13版本不兼容问题
3. 新增获取单个id的接口

2021年12月21日 version 1.1.0
1. 优化魅族标识判断逻辑
2. 升级vivo厂商和oppo厂商集成包
3. 修复代码安全问题

2021年10月21日 version 1.0.30
1. 更新魅族接口
2. 更新加固方案,固定加固包中so文件名称
3. 修复已知问题

2021年9月30日 version 1.0.29
1. 增加支持步步高(小天才)接口
2. 捕获第三方SDK接口方法实现报错,修复崩溃问题
3. 更新加固方案,减小加固包体积
4. 修复已知问题

2021年9月9日 version 1.0.27
1. 更新魅族、OPPO接口;
2. 增加异步获取超时时间设定功能;
3. 更新加固方案,兼容 Android 12;
4. 兼容旧版本DemoHelper(可以集成和运行,但会返回不支持);
5. 修复其他已知问题。

2021年7月2日 version 1.0.26
1.增加支持荣耀、realme、酷赛、Cool OS;
2.增加包名校验机制;
3.更新加固方案;
4.增加补充设备标识符开关接口。

2020年12月4日 version 1.0.25
1.修复了特定情况下会出现“检测到试用版运行”的bug;
2.解决了联想反射找不到类的问题。

2020年9月7日 version 1.0.23
1.修改OPPO获取接口;
2.更新混淆字典;
3.修改已知加固方案产生的bug。

2020年7月21日 version 1.0.22
1.为解决之前加固引起的问题,更新加固方式;
2.去除不必要的信息收集;
3.更新部分厂家的接口方式。

2020年2月6日 version 1.0.13
1.调整sdk包架构,支持系统级接入,目前只在部分手机上支持,开发者不用更新sdk,即可享受sdk的升级;
2.支持freemeos,ssuios,致濮os;
3.支持一加和黑鲨手机;
4.sdk android sdk提升到28;
5.修复vivo,oppo在低版本不支持的手机上引起的崩溃;
6.部分类不加固,修复部分手机的加固崩溃问题。

2019年12月2日 version 1.0.11
1.修复三星,联想在不支持的手机上不回调的bug;
2.修复webview依赖导致的问题;
3.初始化过程中,出现任何问题都会走回调;
4.sdk里做初始化检查,避免重复初始化;
5.vivo 9.0以下不调用获取oaid;
6.去掉默认aaid的生成;
7.修改华为空指针的bug。

2019年10月14日 version 1.0.10
1.支持三星,魅族,nubia手机设备;
2.更新华硕,vivo 支持代码;
3.调整AsyncTask使用并行线程池,改进性能;
4.调整输出异常为输出调试信息,避免开发者疑问;
5.vivo改为异步,改进性能;
6.修改加固内联定义,解决崩溃;
7.不再提供udid接口,避免造成误解。

2019年9月18日 version 1.0.9
1、解决部分APP、机型崩溃问题;
2、增加了部分使用建议和F&Q。

2019年8月28日 version 1.0.8
1、增加华硕接口支持;
2、解决动态加载和插件化;
3、优化代码,支持反射调用;
4、解决android9以上找不到方法的问题;
5、更新说明文档。

2019年8月16日 version 1.0.6
1、去掉所有非必需数据的采集;
2、兼容AndroidX;
3、修改小米部分手机上取udid的问题;
4、更新OPPO接口调用;
5、增加联想接口支持;
6、优化SDK包体积;
7、支持armeabi。

2019年8月6日 version 1.0.5
1、去掉所有非必需数据的采集;
2、兼容AndroidX;
3、修改小米部分手机上取udid的问题;
4、更新OPPO接口调用;
5、增加联想接口支持;
6、优化SDK包体积。
7 changes: 7 additions & 0 deletions Doc/2.5.0/supplierconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"supplier":{
"vivo":{
"appid":"100215079"
}
}
}
Loading

0 comments on commit f833d2d

Please sign in to comment.