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ファイルの下
@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;
    }
}

終わりだ!