下载种子工程与SDK
1、种子工程下载
将从交付页面下载的种子工程文件,解压后导入Android Studio。
2、Playground2下载地址
https://warehouse.corp.powermobile.app:30244/playground2_android/
Playground可以辅助weex开发人员调试。
3、SDK下载
交付页面中,不同项目对应不同的SDK,其文件名为:MADCore_CID,CID为客户ID(由产品开发人员提供),例如种子工程的CID为GREEN,需要下载MADCore_GREEN.aar。
1、在主工程的build.gradle中加入以下配置:
repositories {
flatDir {
dirs 'libs'
}
}
2、将MADCore_CID.aar拷贝到与主工程libs目录下
3、主工程build.gradle添加以下依赖:
api(name: 'MADCore_GREEN', ext: 'aar')
api 'com.android.support:support-v4:28.0.0'
api "com.android.support:appcompat-v7:28.0.0"
api "com.android.support:recyclerview-v7:28.0.0"
4、assets目录添加注册表文件(registry.dat 该文件由后管提供)
注意: assets目录下可放置central.dat(可选),registry.dat(必选),repo_main.dat(可选),central_version.dat(可选,一些版本的后管不会生成该文件,自即日起提供的后管版本都会有此文件[manager后管49版本开始存在该文件,Capricorn后管获取此文件方式参见下属获取注册表文件说明) ,投产前建议把所有上述文件都放置在assets目录下。
compileSdkVersion必须<=29,targetSdkVersion必须<=28。
1、用Android Studio导入解压好的种子工程,然后将MADCore_CID.aar拷贝工程的app/ immutable/libs目录下
2、assets目录添加注册表文件(registry.dat 该文件由后管提供)
1、不能使用其他项目的SDK
2、assets目录下可放置central.dat
(可选),registry.dat
(必选),repo_main.dat
(可选),central_version.dat
(可选,一些版本的后管以及crc发布方式不会生成该文件)manager后管49版本开始存在该文件,Capricorn后管获取此文件方式参见下属获取注册表文件说明) ,投产前建议把所有上述文件都放置在assets目录下
3、app/ immutable目录下的immutable.gradle文件不能修改
4、compileSdkVersion必须<=29,targetSdkVersion必须<=28
1、在程序启动时(在Application中)调用SDK的引擎类(Engine.java)的initEnvironment方法进行环境初始化配置
方式1(已废弃)
/**
* @param app application对象
* @param isOpenLog 日志开关 true:开启 false:关闭
* @param openCockroach bandage开关(全局异常捕获)
* @param usePortService 端口开关 true:使用端口进行网络请求 false:使用接口进行网络请求
* @param launchModel APP启动时资源的拉取方式是同步还是异步
* @param httpProxy 代理地址(供抓包时配置)
* @param grayFlag 传入0表示使用默认的灰度ui(弹框),传入除0之外的其它int类型的值表示自定义灰度ui
* @param callback 初始化回调
*/
Engine.initEnvironment(this, true, true, false, MADConfig.LaunchModel.SYNC,
"", 0, new Engine.InitEnvCallback() {
@Override
public void doInitFinish() {
}
});
方式2 推荐 (版本号>1000)
EnvironmentConfig config = new EnvironmentConfig.Builder()
.setOpenLog(false)
.setOpenCockroach(false)
.setUsePortService(false)
.setLaunchModel(MADConfig.LaunchModel.SYNC)
.setHttpProxy("")
.setGrayFlag(0)
.setCustomHttpAdapter(null)
.setNeedDeviceID(true)
.setNeedVerifyProcessInfo(true)
.setNeedMagician(true)
.build();
Engine.initEnvironment(app, config, callback);
接口说明
属性 | 参数 | 说明 |
---|---|---|
setOpenLog(boolean) | true:打开日志 false:关闭日志 | 日志开关(默认关闭) |
setOpenCockroach(boolean) | true:打开 false:关闭 | bandage开关(全局异常捕获) |
setUsePortService(boolean) | true:端口模式 false:接口模式 | 应用内部数据交互模式切换:端口开关,默认使用接口 |
SYNC:同步 ASYNC:异步 | 初始化时请求central的方式为异步/同步(当前强制为同步) | |
setHttpProxy(String) | 数据格式:https://127.0.0.1:8080 |
设置客户端代理地址, |
setGrayFlag(int) | 0:使用默认灰度弹窗ui | 传入0表示使用默认的灰度ui(弹框),传入除0之外的其它int类型的值表示自定义灰度ui |
setCustomHttpAdapter(IWXHttpAdapter) | IWXHttpAdapter:自定义的weex网络适配器 | 自定义weex的网络适配器,默认为null |
setNeedDeviceID(boolean) | true:需要 false:禁止 | SDK是否在初始化时获取设备id;**注:**SDK获取设备id后仅存于环境变量中, |
setNeedVerifyProcessInfo(boolean) | true:需要 false:禁止 | MADP初始化前是否需要判断是否是当前进程,默认需要判断,避免多进程情况下多次初始化sdk引发未知问题(**背景:**有些应用市场要求app隐私协议同意之前禁止获取任何信息,包括敏感非敏感信息) |
setNeedMagician(boolean) | true:打开 false:关闭 | 行为分析开关-由于GREEN版本包含行为分析,但部分项目在未使用的情况下,依然会触发行为分析接口,获取部分设备信息,因此增加开关控制 (>1078) |
同时别忘记在清单文件中进行注册。
2、如果你的项目不需要上述1中类似的初始化工作,SDK中提供了DefaultApplicaiton.java类,该类已经完成了SDK引擎的初始化工作,你只需将其添加在清单文件Application节点中即可,如:
<application
android:name="tech.madp.core.DefaultApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
</application>
引擎初始化方法一般情况下只需要调用一次,并且只能再Application即程序启动时进行调用。
SDK里引擎的启动支持启动配置好的完整启动链里的场景(启动链里配置了某个仓库里的各个场景的启动顺序,具体参考其它文档),也支持启动某仓库里配置的某一个单一场景。启动触发的时机可在APP应用内的任何地方。
1、 如果启动已经配置好的完整启动链,可通过Engine.startup()启动,如:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//启动中心服务器配置好的场景启动链
Engine.startup();
}
}
此时SDK会进入根据启动链的配置打开场景页面。
SDK提供了DefaultActivity.java,该类内部进行了startup()操作,如果你不想写startup(),可用该类替代,注意使用该类需要在清单文件中进行注册。
备注:DefaultActivity.java和DefaultApplication.java一般用于程序的显示入口和程序的启动入口时才使用,其中DefaultActivity.java还需要在清单文件中配置显示入口,如下所示:
<application
android:name="tech.madp.core.DefaultApplication"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="tech.madp.core.DefaultActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application
2、 如果单独启动仓库的某一个场景,可通过Engine.launchStage方法启动,方法说明如下:
public static void launchStage(String stageid)
参数为String类型的场景id,为中心服务器配置的某个仓库里的场景,参数格式支持形如:
仓库名.场景id?参数key1=参数value1&… &参数key(n)=参数value(n)
其中:仓库名.场景id
为必选项, ?参数key1=参数value1&… &参数key(n)=参数value(n)
为可选项,用于向即将打开的场景传递参数。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//启动main仓库的launcher(加载器)场景
Engine.launchStage("main.launcher");
//启动main仓库的myaccount(我的账户)场景,同时传递参数name=张三丰,age=20给场景
Engine.launchStage("main.myaccount?name=张三丰&age=20");
}
}
3、离线bundle
当资源打包后的产生的离线bundle,可将生成离线bundle文件夹下的文件拷贝至主工程assets目录下即可。
注意:在后管部署成功的前提下才能通过后管获取注册表
默认用户名:csii,默认密码:111111
2、进入默认应用
3、注册表输入域介绍
中心服务器文件地址:获取中心服务器文件(central.dat)地址,格式:(后管IP+端口)/publish/CID/appid/appid-(default【默认default】或版本号)/central.dat
CID:租户ID,默认是csii,如需修改,请联系商务
appid:如下图
版本号:查看方式,如下图
获取中心服务器文件(central.dat)正确获取方式为后管资源存储的web服务地址,此处为了说明如何以简单方式获取注册表,故此处配置的是后管地址。
4、下载注册表
复制中心服务器文件地址的url全路径,复制到浏览器,修改下载文件为registry.dat,然后回车下载即可。
说明:central.dat、registry.dat和repo_main.dat皆为后管同一路径,所以三个文件都可以通过这种后管的简单方式进行下载。