Android SDK v1
    • PDF

    Android SDK v1

    • PDF

    Article Summary

    Classic/VPC環境で利用できます。

    Android SDK v1を使用するでは、Effective Log Search & Analytics 2.0サービスが提供する Android SDK v1の使用方法を説明します。

    SDKを使用する手順は、次の通りです。

    1. 事前準備
    2. SDKのインストール
    3. SDKの初期化
    4. SDKの権限追加
    5. SDKを使用する

    1. 事前準備

    Android SDKをインストールするための事前準備事項は、次の通りです。

    1. NAVERクラウドプラットフォームコンソールで、プロジェクトを作成します。
    2. 作成したプロジェクト詳細情報画面で txtToken値を確認します。
    3. Android SDK v1をダウンロードします。

    2. Android SDK v1のインストール

    Android SDK v1をインストールする方法は、次の通りです。

    1. ダウンロードした SDKファイルの圧縮を解凍します。
    2. SDKをインストールする Androidプロジェクトの libs フォルダに SDKファイルを保存します。
      • Thriftプロトコルの使用時: nelo2-android-sdk-common-SDK버전명.jarnelo2-android-sdk-thrift-SDK버전명.jar ファイルを保存
      • HTTPSプロトコルの使用時: nelo2-android-sdk-common-SDK버전명.jarnelo2-android-sdk-https-SDK버전명.jar ファイルを保存
      • NELO SDK 0.9.0バージョンからプロトコルに従って libsフォルダに追加するライブラリファイルが異なります。
      • 例)
        .....
        android {
            compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_8
                targetCompatibility JavaVersion.VERSION_1_8
            }
        }
        .....
        repositories{
            flatDir{
                dirs 'libs'
            }
        }
        .....
        dependencies {
            implementation (name: 'nelo2-android-sdk-common', version: '0.12.0', ext: 'aar')
            implementation (name: 'nelo2-android-sdk-https', version: '0.12.0', ext: 'aar')
            implementation (name: 'nelo2-android-sdk-thrift', version: '0.12.0', ext: 'aar')
            implementation (name: 'tink-android', version: '1.4.0', ext: 'jar')
        }
        .....
        

    3. Android SDK v1の初期化

    Effective Log Search & Analytics 2.0 Android SDKは、以下の2つの方法で初期化できます。

    • Main Activityで initメソッド呼び出し
      • アプリクラッシュの発生時、Crash Dialogを作成せずにログ転送
      • 例)
        public class MainActivity extends Activity {
        
            .....
        
            @Override
        
            protected void onCreate(Bundle savedInstanceState) {
        
                .....
        
                NeloLog.init(getApplication(), "elsa-col.ncloud.com", 10006, "__プロジェクト_ID__", "__プロジェクトバージョン__");
        
                .....
        
            }
        
        }
        
    • Applicationで initメソッド呼び出し
      • @NeloConf アノテーションと一緒に使用
      • アプリクラッシュの発生時、設定に応じてクラッシュログを転送する Crash Dialog出力
      • 例)
        @NeloConf(
            collectorUrl = "elsa-col.ncloud.com",                   // Effective Log Search & Analytics 2.0 Collector URL   (required)
            serverPort = Nelo2Constants.SERVER_PORT_THRIFT,         // Effective Log Search & Analytics 2.0 Port Number     (required)
            projectName = "72356c50401b8e20_testproject",           // Effective Log Search & Analytics 2.0 Project ID     (required)
            mode = CrashReportMode.DIALOG,                          // Effective Log Search & Analytics 2.0 CrashReportMode (optional, Default : SLIENT)
            sendMode = NeloSendMode.ALL,                            // Effective Log Search & Analytics 2.0 SendMode        (optional, Default : ALL)
            debug = true,                                           // Effective Log Search & Analytics 2.0 Debug mode      (optional, Default : false)
            logSource = "elsa-android",                             // Effective Log Search & Analytics 2.0 Log Source      (optional, Default : nelo2-android)
            logType = "development",                                // Effective Log Search & Analytics 2.0 Log Type        (optional, Defalut : nelo2-log)
            resDialogText = R.string.crash_dialog_text,             // Crash Report Doalog Text     (required, if you set mode CrashReportMode.Dialog)
            resDialogTitle = R.string.crash_dialog_title            // Crash Report Dolog Title    (required, if you set mode CrashReportMode.Dialog)
        )
        public class MainApplication extends Application {
            .....
            @Override
            protected void onCreate() {
                .....
                NeloLog.init(this);
                .....
            }
        }
        .....
        
    参考
    • 初期化関数の詳細は、初期化 APIをご参照ください。
    • Applicationで initメソッドを呼び出し、初期化することをお勧めします。

    4. Android SDK v1の権限追加

    ネットワーク状態、デバイス情報、通信キャリア、Logcatなどの情報をインポートするための権限を追加します。AndroidManifest.xmlファイルに以下の内容を追加します。

    .....
    /** AndroidManifest.xml **/
        <!-- Neloログ転送のためのインターネットアクセス権限(必須) -->
        <uses-permission android:name="android.permission.INTERNET"/>
    
        <!-- Platform、Carrierなど携帯電話の情報にアクセスするための権限(必須) -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    
        <!-- Networkアクセス有無に対し、アクセスするための権限(必須) -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    
        <!-- Networkにアクセスできない場合、ファイルとして dataを保存するための権限 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    .....
    
          <!-- Crash Report Dialogを使用するために Applicationを作成した場合、名前を設定する必要がある-->
           <application ..... android:name="ApplicationName">
    .....
    
           <!-- Network状態をチェックして WiFiモードの場合のみログを転送するために追加する必要があるレシーバー -->
        <!-- SendModeを Allで使用する場合、追加する必要がない -->
        <receiver android:name="com.nhncorp.nelo2.android.util.NetworkStatusReceiver">
            <intent-filter>
                   <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
            </intent-filter>
        </receiver>
    .....
    
    <!-- Crash Report Dialogを使用するための Activity -->
    <!-- CrashReportMode.DIALOGを使用しない場合、追加する必要がない -->
    <activity android:name="com.nhncorp.nelo2.android.CrashReportDialog"
        android:theme="@android:style/Theme.Dialog"
        android:launchMode="singleInstance"
        android:excludeFromRecents="true"
        android:finishOnTaskLaunch="true" />
    .....
    

    5. SDKを使用する

    以下の Effective Log Search & Analytics 2.0 Android SDKを使用する実際のサンプルコードを参照し、プロジェクトにログを転送します。

    .....
    import com.nhncorp.nelo2.android.NeloLog;
    .....
    
    public class MainActivity extends Activity {
    .....
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            NeloLog.init(getApplication(),"ELSA-COLLECTOR-URL",10006,"ELSA-PROJECT-ID","PROJECT-VERSION");
            NeloLog.debug("ErrorCode","Message","ErrorLocation");   // Send Debug Message
            NeloLog.info("ErrorCode","Message","ErrorLocation");    // Send Info Message
            NeloLog.warn("ErrorCode","Message","ErrorLocation");    // Send Warn Message
            NeloLog.error("ErrorCode","Message","ErrorLocation");   // Send Error Message
            NeloLog.fatal("ErrorCode","Message","ErrorLocation");   // Send Fatal Message
            String nullString = null;
            try{
                nullString.toString();
            }catch(Exception e){
                NeloLog.crash(e,"ErrorCode","Message","ErrorLcoation"); // Send caught crash Message
            }
    
            NeloLog.debug("ErrorCode","Message","ErrorLocation");   // Send message with custom message
            int i = 10 / 0;     // Nelo send uncaught exception
        }
    .....
    

    Android SDK v1 APIの明細

    Android SDK v1は、以下のような APIを提供します。

    初期化 API

    Android SDK v1は、呼び出し方法による初期化関数を提供します。

    参考
    • 正常な動作のために、NeloLogを使用する前に NeloLogを初期化します。初期化は1回のみ行います。
    • Crash Report Dialogを使用するには、Applicationで初期化する必要があります。

    Main Activityで初期化

    Main Activityで初期化する APIは、次の通りです。

    static boolean init(Application application, String reportServer, int projectName, String appId, String projectVersion)
    static boolean init(Application application, String reportServer, int projectName, String appId, String projectVersion, String userId)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    Application applicationAndroidの applicationの情報
    • 一般的に getApplication() を使用
    String reportServerログ収集サーバのアドレス
    • Thrift: elsa-col.ncloud.com
    • HTTPS: https://elsa-col.ncloud.com/_store
    int serverPortログ収集サーバのポート情報
    • Thrift: 10006
    • Https: 443
    String appIdプロジェクトキー(プロジェクト詳細情報で確認)
    String appVersionログを転送するアプリのバージョン情報
    String userId転送するユーザー ID(オプション)

    例)

    NeloLog.init(getApplication(), "elsa-col.ncloud.com", 10006, "72356c50401b8e20_testproject", "1.0.0");
    

    Applicationで初期化

    Applicationで初期化する APIは、次の通りです。必ず @NeloConf アノテーションを一緒に入力します。

    boolean init (Application application)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    Application applicationAndroidのアプリケーション情報。一般的に getApplication() を入力

    例)

    @NeloConf(
    
        collectorUrl = "elsa-col.ncloud.com",      // NELO Collector URL   (required)
    
        serverPort = Nelo2Constants.SERVER_PORT_THRIFT,         // NELO Port Number     (required)
    
        projectName = "72356c50401b8e20_testproject",           // NELO Project ID      (required)
    
        mode = CrashReportMode.DIALOG,                          // NELO CrashReportMode (optional, Default : SLIENT)
    
        sendMode = NeloSendMode.ALL,                            // NELO SendMode        (optional, Default : ALL)
    
        debug = true,                                           // NELO Debug mode      (optional, Default : false)
    
        logSource = "elsa-android",   // NELO Log Source      (optional, Default : nelo2-android)
    
        logType = "development",            // NELO Log Type        (optional, Defalut : nelo2-log)
    
        resDialogText = R.string.crash_dialog_text,             // Crash Report Doalog Text     (required, if you set mode CrashReportMode.Dialog)
    
        resDialogTitle = R.string.crash_dialog_title            // Crash Report Doalog Title    (required, if you set mode CrashReportMode.Dialog)
    
    )
    
    public class MainApplication extends Application {
    
        .....
    
        @Override
    
        protected void onCreate() {
    
            .....
    
            NeloLog.init(this);
    
            .....
    
        }
    
    }
    
    .....
    

    System Field設定 API

    System Field値を設定する APIは、次の通りです。設定した値は以降転送するすべてのログで同様に転送します。

    ユーザー ID設定

    ユーザー IDを設定する APIは、次の通りです。

    static void void setUserID(String userID)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    String userIDユーザー ID

    例)

    NeloLog.setUserID("test");
    

    ログソース情報設定

    ログソースを設定する APIは、次の通りです。

    static void setLogSource(String logSource)
    static void setLogSource(String instanceName, String logSource)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    String logSourceログソース(logSource)の情報
    String instanceName動的インスタンス名

    例)

    NeloLog.setLogSource("NELO2 Android SDK LogSource");
    

    ログタイプ設定

    ログのタイプを設定する APIは、次の通りです。

    static void setLogType(String logType)
    static void setLogType(String instanceName, String logType)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    String logTypeログタイプ(logType)の情報
    String instanceName動的インスタンス名

    例)

    NeloLog.setLogType("NELO2 Android SDK LogType");
    

    ログ転送 API

    ログを転送する APIは、次の通りです。

    参考

    ログレベル(logLevel)ごとに関数を使用します。

    • ログレベル(logLevel): Fatal、Error、Warn、Info、Debug
    static void debug(String errorCode,String message,String location)
    static void debug(String errorCode,String message)
    static void info(String errorCode,String message,String location)
    static void info(String errorCode,String message)
    static void warn(String errorCode,String message,String location)
    static void warn(String errorCode,String message)
    static void error(String errorCode,String message,String location)
    static void error(String errorCode,String message)
    static void fatal(String errorCode,String message,String location)
    static void fatal(String errorCode,String message)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    String errorCodeNELOの errorCode フィールドにマッピングされる値
    String messageNELOの bodyにマッピングされる値
    String locationログが発生した場所

    例)

    NeloLog.error("test"、"テスト値"、"location");
    NeloLog.debug("test 2"、"テスト値 ")
    

    ログ転送 API(例外を含む)

    例外情報を含むログを転送する APIは、次の通りです。

    ログエラー転送

    例外情報を含むエラーログを転送する APIは、次の通りです。

    参考

    ログレベル(logLevel)ごとに関数を使用します。

    • ログレベル(logLevel): Fatal、Error、Warn、Info、Debug
    static void debug(Throwable t, String errorCode,String message,String location)
    static void debug(Throwable t, String errorCode,String message)
    static void info(Throwable t, String errorCode,String message,String location)
    static void info(Throwable t, String errorCode,String message)
    static void warn(Throwable t, String errorCode,String message,String location)
    static void warn(Throwable t, String errorCode,String message)
    static void error(Throwable t, String errorCode,String message,String location)
    static void error(Throwable t, String errorCode,String message)
    static void fatal(Throwable t, String errorCode,String message,String location)
    static void fatal(Throwable t, String errorCode,String message)
    
    // 動的インスタンスログの転送用
    static void debugWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
    static void debugWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
    static void infoWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
    static void infoWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
    static void warnWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
    static void warnWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
    static void errorWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
    static void errorWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
    static void fatalWithInstanceName(String instanceName, Throwable t, String errorCode, String message)
    static void fatalWithInstanceName(String instanceName, Throwable t, String errorCode, String message, String errorLocation)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    Throwable t例外(Exception)情報
    • Throwable 情報設定時に Causeというフィールドを保存し、getCause()した値を保存
    String errorCodeNELOの errorCode フィールドにマッピングされる値
    String messageNELOの bodyにマッピングされる値
    String locationログが発生した場所
    • location 情報を設定しない場合、Throwableでエラーが発生した場所を locationに保存

    例)

    try{
    
        int a = 10 / 0;
    
    } catch (Exception e) {
    
        NeloLog.error(e,"Error_Code",e.getMessage());
    
    }
    

    クラッシュログ転送

    例外状況で例外情報を含むクラッシュログを転送する APIは、次の通りです。

    参考
    • ユーザーがクラッシュ関数を呼び出すと同時に、クラッシュログと DmpData フィールドが NELOに転送されます。
    • アプリのパフォーマンスのために必要な場合のみ、呼び出してください(推奨)。
    static void crash(Throwable t, String errorCode,String message,String location)
    static void crash(Throwable t, String errorCode,String message)
    

    例)

    try{
        int a = 10 / 0;
    
    } catch (Exception e) {
    
        NeloLog.crash(e,"Error_Code",e.getMessage());
    
    }
    

    クラッシュコールバック API

    クラッシュコールバック APIを使用してクラッシュ発生時に、クラッシュログを転送する前にユーザーが定義した関数を呼び出せます。クラッシュコールバック APIは、次の通りです。

    static void setNeloCrashCallback(NeloCrashCallback neloCrashCallback)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    NeloCrashCallback neloCrashCallbackクラッシュ発生時に呼び出される関数
    • boolean beforeSendNeloCrash()
      • クラッシュログ転送の有無をリターン値で決定
    • boolean beforeInstanceSendNeloCrash(String instanceName) (現在未対応)
      • 複数のインスタンスを作成した場合、特定のインスタンスのみログを転送する場合、 instanceName値と比較してリターン値で決定
      • NeloLog.init()に初期化される場合の名前は Nelo2Constants.NELO_DEFAULT_INSTANCE_NAMEを使用
    • void finishInstanceSendNeloCrash(String instanceName) (現在未対応)
      • 特定のインスタンスのログ転送の完了時に呼び出す
    • void finishSendNeloCrash()
      • 全体クラッシュの転送完了時に呼び出す

    例)

    NeloLog.setNeloCrashCallback(new NeloCrashCallback() {
            @Override
            public boolean beforeSendNeloCrash() {
                Log.e("[AndroidApp]", "______________[[ beforeSendNeloCrash ]]__________________");
                return true;
            }
    
            @Override
            public boolean beforeInstanceSendNeloCrash(String instanceName) {
                Log.e("[AndroidApp]", "______________[[ beforeInstanceSendNeloCrash ]   " + instanceName + "]__________________");
                return Nelo2Constants.NELO_DEFAULT_INSTANCE_NAME.equalsIgnoreCase(instanceName);
            }
    
            @Override
            public void finishInstanceSendNeloCrash(String instanceName) {
                Log.e("[AndroidApp]", "______________[[ finishInstanceSendNeloCrash ]   " + instanceName + "]__________________");
            }
    
            @Override
            public void finishSendNeloCrash() {
                Log.e("[AndroidApp]", "______________[[ finishSendNeloCrash ]]__________________");
            }
        });
    

    オプション設定 API

    オプション設定 APIは、次の通りです。

    NELO使用有無設定

    NELOの使用有無を設定する APIは、次の通りです。

    static boolean getNeloEnable()
    static void setNeloEnable(boolean enabled)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    boolean enabledNELO使用有無の設定
    • falseに設定すると、すべてのログ転送とファイル保存機能を中断

    Debugモード使用有無設定

    Debugモードを使用する場合、Logcatに詳細ログを記録します。Debugモードの使用有無を設定する APIは、次の通りです。

    static boolean getDebug()
    static void setDebug(boolean enabled)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    boolean enabledDebugモードの使用有無
    • テスト環境でのみ trueに設定、運用環境では falseに設定

    クラッシュ転送方法設定

    クラッシュ転送方法を設定する APIは、次の通りです。

    static CrashReportMode getCrashMode()
    static void setCrashMode(CrashReportMode mode)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    CrashReportMode modeアプリクラッシュの発生時にクラッシュを転送する方法設定
    • AndroidManifest.xmlファイルの CrashReportDialogと関連している
    • CrashReportMode.NONE: アプリクラッシュの発生時にクラッシュを転送しない
    • CrashReportMode.SLIENT: アプリクラッシュの発生時にユーザーに通知せず、クラッシュログ転送
    • CrashReportMode.DIALOG: アプリクラッシュの発生時にユーザーに Crash Report Dialogを知らせ、ユーザーが承認した場合のみクラッシュを転送
      • @NeloConfのアノテーションの以下の項目と関連している
        • resDialogTitle: Crash Report Dialogのタイトル。res/values/string.xmlに定義された Stringの ID
        • resDialogText: Crash Report Dialogの説明。res/values/string.xmlに定義された Stringの ID

    ログ転送方法設定

    ログ転送方法を設定する APIは、次の通りです。

    static NeloSendMode getNeloSendMOde()
    static void setNeloSendMOde(NeloSendMode mode)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    NeloSendMode modeログ転送方法設定

    パラメータの設定値によるネットワーク別のログ転送方法は、次の通りです。

    • ALL

      ネットワーク状態転送方法
      3g転送
      Wi-Fi転送
      Not Connected転送しない、ファイル保存
    • ONLY_WIFI_WITH_FILE_SAVE

      ネットワーク状態転送方法
      3g転送しない、ファイル保存
      Wi-Fi転送
      Not Connected転送しない、ファイル保存
    • ONLY_WIFI_WITHOUT_FILE_SAVE

      ネットワーク状態転送方法
      3g転送しない、ファイル保存しない
      Wi-Fi転送
      Not Connected転送しない、ファイル保存しない
    参考

    ONLY_WIFI_WITH_FILE_SAVE または ONLY_WIFI_WITHOUT_FILE_SAVE 設定時にネットワーク状態を確認するための権限を追加します(Android SDK v1の権限追加を参照)。

    ログ保存ファイルの最大容量設定

    ログ保存ファイルの最大容量を設定する APIは、次の通りです。

    参考
    • ログ保存ファイルの最大容量のデフォルト値は、1MB(1024x1024byte)です。
    • 保存するログの容量が設定した最大値より大きい場合、過去のデータを削除してから保存します。
    • ログをファイルに保存するように設定する方法は、ログ転送方法設定をご参照ください。
    static int getMaxFileSize()
    static void setMaxFileSize(int max_file_size)
    static int getMaxFileSize(String instanceName)
    static void setMaxFileSize(String instanceName, int max_file_size)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    int max_file_sizeログ保存ファイルの最大容量
    String instanceName動的インスタンス名

    キューとファイルに保存したログをサーバに転送

    キューとファイルに一時保存したログをサーバに転送する APIは、次の通りです。

    static void flush()
    

    ログ保存ファイルの現在容量照会

    現在 NELOログが使用中のファイルの総容量を照会(リターン)する APIは、次の通りです。

    static long getAllNeloSaveLogFileSize()
    

    移行ファイルのサーバ転送有無設定

    移行ファイルを読み取ってサーバへの転送有無を設定する APIは、次の通りです。

    参考
    • ファイル名は InstanceNameとプロジェクト名を組み合わせてハッシュ(hash)値で作成された名前を使用します。
    • プロジェクト名とインスタンス名が変更され、既存ファイルを削除する場合、この関数を呼び出します。
    • flushFile値が true(デフォルト値)の場合は、移行ファイルを削除する前にすべての内容を読み取り、キューに保存します。
    static boolean clearSavedNeloLogFile(boolean flushFile)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    boolean flushFile移行ファイルを読み取り、サーバに転送するかどうかを決定

    ログレベル(loglevel)設定

    ログレベル(loglevel)以上のログのみ転送する APIは、次の通りです。

    参考
    • デフォルト値は Nelo2LogLevel.DEBUGです。
    • crash または flush のようにユーザーが明示的にログをサーバに転送リクエストする場合は LogLevel フィルタの値を無視します。
    static Nelo2LogLevel getLogLevelFilter()
    static void setLogLevelFilter(Nelo2LogLevel loglevel)
    

    各パラメータの説明は、次の通りです。

    パラメータ説明
    Nelo2LogLevel loglevelloglevel 以上のログのみ NELOに転送

    この記事は役に立ちましたか?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.