// Path: payload_reader/src/main/java/com/meituan/android/walle/ChannelInfo.java
// public class ChannelInfo {
//     private final String channel;
//     private final Map<String, String> extraInfo;
// 
//     public ChannelInfo(final String channel, final Map<String, String> extraInfo) {
//         this.channel = channel;
//         this.extraInfo = extraInfo;
//     }
// 
//     public String getChannel() {
//         return channel;
//     }
// 
//     public Map<String, String> getExtraInfo() {
//         return extraInfo;
//     }
// }
// 
// Path: library/src/main/java/com/meituan/android/walle/WalleChannelReader.java
// public final class WalleChannelReader {
//     private WalleChannelReader() {
//         super();
//     }
// 
//     /**
//      * get channel
//      *
//      * @param context context
//      * @return channel, null if not fount
//      */
//     @Nullable
//     public static String getChannel(@NonNull final Context context) {
//         return getChannel(context, null);
//     }
// 
//     /**
//      * get channel or default
//      *
//      * @param context context
//      * @param defaultChannel default channel
//      * @return channel, default if not fount
//      */
//     @Nullable
//     public static String getChannel(@NonNull final Context context, @NonNull final String defaultChannel) {
//         final ChannelInfo channelInfo = getChannelInfo(context);
//         if (channelInfo == null) {
//             return defaultChannel;
//         }
//         return channelInfo.getChannel();
//     }
// 
//     /**
//      * get channel info (include channle & extraInfo)
//      *
//      * @param context context
//      * @return channel info
//      */
//     @Nullable
//     public static ChannelInfo getChannelInfo(@NonNull final Context context) {
//         final String apkPath = getApkPath(context);
//         if (TextUtils.isEmpty(apkPath)) {
//             return null;
//         }
//         return ChannelReader.get(new File(apkPath));
//     }
// 
//     /**
//      * get value by key
//      *
//      * @param context context
//      * @param key     the key you store
//      * @return value
//      */
//     @Nullable
//     public static String get(@NonNull final Context context, @NonNull final String key) {
//         final Map<String, String> channelMap = getChannelInfoMap(context);
//         if (channelMap == null) {
//             return null;
//         }
//         return channelMap.get(key);
//     }
// 
//     /**
//      * get all channl info with map
//      *
//      * @param context context
//      * @return map
//      */
//     @Nullable
//     public static Map<String, String> getChannelInfoMap(@NonNull final Context context) {
//         final String apkPath = getApkPath(context);
//         if (TextUtils.isEmpty(apkPath)) {
//             return null;
//         }
//         return ChannelReader.getMap(new File(apkPath));
//     }
// 
//     @Nullable
//     private static String getApkPath(@NonNull final Context context) {
//         String apkPath = null;
//         try {
//             final ApplicationInfo applicationInfo = context.getApplicationInfo();
//             if (applicationInfo == null) {
//                 return null;
//             }
//             apkPath = applicationInfo.sourceDir;
//         } catch (Throwable e) {
//         }
//         return apkPath;
//     }
// }


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.meituan.android.walle.ChannelInfo;
import com.meituan.android.walle.WalleChannelReader;
package com.meituan.android.walle.sample;




public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.read_channel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                readChannel();
            }
        });

    }

    private void readChannel() {
        final TextView tv = (TextView) findViewById(R.id.tv_channel);
        final long startTime = System.currentTimeMillis();
// Path: payload_reader/src/main/java/com/meituan/android/walle/ChannelInfo.java
// public class ChannelInfo {
//     private final String channel;
//     private final Map<String, String> extraInfo;
// 
//     public ChannelInfo(final String channel, final Map<String, String> extraInfo) {
//         this.channel = channel;
//         this.extraInfo = extraInfo;
//     }
// 
//     public String getChannel() {
//         return channel;
//     }
// 
//     public Map<String, String> getExtraInfo() {
//         return extraInfo;
//     }
// }
// 
// Path: library/src/main/java/com/meituan/android/walle/WalleChannelReader.java
// public final class WalleChannelReader {
//     private WalleChannelReader() {
//         super();
//     }
// 
//     /**
//      * get channel
//      *
//      * @param context context
//      * @return channel, null if not fount
//      */
//     @Nullable
//     public static String getChannel(@NonNull final Context context) {
//         return getChannel(context, null);
//     }
// 
//     /**
//      * get channel or default
//      *
//      * @param context context
//      * @param defaultChannel default channel
//      * @return channel, default if not fount
//      */
//     @Nullable
//     public static String getChannel(@NonNull final Context context, @NonNull final String defaultChannel) {
//         final ChannelInfo channelInfo = getChannelInfo(context);
//         if (channelInfo == null) {
//             return defaultChannel;
//         }
//         return channelInfo.getChannel();
//     }
// 
//     /**
//      * get channel info (include channle & extraInfo)
//      *
//      * @param context context
//      * @return channel info
//      */
//     @Nullable
//     public static ChannelInfo getChannelInfo(@NonNull final Context context) {
//         final String apkPath = getApkPath(context);
//         if (TextUtils.isEmpty(apkPath)) {
//             return null;
//         }
//         return ChannelReader.get(new File(apkPath));
//     }
// 
//     /**
//      * get value by key
//      *
//      * @param context context
//      * @param key     the key you store
//      * @return value
//      */
//     @Nullable
//     public static String get(@NonNull final Context context, @NonNull final String key) {
//         final Map<String, String> channelMap = getChannelInfoMap(context);
//         if (channelMap == null) {
//             return null;
//         }
//         return channelMap.get(key);
//     }
// 
//     /**
//      * get all channl info with map
//      *
//      * @param context context
//      * @return map
//      */
//     @Nullable
//     public static Map<String, String> getChannelInfoMap(@NonNull final Context context) {
//         final String apkPath = getApkPath(context);
//         if (TextUtils.isEmpty(apkPath)) {
//             return null;
//         }
//         return ChannelReader.getMap(new File(apkPath));
//     }
// 
//     @Nullable
//     private static String getApkPath(@NonNull final Context context) {
//         String apkPath = null;
//         try {
//             final ApplicationInfo applicationInfo = context.getApplicationInfo();
//             if (applicationInfo == null) {
//                 return null;
//             }
//             apkPath = applicationInfo.sourceDir;
//         } catch (Throwable e) {
//         }
//         return apkPath;
//     }
// }


// Path: app/src/main/java/com/meituan/android/walle/sample/MainActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.meituan.android.walle.ChannelInfo;
import com.meituan.android.walle.WalleChannelReader;

package com.meituan.android.walle.sample;




public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.read_channel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                readChannel();
            }
        });

    }

    private void readChannel() {
        final TextView tv = (TextView) findViewById(R.id.tv_channel);
        final long startTime = System.currentTimeMillis();
        final ChannelInfo channelInfo = WalleChannelReader.getChannelInfo(this.getApplicationContext());