Marsサーバとクライアントdemo実行チュートリアル
5178 ワード
Wikiアドレス:https://github.com/Tencent/mars/wiki
最初のステップ:まず、android、iosクライアント、サービス側のコードを含むいくつかの部門にプロジェクトをダウンロードする必要があります.
ステップ2:serviceエンドコードを実行します.
cmdはsample/serviceディレクトリの下に入り、python start_を実行します.server.py .
最初の実行には多くのプロファイルをダウンロードする必要があります.時間がかかります.実行が完了すると、2つのインタフェースがポップアップされます.サービス側がすでに稼働していることを証明します
ステップ3:androidプロジェクトをasにインポートします.wrapperモジュールでは、ローカルのid構成を完了する必要があります.
wrapperモジュール/service/MarsServiceStub.classファイルの下
デフォルトではnullが返されます.
ステップ4:実行できます.
以上はdemoの実行チュートリアルで、以下はプロジェクト統合のチュートリアルです.
-------------------------
独立したモジュール:
ステップ1:プロジェクトgradleに依存を追加する
およびグローバルな構成パラメータ
ステップ2:app.graldeにmars依存パッケージを追加
ステップ3:公式に提供されているdemoのwrapperモジュールを自分のプロジェクトに追加し、gradleに導入を追加します.
ステップ4:アプリケーションで初期化作業を行う
終わりだ!
最初のステップ:まず、android、iosクライアント、サービス側のコードを含むいくつかの部門にプロジェクトをダウンロードする必要があります.
ステップ2:serviceエンドコードを実行します.
cmdはsample/serviceディレクトリの下に入り、python start_を実行します.server.py .
最初の実行には多くのプロファイルをダウンロードする必要があります.時間がかかります.実行が完了すると、2つのインタフェースがポップアップされます.サービス側がすでに稼働していることを証明します
ステップ3:androidプロジェクトをasにインポートします.wrapperモジュールでは、ローカルのid構成を完了する必要があります.
wrapperモジュール/service/MarsServiceStub.classファイルの下
@Override
public String[] onNewDns(String host) {
return new String[]{
"xx.xx.98.xxx"
};
}
デフォルトではnullが返されます.
ステップ4:実行できます.
以上はdemoの実行チュートリアルで、以下はプロジェクト統合のチュートリアルです.
-------------------------
独立したモジュール:
ステップ1:プロジェクトgradleに依存を追加する
classpath "com.github.dcendents:android-maven-gradle-plugin:1.4.1"
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.7.6'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.1.1"
およびグローバルな構成パラメータ
ext {
GROUP = 'com.tencent.mars.sample'
VERSION_NAME_PREFIX = '1.2.1'
VERSION_NAME_SUFFIX = '' // '-SNAPSHOT'
WRAPPER_VERSION_NAME_PREFIX = '1.1.8'
WRAPPER_VERSION_NAME_SUFFIX = '' // '-SNAPSHOT'
javaVersion = JavaVersion.VERSION_1_7
VERSION_NAME = "${VERSION_NAME_PREFIX}${VERSION_NAME_SUFFIX}"
}
ステップ2:app.graldeにmars依存パッケージを追加
implementation 'com.tencent.mars:mars-core:1.2.1'
implementation 'com.tencent.mars:mars-xlog:1.0.6'
ステップ3:公式に提供されているdemoのwrapperモジュールを自分のプロジェクトに追加し、gradleに導入を追加します.
compile project(path: ':wrapper')
ステップ4:アプリケーションで初期化作業を行う
/**
* Created by malei on 2018/4/13.
*/
public class MyApplication extends Application {
private static final String TAG = "Mars.SampleApplication";
private static Context context;
public static AppLogic.AccountInfo accountInfo = new AppLogic.AccountInfo(
new Random(System.currentTimeMillis() / 1000).nextInt(), "anonymous");
public static volatile boolean hasSetUserName = false;
private static class SampleMarsServiceProfile extends DebugMarsServiceProfile {
@Override
public String longLinkHost() {
return "marsopen.cn";
}
}
@Override
public void onCreate() {
super.onCreate();
context = this;
System.loadLibrary("stlport_shared");
System.loadLibrary("marsxlog");
openXlog();
MarsServiceNative.setProfileFactory(new MarsServiceProfileFactory() {
@Override
public MarsServiceProfile createMarsServiceProfile() {
return new SampleMarsServiceProfile();
}
});
// NOTE: MarsServiceProxy is for client/caller
// Initialize MarsServiceProxy for local client, can be moved to other place
MarsServiceProxy.init(this, getMainLooper(), null);
MarsServiceProxy.inst.accountInfo = accountInfo;
// Auto bind all activity event
// ActivityEvent.bind(getApplicationContext());
Log.i(TAG, "application started");
}
@Override
public void onTerminate() {
Log.i(TAG, "application terminated");
super.onTerminate();
Log.appenderClose();
}
public static void openXlog() {
int pid = android.os.Process.myPid();
String processName = null;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : am.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
processName = appProcess.processName;
break;
}
}
if (processName == null) {
return;
}
final String SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
final String logPath = SDCARD + "/marssample/log";
String logFileName = processName.indexOf(":") == -1 ? "MarsSample" : ("MarsSample_" + processName.substring(processName.indexOf(":") + 1));
if (BuildConfig.DEBUG) {
Xlog.appenderOpen(Xlog.LEVEL_VERBOSE, Xlog.AppednerModeAsync, "", logPath, logFileName, "");
Xlog.setConsoleLogOpen(true);
} else {
Xlog.appenderOpen(Xlog.LEVEL_INFO, Xlog.AppednerModeAsync, "", logPath, logFileName, "");
Xlog.setConsoleLogOpen(false);
}
Log.setLogImp(new Xlog());
}
public static Context getContext() {
return context;
}
}
終わりだ!