代码混淆
Android
框架使用Proguard对源码进行混淆处理,Proguard是一个Java类文件压缩器、优化器、混淆器、预校验器。压缩环节会检测以及移除没有用到的类、字段、方法以及属性。优化环节会分析以及优化方法的字节码。混淆环节会用无意义的短变量去重命名类、变量、方法。这些步骤让代码更精简,更高效,也更难被逆向(破解)。
为了使三方开发能正常使用框架功能,部分框架提供的类及方法应当被保持不被混淆:
-keep class com.hundsun.frameworkgmu.** { *; } -keep class com.hundsun.gmubase.** { *; } -keep class com.hundsun.h5update.** { *; } -keep class com.hundsun.hybrid.** { *; } -keep class com.hundsun.JSAPI.** { *; } -keep class com.hundsun.plugin.** { *; } -keep class com.hundsun.update.** { *; } -keep class com.hundsun.webresourcespace.** { *; } -keep class com.hundsun.webresourceupdate.** { *; } -keep class com.hundsun.jsnative.** { *; } -keep class com.hundsun.webgmu.** { *; } -keep class com.alibaba.** { *; } -keep class com.taobao.gcanvas.GCanvasJNI { *** bindTexture(...); *** init(...); *** sendEvent(...); *** setContextType(...); *** setDevicePixelRatio(...); *** texSubImage2D(...); *** registerCallback(...); } -keep class com.taobao.weex.bridge.** { *; } -dontwarn com.taobao.weex.bridge.**
|
App防root
Android
框架提供了appsecurity.gmu
配置文件入口用于防root提示,如果配置rootAlert
为true
在App启动完成后会判断当前设备是否已root,框架在启动完成后会判断当前设备是否已Root,如果设备已Root则弹窗“请勿在Root的设备上使用该应用!”来对用户进行提醒。
// appsecurity.gmu配置示例 { "config" : { "rootAlert" : true } }
|
App防模拟器运行
Android
框架提供了appsecurity.gmu
配置文件入口用于防模拟器提示,如果配置simulatorEnable
为false
在App启动完成后会判断当前设备是否运行在模拟器,框架在启动完成后会判断当前设备是否为Android模拟器,如果为模拟器则弹窗“请勿在模拟器上使用该应用!”来对用户进行提醒。
// appsecurity.gmu配置示例 { "config" : { "simulatorEnable" : false } }
|
App防越狱
iOS
框架提供了appsecurity.gmu
配置文件入口用于防越狱提示,如果配置rootAlert
为true
在App启动完成后会判断当前设备是否已越狱,如果设备已越狱则弹窗“检测到您的设备已越狱”来对用户进行提醒。
// appsecurity.gmu配置示例 { "config" : { "rootAlert" : true } }
|
安全输入
框架提供了安全键盘组件,同时安全键盘组件还提供了JSAPI用于在前端页面中使用安全键盘,使用方式如下:
let params={ "textShow" :"InstantAsterisk", "disorder" :"numberAndAlpha", "pressEffect" :"default", "keyboardType" :"alpha", "maxLength" : 11, "encryptMode" :"MD5", "titleText" :"adasdasd", } LightSDK.native.safekeyboardShow(params, (result) => {});
|
安全传输
Light平台提供了移动网关服务,客户端直接向移动网关发送请求,移动网关通过对HTTPS和HTTP报文签名来保证数据被安全传输,当网关收到请求后再将请求转发到业务后端服务上。框架提供了移动网关请求的JSAPI来供前端页面向移动网关发送请求,调用示例如下:
let params = { "method": "post", "path": "mgw/hello", "headers": { "custom": "Light" }, "data": { "compony": "Hundsun" } } LightSDK.net.execute(params, (result) => {});
|
唤醒密码
框架的本地验证组件提供了App唤醒密码功能,ios本地验证组件提供了三种验证方式:手势密码、Touch ID和Face ID,android本地验证组件提供了两种验证方式:手势密码和指纹识别。以上验证方式均可通过JSAPI调用,调用示例:
let params={ "verifyType":"FP" // FP为Touch ID(ios)、Face ID(ios)、指纹识别(android),GL为手势密码 } LightSDK.native.verifyOpeation(params, (result) => {});
|