From 4911fbb5cbccf95d2789dc86a08f0e1521a4a65d Mon Sep 17 00:00:00 2001 From: GaoLei Date: Mon, 21 Jan 2019 17:21:57 +0800 Subject: [PATCH 01/38] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=88=86=E6=94=AFkotli?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...brains_kotlin_kotlin_stdlib_1_1_60_jar.xml | 11 - ...brains_kotlin_kotlin_stdlib_1_2_71_jar.xml | 11 + ...kotlin_kotlin_stdlib_common_1_2_71_jar.xml | 11 + ...s_kotlin_kotlin_stdlib_jdk7_1_2_71_jar.xml | 11 + AndroidLearnProject/.idea/workspace.xml | 369 +++++++++++++----- .../profile-2019-01-21-17-16-13-431.json | 1 + .../profile-2019-01-21-17-16-13-431.rawproto | Bin 0 -> 15628 bytes .../profile-2019-01-21-17-21-11-796.json | 1 + .../profile-2019-01-21-17-21-11-796.rawproto | Bin 0 -> 13952 bytes 9 files changed, 304 insertions(+), 111 deletions(-) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_60_jar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_2_71_jar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_2_71_jar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_2_71_jar.xml create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-01-21-17-16-13-431.json create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-01-21-17-16-13-431.rawproto create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.json create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.rawproto diff --git a/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_60_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_60_jar.xml deleted file mode 100644 index 43d3124..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_1_60_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_2_71_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_2_71_jar.xml new file mode 100644 index 0000000..efdd78a --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_2_71_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_2_71_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_2_71_jar.xml new file mode 100644 index 0000000..32d55b9 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_2_71_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_2_71_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_2_71_jar.xml new file mode 100644 index 0000000..b52e964 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_2_71_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index 7cd6343..6bd0a93 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -12,8 +12,11 @@ - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + @@ -535,6 +505,11 @@ @@ -8896,6 +10934,7 @@ + @@ -8907,18 +10946,18 @@ + - + + - - @@ -9052,6 +11091,53 @@ + + + + + + - - - - - - + - + + + + + + + + + - + - - + + + + + + + + + + + + + - - + - - - + + - - - - - + + - - - @@ -9213,8 +11278,6 @@ - - @@ -9292,14 +11355,8 @@ - + - - + + + + + + + + + + + + + + - - - - - + + + - + - - + + + - + - - - + + + + + - + - - + + + - + - - + + + - + - - + + - - + - + - - + + + - + - - + + + - + - - + + + - + + + + + + + + + + + + + - + - - + + + - - - - + - - + + + - + - - + + + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + + + + + + + + + + + + - + - - + + + - - - - + - - + + + - + - - + + + + + @@ -9491,199 +11608,201 @@ - - - - - - - - - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + - + - - + + + + + - - - + + + - - + + + - + - - + + + - + + - - + + + - + - - + + + - - - - - + + + - + - - + + + - + - - + + + + + - - - - - + + + - - - - + + + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - - - - - + + + - - - - + + + - + - - - - - - + + + - - - - + - - + + - - - - - - + - - + + - + - - - + + + + + + + + + + + + + + diff --git a/AndroidLearnProject/app/build.gradle b/AndroidLearnProject/app/build.gradle index a8c5c7a..1caeca7 100644 --- a/AndroidLearnProject/app/build.gradle +++ b/AndroidLearnProject/app/build.gradle @@ -1,5 +1,7 @@ apply plugin: 'com.android.application' - +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' ext.getCNName = { java.util.HashMap map = new HashMap<>(); map.put("xiaomi", "xiaomi.apk"); @@ -92,11 +94,13 @@ android { } } + compileOptions { + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { api fileTree(include: ['*.jar'], dir: 'libs') - - annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] + kapt rootProject.ext.dependencies["butterknife-compiler"] api project(':basemodule') } diff --git a/AndroidLearnProject/app/src/main/AndroidManifest.xml b/AndroidLearnProject/app/src/main/AndroidManifest.xml index 2867a8f..80980d3 100644 --- a/AndroidLearnProject/app/src/main/AndroidManifest.xml +++ b/AndroidLearnProject/app/src/main/AndroidManifest.xml @@ -32,7 +32,14 @@ + android:configChanges="orientation|keyboardHidden|screenSize"> + + + + + + + diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt new file mode 100644 index 0000000..4ba5df7 --- /dev/null +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt @@ -0,0 +1,645 @@ +package com.android.learn + +import android.Manifest +import android.app.Activity +import android.content.Context +import android.content.Intent +import android.content.res.Configuration +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.os.Bundle +import android.os.Environment +import android.os.Handler +import android.support.design.widget.TabLayout +import android.support.v4.app.Fragment +import android.support.v7.widget.CardView +import android.support.v7.widget.LinearLayoutManager +import android.support.v7.widget.RecyclerView +import android.text.Spannable +import android.text.SpannableStringBuilder +import android.text.StaticLayout +import android.text.TextPaint +import android.text.TextUtils +import android.text.style.ForegroundColorSpan +import android.util.Log +import android.util.TypedValue +import android.view.Gravity +import android.view.KeyEvent +import android.view.View +import android.view.ViewGroup +import android.view.inputmethod.EditorInfo +import android.widget.EditText +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.TextView +import android.widget.Toast + +import com.android.learn.activity.LanguageActivity +import com.android.learn.activity.SearchResultActivity +import com.android.learn.adapter.MainTabAdapter +import com.android.learn.adapter.SearchRecordAdapter +import com.android.learn.base.activity.BaseActivity +import com.android.learn.base.activity.BaseMvpActivity +import com.android.learn.base.db.DBManager +import com.android.learn.base.db.SearchRecord +import com.android.learn.base.event.ChangeNightEvent +import com.android.learn.base.event.RestartMainEvent +import com.android.learn.base.mmodel.HotKeyData +import com.android.learn.base.utils.KeyboardUtils +import com.android.learn.base.utils.LanguageUtil +import com.android.learn.base.utils.LogUtil +import com.android.learn.base.utils.PermissionUtil +import com.android.learn.base.utils.SPUtils +import com.android.learn.base.utils.ScreenUtils +import com.android.learn.base.utils.Utils +import com.android.learn.base.view.TitleView +import com.android.learn.fragment.HomeFragment +import com.android.learn.fragment.KnowledgeFragment +import com.android.learn.fragment.WechatFragment +import com.android.learn.fragment.ProjectFragment +import com.android.learn.fragment.UserFragment +import com.android.learn.mcontract.MainActivityContract +import com.android.learn.mpresenter.MainActivityPresenter +import com.android.learn.view.CustomViewPager +import com.android.learn.view.SearchViewUtils +import com.android.speechdemo.bean.TalkBackVo +import com.android.speechdemo.xf.JsonParser +import com.chad.library.adapter.base.BaseQuickAdapter +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.iflytek.cloud.ErrorCode +import com.iflytek.cloud.InitListener +import com.iflytek.cloud.RecognizerResult +import com.iflytek.cloud.SpeechConstant +import com.iflytek.cloud.SpeechError +import com.iflytek.cloud.SpeechRecognizer +import com.iflytek.cloud.SpeechUtility +import com.iflytek.cloud.ui.RecognizerDialog +import com.iflytek.cloud.ui.RecognizerDialogListener +import com.iflytek.sunflower.FlowerCollector +import com.opensource.svgaplayer.SVGADrawable +import com.opensource.svgaplayer.SVGADynamicEntity +import com.opensource.svgaplayer.SVGAImageView +import com.opensource.svgaplayer.SVGAParser +import com.opensource.svgaplayer.SVGAVideoEntity + +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode +import org.json.JSONException +import org.json.JSONObject + +import java.io.IOException +import java.io.InputStream +import java.lang.reflect.Type +import java.net.URL +import java.util.ArrayList +import java.util.HashMap +import java.util.LinkedHashMap + +import butterknife.BindView +import butterknife.OnClick +import cn.lankton.flowlayout.FlowLayout +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response + +class MainActivity : BaseMvpActivity(), MainActivityContract.View { + + private lateinit var mFragments: ArrayList + private lateinit var titles: ArrayList + + @BindView(R.id.viewPager) + lateinit var viewPager: CustomViewPager + @BindView(R.id.tabLayout) + lateinit var tabLayout: TabLayout + @BindView(R.id.title) + lateinit var title: TextView + @BindView(R.id.header_layout) + lateinit var header_layout: TitleView + @BindView(R.id.iv_svga) + lateinit var iv_svga: SVGAImageView + @BindView(R.id.cardview_search) + lateinit var cardview_search: LinearLayout + @BindView(R.id.et_search) + lateinit var et_search: EditText + @BindView(R.id.iv_search) + lateinit var iv_search: ImageView + @BindView(R.id.iv_search_back) + lateinit var iv_search_back: ImageView + @BindView(R.id.history_recycleview) + lateinit var history_recycleview: RecyclerView + @BindView(R.id.title_view_divider) + lateinit var title_view_divider: View + @BindView(R.id.flowlayout) + lateinit var flowlayout: FlowLayout + lateinit var homeFragment: HomeFragment + lateinit var projectFragment: ProjectFragment + var isSearching: Boolean = false + lateinit var searchRecordAdapter: SearchRecordAdapter + var TAG = "MainActivity" + private lateinit var mIat: SpeechRecognizer + private lateinit var mIatDialog: RecognizerDialog + // 用HashMap存储听写结果 + private val mIatResults = LinkedHashMap() + // 引擎类型 这里我只考虑了一种引擎类型 :云端的 + private val mCLOUDType = SpeechConstant.TYPE_CLOUD + + // 用来计算返回键的点击间隔时间 + private var exitTime: Long = 0 + + private val mInitListener = InitListener { } + companion object { + fun launch(context: Context) { + context.startActivity(Intent(context, MainActivity::class.java)) + } + } + /** + * 听写UI监听器 + */ + private val mRecognizerDialogListener = object : RecognizerDialogListener { + /** + * 识别成功时回调数据 + */ + override fun onResult(results: RecognizerResult, isLast: Boolean) { + LogUtil.d(TAG, "printResult(results)------------") + printResult(results) + } + + /** + * 识别回调错误. + */ + override fun onError(error: SpeechError) { + + } + } + + override fun getLayoutId(): Int { + return R.layout.activity_main + } + + override fun initData(bundle: Bundle?) { + initView() + requestPermission() + EventBus.getDefault().register(this) + } + + protected fun initView() { + mFragments = ArrayList() + homeFragment = HomeFragment() + projectFragment = ProjectFragment() + mFragments!!.add(homeFragment) + mFragments!!.add(projectFragment) + mFragments!!.add(KnowledgeFragment()) + mFragments!!.add(WechatFragment()) + mFragments!!.add(UserFragment()) + + titles = ArrayList() + titles!!.add(getString(R.string.home)) + titles!!.add(getString(R.string.project)) + titles!!.add(getString(R.string.knowledge)) + titles!!.add(getString(R.string.public_account)) + titles!!.add(getString(R.string.mine)) + + val adapter = MainTabAdapter(supportFragmentManager, mFragments) + viewPager!!.offscreenPageLimit = mFragments!!.size + viewPager!!.adapter = adapter + viewPager!!.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabLayout)) + tabLayout!!.addOnTabSelectedListener(TabLayout.ViewPagerOnTabSelectedListener(viewPager)) + //将TabLayout和ViewPager关联起来 + tabLayout!!.setupWithViewPager(viewPager) + initTab() + initSearchRecord() + iv_search!!.visibility = View.VISIBLE + val isNightMode = SPUtils.getParam(this, "nightMode", false) as Boolean + if (isNightMode) { + title_view_divider!!.visibility = View.VISIBLE + } else { + title_view_divider!!.visibility = View.GONE + } + + et_search!!.setOnEditorActionListener { v, actionId, event -> + if (actionId == EditorInfo.IME_ACTION_SEARCH) {//搜索按键action + beginSearch() + } + false + } + + } + + private fun beginSearch() { + val content = et_search!!.text.toString() + if (TextUtils.isEmpty(content)) { + Utils.showToast(getString(R.string.search_content_no), true) + } + + val bundle = Bundle() + bundle.putString("key", content) + SearchResultActivity.startActivity(this@MainActivity, bundle) + val dbManager = DBManager.getInstance(this@MainActivity) + val searchRecord = SearchRecord() + searchRecord.name = content + dbManager.insertUser(searchRecord) + et_search!!.setText("") + KeyboardUtils.hideKeyboard(et_search!!) + } + + private fun initSearchRecord() { + val list = ArrayList() + searchRecordAdapter = SearchRecordAdapter(this, list) + history_recycleview!!.layoutManager = LinearLayoutManager(this) + history_recycleview!!.adapter = searchRecordAdapter + searchRecordAdapter.onItemClickListener = BaseQuickAdapter.OnItemClickListener { adapter, view, position -> + val bundle = Bundle() + bundle.putString("key", searchRecordAdapter.data[position].name) + SearchResultActivity.startActivity(this@MainActivity, bundle) + } + } + + /** + * 设置添加Tab + */ + private fun initTab() { + + tabLayout!!.getTabAt(0)!!.setCustomView(R.layout.tab_home) + tabLayout!!.getTabAt(1)!!.setCustomView(R.layout.tab_project) + tabLayout!!.getTabAt(2)!!.setCustomView(R.layout.tab_knowledge) + tabLayout!!.getTabAt(3)!!.setCustomView(R.layout.tab_navigation) + tabLayout!!.getTabAt(4)!!.setCustomView(R.layout.tab_mine) + + + tabLayout!!.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + //标签选中之后执行的方法 + override fun onTabSelected(tab: TabLayout.Tab) { + val position = tab.position + title!!.text = titles!![position] + + if (position == 4) + header_layout!!.visibility = View.GONE + else + header_layout!!.visibility = View.VISIBLE + } + + //标签没选中 + override fun onTabUnselected(tab: TabLayout.Tab) { + + } + + override fun onTabReselected(tab: TabLayout.Tab) { + + } + }) + val isRestartMain = SPUtils.getParam(this, "isRestartMain", false) as Boolean + LogUtil.d(TAG, "isRestartMain:$isRestartMain") + if (isRestartMain) { + //切换语言或切换字体大小,重启MainActivity则会走这里 + viewPager!!.currentItem = 4 + // tabLayout.getTabAt(4).getCustomView().setSelected(true); + SPUtils.setParam(this@MainActivity, "isRestartMain", false) + } else { + //默认选中的Tab + viewPager!!.currentItem = 0 + // tabLayout.getTabAt(0).getCustomView().setSelected(true); + loadSVGAAnimation() + + } + + } + + @OnClick(R.id.title, R.id.iv_svga, R.id.iv_search_back, R.id.iv_search, R.id.tv_search_clear, R.id.iv_speech_search) + override fun onClick(view: View) { + when (view.id) { + R.id.title -> { + val index = viewPager!!.currentItem + if (index == 0) + homeFragment.scrollToTop() + if (index == 1) + projectFragment.scrollToTop() + } + + R.id.iv_svga -> { + iv_svga!!.stopAnimation() + iv_svga!!.visibility = View.GONE + } + R.id.iv_search_back -> SearchViewUtils.handleToolBar(applicationContext, cardview_search!!, et_search) + R.id.iv_search -> { + SearchViewUtils.handleToolBar(applicationContext, cardview_search!!, et_search) + isSearching = true + } + R.id.tv_search_clear -> { + searchRecordAdapter.data.clear() + searchRecordAdapter.notifyDataSetChanged() + DBManager.getInstance(this).deleteAll() + } + R.id.iv_speech_search -> { + KeyboardUtils.hideKeyboard(et_search!!) + requestRecordAudioPermission() + } + } + + } + + fun requestPermission() { + requestPermission(this, object : PermissionUtil.RequestPermissionCallBack { + + override fun granted() { + + } + + override fun denied() {} + }, *arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE)) + } + + public override fun onRestart() { + super.onRestart() + //跳转到设置界面后返回,重新检查权限 + requestPermission() + } + + public override fun onStart() { + super.onStart() + val recordList = DBManager.getInstance(this).queryUserList() + searchRecordAdapter.data.clear() + searchRecordAdapter.addData(recordList) + + } + + override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { + if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN) { + if (isSearching) { + SearchViewUtils.handleToolBar(applicationContext, cardview_search!!, et_search) + isSearching = false + return false + } + if (System.currentTimeMillis() - exitTime > 2000) { + //弹出提示,可以有多种方式 + Toast.makeText(applicationContext, getString(R.string.press_exit), Toast.LENGTH_SHORT).show() + exitTime = System.currentTimeMillis() + } else { + finish() + } + return true + } + + return super.onKeyDown(keyCode, event) + } + + + private fun loadSVGAAnimation() { + val parser = SVGAParser(this) + resetDownloader(parser) + try { + parser.parse(URL("https://github.com/yyued/SVGA-Samples/blob/master/kingset.svga?raw=true"), object : SVGAParser.ParseCompletion { + override fun onComplete(videoItem: SVGAVideoEntity) { + val drawable = SVGADrawable(videoItem, requestDynamicItemWithSpannableText()) + iv_svga!!.setImageDrawable(drawable) + iv_svga!!.startAnimation() + + Handler().postDelayed({ + /** + * 要执行的操作 + */ + /** + * 要执行的操作 + */ + iv_svga!!.stopAnimation() + iv_svga!!.visibility = View.GONE + }, 5000) + + } + + override fun onError() { + + } + }) + } catch (e: Exception) { + print(true) + } + + } + + /** + * 你可以设置富文本到 ImageKey 相关的元素上 + * 富文本是会自动换行的,不要设置过长的文本 + * + * @return + */ + private fun requestDynamicItemWithSpannableText(): SVGADynamicEntity { + val dynamicEntity = SVGADynamicEntity() + val spannableStringBuilder = SpannableStringBuilder(getString(R.string.welcome_learn_android)) + spannableStringBuilder.setSpan(ForegroundColorSpan(Color.YELLOW), 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE) + val textPaint = TextPaint() + textPaint.color = Color.WHITE + textPaint.textSize = 28f + dynamicEntity.setDynamicText(StaticLayout( + spannableStringBuilder, + 0, + spannableStringBuilder.length, + textPaint, + 0, + android.text.Layout.Alignment.ALIGN_CENTER, + 1.0f, + 0.0f, + false + ), "banner") + dynamicEntity.setDynamicDrawer({ canvas, frameIndex -> + val aPaint = Paint() + aPaint.color = Color.WHITE + canvas.drawCircle(50f, 54f, (frameIndex % 5).toFloat(), aPaint) + false + }, "banner") + return dynamicEntity + } + + /** + * 设置下载器,这是一个可选的配置项。 + * + * @param parser + */ + private fun resetDownloader(parser: SVGAParser) { + parser.fileDownloader = object : SVGAParser.FileDownloader() { + override fun resume(url: URL, complete: Function1, failure: Function1) { + Thread(Runnable { + val client = OkHttpClient() + val request = Request.Builder().url(url).get().build() + try { + val response = client.newCall(request).execute() + complete.invoke(response.body()!!.byteStream()) + } catch (e: IOException) { + e.printStackTrace() + failure.invoke(e) + } + }).start() + } + } + } + + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onEvent(event: RestartMainEvent) { + val intent = intent + overridePendingTransition(0, 0) + intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) + finish() + overridePendingTransition(0, 0) + startActivity(intent) + event.activity.finish() + SPUtils.setParam(this@MainActivity, "isRestartMain", true) + + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onEvent(event: ChangeNightEvent) { + val isNightMode = SPUtils.getParam(this, "nightMode", false) as Boolean + if (isNightMode) { + title_view_divider!!.visibility = View.VISIBLE + } else { + title_view_divider!!.visibility = View.GONE + } + setStatusBar() + } + + public override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } + + override fun initPresenter(): MainActivityPresenter { + return MainActivityPresenter() + } + + override fun loadData() { + mPresenter.getHotKey() + } + + + override fun showHotKey(list: List) { + addFolowLayoutView(list) + + } + + private fun addFolowLayoutView(list: List) { + val length = list.size + for (i in list.indices) { + val hotKeyData = list[i] + val ranHeight = ScreenUtils.dp2px(this, 30) + val lp = ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ranHeight) + lp.setMargins(ScreenUtils.dp2px(this, 10), 0, ScreenUtils.dp2px(this, 10), 0) + val tv = TextView(this) + tv.setPadding(ScreenUtils.dp2px(this, 15), 0, ScreenUtils.dp2px(this, 15), 0) + tv.setTextColor(Color.parseColor("#FF3030")) + tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15f) + val index = (Math.random() * length).toInt() + tv.text = hotKeyData.name + tv.gravity = Gravity.CENTER_VERTICAL + tv.setLines(1) + tv.setBackgroundResource(R.drawable.bg_tag) + flowlayout!!.addView(tv, lp) + tv.setOnClickListener { + val bundle = Bundle() + bundle.putString("key", tv.text.toString()) + SearchResultActivity.startActivity(this@MainActivity, bundle) + val dbManager = DBManager.getInstance(this@MainActivity) + val searchRecord = SearchRecord() + searchRecord.name = tv.text.toString() + dbManager.insertUser(searchRecord) + } + } + flowlayout!!.relayoutToAlign() + } + + fun requestRecordAudioPermission() { + requestPermission(this, object : PermissionUtil.RequestPermissionCallBack { + override fun granted() { + // 使用SpeechRecognizer对象,可根据回调消息自定义界面;这种方式主要是考虑到了,没有听写Dialog的时候,进行的听写监听 + mIat = SpeechRecognizer.createRecognizer(this@MainActivity, mInitListener) + Log.i(TAG, "onCreate: mIat == null ?" + mIat!!) + //SpeechRecognizer对象 null 的原因:一、 so 文件放错了位置 二、so文件与自己的SDK不匹配 3、Application中没有配置好appid + // 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer + // 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置显示RecognizerDialog需要的布局文件和图片资源 + mIatDialog = RecognizerDialog(this@MainActivity, mInitListener) + // 移动数据分析,收集开始听写事件 + FlowerCollector.onEvent(this@MainActivity, "iat_recognize") + + et_search!!.setText("")// 清空显示内容 + mIatResults.clear() + // 设置参数 + setParam() + + // 显示听写对话框 + mIatDialog!!.setListener(mRecognizerDialogListener) + mIatDialog!!.show() + Utils.showToast(getString(R.string.begin_speech), true, Gravity.BOTTOM) + } + + override fun denied() {} + }, *arrayOf(Manifest.permission.RECORD_AUDIO)) + } + + fun setParam() { + // 清空参数 + mIat!!.setParameter(SpeechConstant.PARAMS, null) + + // 设置听写引擎 注意:这里我只设置云端的方式!后面再考虑本地和混合的类型 + mIat!!.setParameter(SpeechConstant.ENGINE_TYPE, mCLOUDType) + // 设置返回结果格式 + mIat!!.setParameter(SpeechConstant.RESULT_TYPE, "json") + + // 设置语言 + mIat!!.setParameter(SpeechConstant.LANGUAGE, "cn") + mIat!!.setParameter(SpeechConstant.ACCENT, "mandarin") + + // 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理 + mIat!!.setParameter(SpeechConstant.VAD_BOS, "4000") + + // 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音 + mIat!!.setParameter(SpeechConstant.VAD_EOS, "1000") + + // 设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点 + mIat!!.setParameter(SpeechConstant.ASR_PTT, "0") + + // 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限 + // 注:AUDIO_FORMAT参数语记需要更新版本才能生效 + mIat!!.setParameter(SpeechConstant.AUDIO_FORMAT, "wav") + mIat!!.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory().toString() + "/msc/iat.wav") + } + + /** + * 成功时显示说话的文字 + * + * @param results + */ + private fun printResult(results: RecognizerResult) { + val text = JsonParser.parseIatResult(results.resultString) + + lateinit var sn: String + // 读取json结果中的sn字段 + try { + val resultJson = JSONObject(results.resultString) + sn = resultJson.optString("sn") + } catch (e: JSONException) { + e.printStackTrace() + } + + mIatResults[sn] = text + + val resultBuffer = StringBuffer() + for (key in mIatResults.keys) { + resultBuffer.append(mIatResults[key]) + } + + et_search!!.setText(resultBuffer.toString()) + //考虑到TextView只能显示文字 ,后面还要测试文字转语音,所以换EditText控件 + et_search!!.setSelection(et_search!!.length()) + KeyboardUtils.showKeyboard(et_search!!) + LogUtil.d(TAG, "printResult(results)------------resultBuffer.toString():" + resultBuffer.toString()) + if (et_search!!.text.toString().length > 0 && "SearchResultActivity" != Utils.getTopActivity(this)) + beginSearch() + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + // 在这里添加屏幕切换后的操作 + } +} diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.java b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.java index 859bde0..0608367 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.java +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.java @@ -1,5 +1,6 @@ package com.android.learn.activity; +import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.java b/AndroidLearnProject/app/src/main/learn/MainActivity.java similarity index 98% rename from AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.java rename to AndroidLearnProject/app/src/main/learn/MainActivity.java index b5c7406..62f8668 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.java +++ b/AndroidLearnProject/app/src/main/learn/MainActivity.java @@ -1,8 +1,6 @@ package com.android.learn; import android.Manifest; -import android.app.Activity; -import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Canvas; @@ -13,7 +11,6 @@ import android.os.Handler; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; -import android.support.v7.widget.CardView; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Spannable; @@ -35,11 +32,9 @@ import android.widget.TextView; import android.widget.Toast; -import com.android.learn.activity.LanguageActivity; import com.android.learn.activity.SearchResultActivity; import com.android.learn.adapter.MainTabAdapter; import com.android.learn.adapter.SearchRecordAdapter; -import com.android.learn.base.activity.BaseActivity; import com.android.learn.base.activity.BaseMvpActivity; import com.android.learn.base.db.DBManager; import com.android.learn.base.db.SearchRecord; @@ -47,7 +42,6 @@ import com.android.learn.base.event.RestartMainEvent; import com.android.learn.base.mmodel.HotKeyData; import com.android.learn.base.utils.KeyboardUtils; -import com.android.learn.base.utils.LanguageUtil; import com.android.learn.base.utils.LogUtil; import com.android.learn.base.utils.PermissionUtil; import com.android.learn.base.utils.SPUtils; @@ -56,25 +50,20 @@ import com.android.learn.base.view.TitleView; import com.android.learn.fragment.HomeFragment; import com.android.learn.fragment.KnowledgeFragment; -import com.android.learn.fragment.WechatFragment; import com.android.learn.fragment.ProjectFragment; import com.android.learn.fragment.UserFragment; +import com.android.learn.fragment.WechatFragment; import com.android.learn.mcontract.MainActivityContract; import com.android.learn.mpresenter.MainActivityPresenter; import com.android.learn.view.CustomViewPager; import com.android.learn.view.SearchViewUtils; -import com.android.speechdemo.bean.TalkBackVo; import com.android.speechdemo.xf.JsonParser; import com.chad.library.adapter.base.BaseQuickAdapter; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; -import com.iflytek.cloud.ErrorCode; import com.iflytek.cloud.InitListener; import com.iflytek.cloud.RecognizerResult; import com.iflytek.cloud.SpeechConstant; import com.iflytek.cloud.SpeechError; import com.iflytek.cloud.SpeechRecognizer; -import com.iflytek.cloud.SpeechUtility; import com.iflytek.cloud.ui.RecognizerDialog; import com.iflytek.cloud.ui.RecognizerDialogListener; import com.iflytek.sunflower.FlowerCollector; @@ -93,7 +82,6 @@ import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Type; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; diff --git a/AndroidLearnProject/app/src/main/learn/activity/ArticleDetailActivity.java b/AndroidLearnProject/app/src/main/learn/activity/ArticleDetailActivity.java new file mode 100644 index 0000000..ccad459 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/ArticleDetailActivity.java @@ -0,0 +1,84 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseActivity; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.view.Html5Webview; + +import butterknife.BindView; +import butterknife.OnClick; + +public class ArticleDetailActivity extends BaseMvpActivity { + + @BindView(R.id.webview_article) + Html5Webview webview_article; + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.iv_search) + ImageView iv_search; + String url; + public static void startActivity(Context context, Bundle bundle) { + Intent intent = new Intent(context, ArticleDetailActivity.class); + + if (bundle != null) + intent.putExtras(bundle); + context.startActivity(intent); + } + @Override + protected int getLayoutId() { + return R.layout.activity_article_detail; + } + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.article_detail)); + iv_back.setVisibility(View.VISIBLE); + url = bundle.getString("url"); + webview_article.loadUrl(url); + iv_search.setVisibility(View.VISIBLE); + iv_search.setImageResource(R.drawable.icon_share); + } + + + + @OnClick({R.id.iv_search}) + public void click(View view) { + switch (view.getId()) { + case R.id.iv_search: + share("分享地址", url); + } + } + + private void share(String title, String content) { + Intent share_intent = new Intent(); + share_intent.setAction(Intent.ACTION_SEND);//设置分享行为 + share_intent.setType("text/plain");//设置分享内容的类型 + share_intent.putExtra(Intent.EXTRA_SUBJECT, title);//添加分享内容标题 + share_intent.putExtra(Intent.EXTRA_TEXT, content);//添加分享内容 + //创建分享的Dialog + share_intent = Intent.createChooser(share_intent, "分享"); + startActivity(share_intent); + } + + @Override + public BasePresenter initPresenter() { + return null; + } + + @Override + protected void loadData() { + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/FeedbackActivity.java b/AndroidLearnProject/app/src/main/learn/activity/FeedbackActivity.java new file mode 100644 index 0000000..0e6ebdb --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/FeedbackActivity.java @@ -0,0 +1,297 @@ +package com.android.learn.activity; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.ContentUris; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Environment; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.util.Log; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + + +import com.android.learn.R; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.email.MailSender; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.Utils; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class FeedbackActivity extends BaseMvpActivity { + + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.send_btn) + TextView send_btn; + @BindView(R.id.add_attachment) + TextView add_attachment; + @BindView(R.id.file_dir) + TextView file_dir; + + @BindView(R.id.et_email_title) + EditText et_email_title; + @BindView(R.id.et_email_content) + EditText et_email_content; + private final int FILECHOOSER_RESULTCODE = 1; + private String sendEmail = "gaoleiemail@163.com";//发送方邮件 + private String sendEmaiPassword = "gl1201";//发送方邮箱密码(或授权码) + private String receiveEmail = "gaoleiandroid@163.com";//接收方邮件 + private String file_path = null; + + + public static void startActivity(Context context) { + Intent intent = new Intent(context, FeedbackActivity.class); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_help_feedback; + } + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.help_feedback)); + iv_back.setVisibility(View.VISIBLE); + } + + @Override + public BasePresenter initPresenter() { + return null; + } + + @Override + protected void loadData() { + + } + + @OnClick({R.id.send_btn, R.id.add_attachment}) + public void click(View view) { + switch (view.getId()) { + case R.id.send_btn: + SenderRunnable senderRunnable = new SenderRunnable(sendEmail, sendEmaiPassword); + String sendTitle = et_email_title.getText().toString(); + String sendContent = et_email_content.getText().toString(); + if ("".equals(sendTitle.trim())) { + Utils.showToast(getString(R.string.please_input_contact), true); + return; + } + if ("".equals(sendContent.trim())) { + Utils.showToast(getString(R.string.please_input_content), true); + return; + } + senderRunnable.setMail(sendTitle, sendContent, + receiveEmail, file_path); + new Thread(senderRunnable).start(); +// sendEmail(); + break; + case R.id.add_attachment: + showFileChooser(); + break; + } + } + + + private void showFileChooser() { + Intent i = new Intent(Intent.ACTION_GET_CONTENT); + i.addCategory(Intent.CATEGORY_OPENABLE); + i.setType("image/*"); + startActivityForResult(Intent.createChooser(i, "File Chooser"), + FILECHOOSER_RESULTCODE); + } + + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == Activity.RESULT_OK) { + Uri uri = data.getData(); + + file_path = getPathByUri4kitkat(this, uri); + Log.d("gaolei", "file_path---------------" + file_path); + file_dir.setText(file_path); + + } + super.onActivityResult(requestCode, resultCode, data); + } + + class SenderRunnable implements Runnable { + + private String user; + private String password; + private String subject; + private String body; + private String receiver; + private MailSender sender; + private String attachment; + + public SenderRunnable(String user, String password) { + this.user = user; + this.password = password; + sender = new MailSender(user, password); + String mailhost = user.substring(user.lastIndexOf("@") + 1, + user.lastIndexOf(".")); + if (!mailhost.equals("gmail")) { + mailhost = "smtp." + mailhost + ".com"; + Log.i("hello", mailhost); + sender.setMailhost(mailhost); + } + } + + public void setMail(String subject, String body, String receiver, + String attachment) { + this.subject = subject; + this.body = body; + this.receiver = receiver; + this.attachment = attachment; + } + + public void run() { + // TODO Auto-generated method stub + try { + sender.sendMail(subject, body, user, receiver, attachment); + Utils.showToast(getString(R.string.feedback_send_success), false); + runOnUiThread(new Runnable() { + @Override + public void run() { + finish(); + } + }); + } catch (Exception e) { + // TODO Auto-generated catch block + if (e.getMessage() != null) + Utils.showToast(getString(R.string.feedback_send_fail), false); + e.printStackTrace(); + } finally { + finish(); + } + } + } + + // 专为Android4.4设计的从Uri获取文件绝对路径,以前的方法已不好使了。targetSdkVersion 22;如果targetSdkVersion>=23怎需要动态获取WRITE_EXTERNAL_STORAGE权限;如果targetSdkVersion>=24 则可能需要用到FileProvider + @SuppressLint("NewApi") + public static String getPathByUri4kitkat(final Context context, final Uri uri) { + final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + // DocumentProvider + if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { + if (isExternalStorageDocument(uri)) {// ExternalStorageProvider + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + if ("primary".equalsIgnoreCase(type)) { + return Environment.getExternalStorageDirectory() + "/" + split[1]; + } + } else if (isDownloadsDocument(uri)) {// DownloadsProvider + final String id = DocumentsContract.getDocumentId(uri); + final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), + Long.valueOf(id)); + return getDataColumn(context, contentUri, null, null); + } else if (isMediaDocument(uri)) {// MediaProvider + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + Uri contentUri = null; + if ("image".equals(type)) { + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + } else if ("video".equals(type)) { + contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + } else if ("audio".equals(type)) { + contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + } + final String selection = "_id=?"; + final String[] selectionArgs = new String[]{split[1]}; + return getDataColumn(context, contentUri, selection, selectionArgs); + } + } else if ("content".equalsIgnoreCase(uri.getScheme())) {// MediaStore + return getDataColumn(context, uri, null, null); + } else if ("file".equalsIgnoreCase(uri.getScheme())) {// File + return uri.getPath(); + } + return null; + } + + /** + * Get the value of the data column for this Uri. This is useful for + * MediaStore Uris, and other file-based ContentProviders. + * + * @param context The context. + * @param uri The Uri to query. + * @param selection (Optional) Filter used in the query. + * @param selectionArgs (Optional) Selection arguments used in the query. + * @return The value of the _data column, which is typically a file path. + */ + public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + Cursor cursor = null; + final String column = "_data"; + final String[] projection = {column}; + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); + if (cursor != null && cursor.moveToFirst()) { + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } finally { + if (cursor != null) + cursor.close(); + } + return null; + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is ExternalStorageProvider. + */ + public static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is DownloadsProvider. + */ + public static boolean isDownloadsDocument(Uri uri) { + return "com.android.providers.downloads.documents".equals(uri.getAuthority()); + } + + /** + * @param uri The Uri to check. + * @return Whether the Uri authority is MediaProvider. + */ + public static boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + private void sendEmail() { + Intent email = new Intent(Intent.ACTION_SENDTO); + /*不带附件发送邮件*/ +// email.setType("plain/text"); + email.setData(Uri.parse(receiveEmail)); + + /*设置邮件默认地址,多个收件人,String数组*/ + // email.putExtra(android.content.Intent.EXTRA_EMAIL, (String[])mMailReceivers.toArray(new String[mMailReceivers.size()])); + /*多个抄送人,String数组*/ +// email.putExtra(android.content.Intent.EXTRA_CC, (String[])mMailCopyTos.toArray(new String[mMailCopyTos.size()])); + /*邮件标题*/ + email.putExtra(Intent.EXTRA_SUBJECT, et_email_title.getText().toString()); + /*邮件正文*/ + email.putExtra(Intent.EXTRA_TEXT, et_email_content.getText().toString()); +//调用系统的邮件系统 + startActivity(Intent.createChooser(email, "请选择邮件发送软件")); + + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/FontSizeActivity.java b/AndroidLearnProject/app/src/main/learn/activity/FontSizeActivity.java new file mode 100644 index 0000000..f792e69 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/FontSizeActivity.java @@ -0,0 +1,156 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Color; +import android.os.Bundle; +import android.os.Handler; +import android.view.KeyEvent; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseActivity; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.event.RestartMainEvent; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.LogUtil; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.utils.ScreenUtils; +import com.android.learn.view.fontsliderbar.FontSliderBar; + +import org.greenrobot.eventbus.EventBus; + +import butterknife.BindView; +import butterknife.OnClick; + + + +public class FontSizeActivity extends BaseMvpActivity { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.fontSliderBar) + FontSliderBar fontSliderBar; + @BindView(R.id.tv_chatcontent1) + TextView tvContent1; + @BindView(R.id.tv_chatcontent) + TextView tvContent2; + @BindView(R.id.iv_userhead) + ImageView ivUserhead; + private float textsize1, textsize2, textsize3; + private float textSizef;//缩放比例 + private boolean isClickable = true; + int currentIndex; + String TAG="FontSizeActivity"; + + public static void startActivity(Context context) { + Intent intent = new Intent(context, FontSizeActivity.class); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_fontsizes; + } + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.font_size)); + iv_back.setVisibility(View.VISIBLE); + initData(); + } + + private void initData() { + currentIndex = (Integer) SPUtils.getParam(this, "currentIndex", 1); + textSizef = 1 + currentIndex * 0.1f; + float size1 = tvContent1.getTextSize(); + float size2 = tvContent2.getTextSize(); + textsize1 = size1 / textSizef; + textsize2 = size2 / textSizef; + fontSliderBar.setTickCount(6).setTickHeight(ScreenUtils.dp2px(FontSizeActivity.this, 15)).setBarColor(Color.GRAY) + .setTextColor(Color.BLACK).setTextPadding(ScreenUtils.dp2px(FontSizeActivity.this, 10)).setTextSize(ScreenUtils.dp2px(FontSizeActivity.this, 14)) + .setThumbRadius(ScreenUtils.dp2px(FontSizeActivity.this, 10)).setThumbColorNormal(Color.GRAY).setThumbColorPressed(Color.GRAY) + .setOnSliderBarChangeListener(new FontSliderBar.OnSliderBarChangeListener() { + @Override + public void onIndexChanged(FontSliderBar rangeBar, int index) { + if (index > 5) { + return; + } + index = index - 1; + float textSizef = 1 + index * 0.1f; + setTextSize(textSizef); + } + }).setThumbIndex(currentIndex).withAnimation(false).applay(this); + + } + + @OnClick({R.id.iv_back}) + public void click(View view) { + + switch (view.getId()) { + case R.id.iv_back: + if (fontSliderBar.getCurrentIndex() != currentIndex) { + if (isClickable) { + isClickable = false; + refresh(); + } + } else { + finish(); + } + break; + + } + } + + private void setTextSize(float textSize) { + //改变当前页面的字体大小 + float size1 = textsize1 * textSize; + float size2 = textsize2 * textSize; + float size3 = textsize3 * textSize; + tvContent1.setTextSize(ScreenUtils.px2sp(FontSizeActivity.this, size1)); + tvContent2.setTextSize(ScreenUtils.px2sp(FontSizeActivity.this, size2)); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (currentIndex != fontSliderBar.getCurrentIndex()) { + if (isClickable) { + isClickable = false; + refresh(); + } + } else { + finish(); + } + return true; + } + return super.onKeyDown(keyCode, event); + } + + private void refresh() { + //存储标尺的下标 + SPUtils.setParam(this, "currentIndex", fontSliderBar.getCurrentIndex()); + //通知主页面重启 + EventBus.getDefault().post(new RestartMainEvent(this)); + + } + + public void onDestroy(){ + super.onDestroy(); + LogUtil.d(TAG,TAG+" onDestroy--------"); + } + + @Override + public BasePresenter initPresenter() { + return null; + } + + @Override + protected void loadData() { + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/KnowledgeChildActivity.java b/AndroidLearnProject/app/src/main/learn/activity/KnowledgeChildActivity.java new file mode 100644 index 0000000..92714fb --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/KnowledgeChildActivity.java @@ -0,0 +1,165 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.adapter.ArticleQuickAdapter; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.LogUtil; +import com.android.learn.base.utils.Utils; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.KnowledgeChildContract; +import com.android.learn.mpresenter.KnowledgeChildPresenter; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class KnowledgeChildActivity extends BaseMvpActivity implements KnowledgeChildContract.View { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.tv_empty_knowledge) + TextView tv_empty_knowledge; + @BindView(R.id.article_recyclerview) + RecyclerView article_recyclerview; + @BindView(R.id.smartRefreshLayout) + SmartRefreshLayout smartRefreshLayout; + private List articleDataList; + private ArticleQuickAdapter feedArticleAdapter; + int cid; + String titleStr; + String TAG = "KnowledgeChildActivity"; + public static final String ID = "page"; + public static final String TITLE = "TITLE"; + + public static void startTreeChildrenActivity(Context context, int id, String name) { + Intent intent = new Intent(context, KnowledgeChildActivity.class); + intent.putExtra(ID, id); + intent.putExtra(TITLE, name); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_knowledge_article; + } + + @Override + protected void initData(Bundle bundle) { + cid = bundle.getInt(ID); + titleStr = bundle.getString(TITLE); + LogUtil.d(TAG, "id--------------" + cid); + LogUtil.d(TAG, "titleStr--------------" + titleStr); + title.setText(titleStr); + iv_back.setVisibility(View.VISIBLE); + initSmartRefreshLayout(); + initRecyclerView(); + } + + + @Override + public KnowledgeChildPresenter initPresenter() { + return new KnowledgeChildPresenter(); + } + + @Override + protected void loadData() { + CustomProgressDialog.show(this); + mPresenter.getKnowledgeArticleList(0, cid); + } + + @Override + public void showArticleList(FeedArticleListData listData, boolean isRefresh) { + final List newDataList = listData.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + return; + } + smartRefreshLayout.finishLoadMore(); + + feedArticleAdapter.addData(newDataList); + + } + + @Override + public void showCollectArticleData(int position, FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + @Override + public void showCancelCollectArticleData(int position, FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + private void initRecyclerView() { + articleDataList = new ArrayList<>(); + feedArticleAdapter = new ArticleQuickAdapter(this, articleDataList, "KnowledgeChildActivity"); + article_recyclerview.addItemDecoration(new DividerItemDecoration(this, + DividerItemDecoration.VERTICAL_LIST)); + article_recyclerview.setLayoutManager(new LinearLayoutManager(this)); + + //解决数据加载完成后, 没有停留在顶部的问题 + article_recyclerview.setFocusable(false); + article_recyclerview.setAdapter(feedArticleAdapter); + + feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Intent intent = new Intent(KnowledgeChildActivity.this, ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", feedArticleAdapter.getData().get(position).getLink()); + intent.putExtras(bundle); + startActivity(intent); + } + + }); + feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + if (feedArticleAdapter.getData().get(position).isCollect()) { + mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); + } else { + mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); + } + } + }); + } + + //初始化下拉刷新控件 + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + mPresenter.onLoadMore(cid); + } + + @Override + public void onRefresh(RefreshLayout refreshLayout) { + mPresenter.onRefreshMore(cid); + } + }); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/LanguageActivity.java b/AndroidLearnProject/app/src/main/learn/activity/LanguageActivity.java new file mode 100644 index 0000000..94aade0 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/LanguageActivity.java @@ -0,0 +1,113 @@ +package com.android.learn.activity; + +import android.app.LauncherActivity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.support.v7.widget.AppCompatCheckBox; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseActivity; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.event.LogoutEvent; +import com.android.learn.base.event.RestartMainEvent; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.LogUtil; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.utils.account.UserUtil; + +import org.greenrobot.eventbus.EventBus; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class LanguageActivity extends BaseMvpActivity { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.cb_system) + AppCompatCheckBox cb_system; + @BindView(R.id.cb_chinese) + AppCompatCheckBox cb_chinese; + @BindView(R.id.cb_english) + AppCompatCheckBox cb_english; + String TAG = "LanguageActivity"; + + public static void startActivity(Context context) { + Intent intent = new Intent(context, LanguageActivity.class); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_language; + } + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.language_set)); + iv_back.setVisibility(View.VISIBLE); + + int language = (Integer) SPUtils.getParam(this, "language", 0); + if (language == 0) { + cb_system.setChecked(true); + } else if (language == 1) { + cb_chinese.setChecked(true); + } else if (language == 2) { + cb_english.setChecked(true); + } + + } + + + private void selectLanguage(int select) { + LanguageUtil.saveSelectLanguage(this, select); + EventBus.getDefault().post(new RestartMainEvent(this)); + } + + + @OnClick({R.id.cb_system, R.id.cb_chinese, R.id.cb_english}) + public void click(View view) { + cb_system.setChecked(false); + cb_chinese.setChecked(false); + cb_english.setChecked(false); + + + switch (view.getId()) { + case R.id.cb_system: + selectLanguage(0); + break; + case R.id.cb_chinese: + selectLanguage(1); + break; + case R.id.cb_english: + selectLanguage(2); + break; + + } + } + + + public void onDestroy() { + super.onDestroy(); + LogUtil.d(TAG, TAG + " onDestroy--------"); + } + + @Override + public BasePresenter initPresenter() { + return null; + } + + @Override + protected void loadData() { + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/MyCollectActivity.java b/AndroidLearnProject/app/src/main/learn/activity/MyCollectActivity.java new file mode 100644 index 0000000..87b4d93 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/MyCollectActivity.java @@ -0,0 +1,151 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.adapter.ArticleQuickAdapter; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.event.CancelCollectEvent; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.CollectContract; +import com.android.learn.mpresenter.CollectPresenter; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; + +import org.greenrobot.eventbus.EventBus; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + + +public class MyCollectActivity extends BaseMvpActivity implements CollectContract.View { + + + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.article_collect_recyclerview) + RecyclerView article_collect_recyclerview; + @BindView(R.id.smartRefreshLayout) + SmartRefreshLayout smartRefreshLayout; + @BindView(R.id.tv_empty_collect) + TextView tv_empty_collect; + private List articleDataList; + private ArticleQuickAdapter feedArticleAdapter; + + public static void startActivity(Context context) { + Intent intent = new Intent(context, MyCollectActivity.class); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_collect; + } + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.collect)); + iv_back.setVisibility(View.VISIBLE); + initRecyclerView(); + initSmartRefreshLayout(); + + } + + + @Override + public CollectPresenter initPresenter() { + return new CollectPresenter(); + } + + @Override + protected void loadData() { + CustomProgressDialog.show(this); + mPresenter.getCollectList(); + } + + + @Override + public void showCollectList(FeedArticleListData feedArticleListData) { + final List newDataList = feedArticleListData.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + } + smartRefreshLayout.finishLoadMore(); + + feedArticleAdapter.addData(newDataList); + + if (feedArticleAdapter.getData().size() == 0) { + tv_empty_collect.setVisibility(View.VISIBLE); + } else tv_empty_collect.setVisibility(View.GONE); + + } + + @Override + public void showCancelCollectArticle(int position, int id) { + feedArticleAdapter.remove(position); + EventBus.getDefault().post(new CancelCollectEvent(id)); + } + + private void initRecyclerView() { + articleDataList = new ArrayList<>(); + feedArticleAdapter = new ArticleQuickAdapter(this, articleDataList, "MyCollectActivity"); + article_collect_recyclerview.addItemDecoration(new DividerItemDecoration(this, + DividerItemDecoration.VERTICAL_LIST)); + article_collect_recyclerview.setLayoutManager(new LinearLayoutManager(this)); + + article_collect_recyclerview.setFocusable(false); + article_collect_recyclerview.setAdapter(feedArticleAdapter); + feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position).originId); + } + }); + feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Intent intent = new Intent(MyCollectActivity.this, ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", articleDataList.get(position).getLink()); + intent.putExtras(bundle); + startActivity(intent); + } + + }); + } + + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + mPresenter.getCollectList(); + + } + + + }); + } + + +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/MyTodoActivity.java b/AndroidLearnProject/app/src/main/learn/activity/MyTodoActivity.java new file mode 100644 index 0000000..d6b64ff --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/MyTodoActivity.java @@ -0,0 +1,153 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.TabLayout; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + + +import com.android.learn.R; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.fragment.TodoFragment; +import com.android.learn.view.CustomViewPager; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.OnClick; + +public class MyTodoActivity extends BaseMvpActivity { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.iv_search) + ImageView iv_search; + @BindView(R.id.title) + TextView tv_title; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + CustomViewPager viewPager; + TodoFragment todoFragment, doneFragment; + + private List mFragments = new ArrayList<>(); + + public static void startActivity(Context context) { + Intent intent = new Intent(context, MyTodoActivity.class); + context.startActivity(intent); + } + + private void initTab() { + + tabLayout.getTabAt(0).setCustomView(R.layout.tab_todo); + tabLayout.getTabAt(1).setCustomView(R.layout.tab_done); + + + tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + //标签选中之后执行的方法 + @Override + public void onTabSelected(TabLayout.Tab tab) { +// title.setText(titles.get(tab.getPosition())); + if (tab.getPosition() == 0) + iv_search.setVisibility(View.VISIBLE); + if (tab.getPosition() == 1) + iv_search.setVisibility(View.GONE); + + } + + //标签没选中 + @Override + public void onTabUnselected(TabLayout.Tab tab) { + + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } + }); + //默认选中的Tab + tabLayout.getTabAt(0).getCustomView().setSelected(true); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_my_todo; + } + + @Override + protected void initData(Bundle bundle) { + tv_title.setText(getString(R.string.todo)); + iv_back.setVisibility(View.VISIBLE); + iv_search.setVisibility(View.VISIBLE); + iv_search.setImageResource(R.drawable.add_todo); + Bundle bundle1 = new Bundle(); + bundle1.putInt("position", 0); + todoFragment = TodoFragment.newInstance(bundle1); + Bundle bundle2 = new Bundle(); + bundle2.putInt("position", 1); + doneFragment = TodoFragment.newInstance(bundle2); + mFragments.add(todoFragment); + mFragments.add(doneFragment); + CourseDiscussAdapter adapter = new CourseDiscussAdapter(getSupportFragmentManager(), mFragments); + viewPager.setOffscreenPageLimit(mFragments.size()); + viewPager.setAdapter(adapter); + viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); + tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); + //将TabLayout和ViewPager关联起来 + tabLayout.setupWithViewPager(viewPager); + initTab(); + } + + @OnClick({R.id.iv_search}) + public void click(View view) { + switch (view.getId()) { + case R.id.iv_search: + TodoAddActivity.startActivity(MyTodoActivity.this, null); + break; + + } + + } + + @Override + public BasePresenter initPresenter() { + return null; + } + + @Override + protected void loadData() { + + } + + public class CourseDiscussAdapter extends FragmentPagerAdapter { + + List fragments; + + public CourseDiscussAdapter(FragmentManager fm, List fragments) { + super(fm); + this.fragments = fragments; + + + } + + @Override + public Fragment getItem(int position) { + Fragment fragment = fragments.get(position); + + return fragment; + } + + @Override + public int getCount() { + return fragments.size(); + } + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/RegisterLoginActivity.java b/AndroidLearnProject/app/src/main/learn/activity/RegisterLoginActivity.java new file mode 100644 index 0000000..b68ee1d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/RegisterLoginActivity.java @@ -0,0 +1,175 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.view.KeyEvent; +import android.view.View; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.mmodel.RegisterLoginData; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.utils.Utils; +import com.android.learn.base.utils.account.UserUtil; +import com.android.learn.mcontract.RegisterLoginContract; +import com.android.learn.mpresenter.RegisterLoginPresenter; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class RegisterLoginActivity extends BaseMvpActivity implements RegisterLoginContract.View { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.tv_login) + TextView tv_login; + @BindView(R.id.tv_register_free) + TextView tv_register_free; + + @BindView(R.id.tv_register) + TextView tv_register; + + @BindView(R.id.layout_login) + LinearLayout layout_login; + @BindView(R.id.layout_register) + LinearLayout layout_register; + + + @BindView(R.id.et_register_phone_num) + EditText et_register_phone_num; + + @BindView(R.id.et_register_password) + EditText et_register_password; + @BindView(R.id.et_register_confirm_password) + EditText et_register_confirm_password; + + + @BindView(R.id.et_login_phone_num) + EditText et_login_phone_num; + @BindView(R.id.et_login_password) + EditText et_login_password; + + TextView tv_register_contract_content; + boolean isInContract; + + boolean isInRegister = false, isInForgetPwd = false; + String registerFlag; + + public static void startActivity(Context context) { + Intent intent = new Intent(context, RegisterLoginActivity.class); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_login_register; + } + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.login)); + iv_back.setVisibility(View.VISIBLE); + } + + @OnClick({R.id.iv_back, R.id.tv_login, R.id.tv_register_free, R.id.tv_register}) + public void click(View view) { + switch (view.getId()) { + case R.id.iv_back: + back(); + break; + case R.id.tv_login: + String username = et_login_phone_num.getText().toString(); + String password = et_login_password.getText().toString(); + mPresenter.login(username, password); + break; + case R.id.tv_register_free: + layout_register.setVisibility(View.VISIBLE); + title.setText(getString(R.string.register)); + isInRegister = true; + break; + + case R.id.tv_register: + registerFlag = "tv_register"; + + username = et_register_phone_num.getText().toString().trim(); + password = et_register_password.getText().toString().trim(); + String confirmPassword = et_register_confirm_password.getText().toString().trim(); + + if ("".equals(username)) { + Utils.showToast(getString(R.string.please_input_account), true); + return; + } + if (password.length() < 6) { + Utils.showToast(getString(R.string.register_password_too_short), true); + return; + } + if (!password.equals(confirmPassword)) { + Utils.showToast(getString(R.string.password_dismatch), true); + return; + } + + mPresenter.register(username, password, confirmPassword); + break; + } + + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK + && event.getAction() == KeyEvent.ACTION_DOWN) { + back(); + return true; + } + + return super.onKeyDown(keyCode, event); + } + + + private void back() { + if (isInRegister) { + layout_register.setVisibility(View.GONE); + title.setText(getString(R.string.login)); + isInRegister = false; + } else { + finish(); + + } + } + + + public void onDestroy() { + super.onDestroy(); + } + + @Override + public RegisterLoginPresenter initPresenter() { + return new RegisterLoginPresenter(); + } + + @Override + protected void loadData() { + + } + + @Override + public void showRegisterResData(RegisterLoginData registerResData) { + back(); + } + + @Override + public void showLoginResData(RegisterLoginData data) { + UserUtil.setUserInfo(data); + SPUtils.setParam(RegisterLoginActivity.this, "username", et_login_phone_num.getText().toString()); + SPUtils.setParam(RegisterLoginActivity.this, "password", et_login_password.getText().toString()); + finish(); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/SearchResultActivity.java b/AndroidLearnProject/app/src/main/learn/activity/SearchResultActivity.java new file mode 100644 index 0000000..62bfb0a --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/SearchResultActivity.java @@ -0,0 +1,156 @@ +package com.android.learn.activity; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.adapter.ArticleQuickAdapter; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.TodoData; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.LogUtil; +import com.android.learn.base.utils.Utils; +import com.android.learn.mcontract.SearchContract; +import com.android.learn.mpresenter.SearchPresenter; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class SearchResultActivity extends BaseMvpActivity implements SearchContract.View { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.tv_empty_knowledge) + TextView tv_empty_knowledge; + @BindView(R.id.article_recyclerview) + RecyclerView article_recyclerview; + @BindView(R.id.smartRefreshLayout) + SmartRefreshLayout smartRefreshLayout; + private ArticleQuickAdapter feedArticleAdapter; + String keyword; + String TAG = "KnowledgeChildActivity"; + + + public static void startActivity(Context context, Bundle bundle) { + Intent intent = new Intent(context, SearchResultActivity.class); + intent.putExtras(bundle); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_knowledge_article; + } + + @Override + protected void initData(Bundle bundle) { + keyword = bundle.getString("key"); + title.setText(keyword); + iv_back.setVisibility(View.VISIBLE); + initSmartRefreshLayout(); + initRecyclerView(); + } + + + @Override + public SearchPresenter initPresenter() { + return new SearchPresenter(); + } + + @Override + protected void loadData() { + mPresenter.getFeedArticleList(keyword); + } + + @Override + public void showArticleList(FeedArticleListData listData) { + final List newDataList = listData.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + } + smartRefreshLayout.finishLoadMore(); + + feedArticleAdapter.addData(newDataList); + + if (feedArticleAdapter.getData().size() == 0) { + tv_empty_knowledge.setVisibility(View.VISIBLE); + } else tv_empty_knowledge.setVisibility(View.GONE); + } + + @Override + public void showCollectArticleData(int position, FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + @Override + public void showCancelCollectArticleData(int position, FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + private void initRecyclerView() { + List articleDataList = new ArrayList<>(); + feedArticleAdapter = new ArticleQuickAdapter(this, articleDataList, "KnowledgeChildActivity"); + article_recyclerview.addItemDecoration(new DividerItemDecoration(this, + DividerItemDecoration.VERTICAL_LIST)); + article_recyclerview.setLayoutManager(new LinearLayoutManager(this)); + + //解决数据加载完成后, 没有停留在顶部的问题 + article_recyclerview.setFocusable(false); + article_recyclerview.setAdapter(feedArticleAdapter); + feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Intent intent = new Intent(SearchResultActivity.this, ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", feedArticleAdapter.getData().get(position).getLink()); + intent.putExtras(bundle); + startActivity(intent); + } + + }); + feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + if (feedArticleAdapter.getData().get(position).isCollect()) { + mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); + } else { + mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); + } + } + }); + } + + //初始化下拉刷新控件 + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + mPresenter.onLoadMore(keyword); + } + + + }); + } + + +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/SettingActivity.java b/AndroidLearnProject/app/src/main/learn/activity/SettingActivity.java new file mode 100644 index 0000000..8963ba9 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/SettingActivity.java @@ -0,0 +1,205 @@ +package com.android.learn.activity; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.AppCompatCheckBox; +import android.view.View; +import android.widget.CompoundButton; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseActivity; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.event.ChangeNightEvent; +import com.android.learn.base.event.LogoutEvent; +import com.android.learn.base.event.RestartMainEvent; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.utils.Utils; +import com.android.learn.base.utils.account.UserUtil; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class SettingActivity extends BaseMvpActivity { + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.title) + TextView title; + @BindView(R.id.tv_versionName) + TextView tv_versionName; + @BindView(R.id.help_feedback_layout) + LinearLayout help_feedback_layout; + @BindView(R.id.version_update_layout) + LinearLayout version_update_layout; + @BindView(R.id.language_switch_layout) + LinearLayout language_switch_layout; + @BindView(R.id.font_size_layout) + LinearLayout font_size_layout; + @BindView(R.id.my_logout_layout) + LinearLayout my_logout_layout; + @BindView(R.id.cb_setting_night) + AppCompatCheckBox cb_setting_night; + + + public static void startActivity(Context context) { + Intent intent = new Intent(context, SettingActivity.class); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_setting; + } + + + + @Override + protected void initData(Bundle bundle) { + title.setText(getString(R.string.my_setting)); + iv_back.setVisibility(View.VISIBLE); + tv_versionName.setText(Utils.getVersionName(this)); + Boolean isNightMode = (Boolean) SPUtils.getParam(this, "nightMode", new Boolean(false)); + if (isNightMode) { + cb_setting_night.setChecked(true); + } else { + cb_setting_night.setChecked(false); + } + cb_setting_night.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + + if (isChecked) + SPUtils.setParam(SettingActivity.this, "nightMode", new Boolean(true)); + else SPUtils.setParam(SettingActivity.this, "nightMode", new Boolean(false)); + useNightMode(isChecked); + EventBus.getDefault().post(new ChangeNightEvent()); + setStatusBar(); + + } + }); + EventBus.getDefault().register(this); + } + + + @OnClick({R.id.help_feedback_layout, R.id.version_update_layout, R.id.language_switch_layout, R.id.font_size_layout, R.id.my_logout_layout}) + public void click(View view) { + + switch (view.getId()) { + case R.id.help_feedback_layout: + FeedbackActivity.startActivity(SettingActivity.this); + break; + case R.id.language_switch_layout: + LanguageActivity.startActivity(SettingActivity.this); + break; + case R.id.font_size_layout: + FontSizeActivity.startActivity(SettingActivity.this); + break; + case R.id.my_logout_layout: + if (!UserUtil.isLogined()) { + RegisterLoginActivity.startActivity(this); + return; + } + UserUtil.setLogined(false); + EventBus.getDefault().post(new LogoutEvent()); + RetrofitProvider.getInstance().sharedPrefsCookiePersistor.clear(); + finish(); + break; + } + } + + @Override + public BasePresenter initPresenter() { + return null; + } + + @Override + protected void loadData() { + + } + + // private void checkUpdate() { +// +// if (OnlineParamUtil.getParamResData() != null && OnlineParamUtil.getParamResData().rspBody != null) { +// String android_versionCode = OnlineParamUtil.getParamResData().rspBody.android_versionCode.content.trim(); +// +// String android_update_content = OnlineParamUtil.getParamResData().rspBody.android_update_content.content.trim(); +// String android_must_update = OnlineParamUtil.getParamResData().rspBody.android_must_update.content.trim(); +// final String android_app_download_url = OnlineParamUtil.getParamResData().rspBody.android_app_download_url.content.trim(); +// if (Utils.stringToInt(android_versionCode) <= Utils.getVersionCode(this)) { +// Utils.showToast("当前是最新版本", true); +// return; +// } +// AlertDialog.Builder builder; +// builder = new AlertDialog.Builder(SettingActivity.this); +// builder.setTitle("升级提醒"); +// builder.setIcon(R.drawable.update); +// builder.setMessage(android_update_content); +// builder.setCancelable(false); +// if ("false".equals(android_must_update)) { +// builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialog, int which) { +// dialog.cancel(); +// +// } +// }); +// } +// builder.setPositiveButton("升级", new DialogInterface.OnClickListener() { +// @Override +// public void onClick(DialogInterface dialog, int which) { +// dialog.cancel(); +// UpdateApk.downFile(android_app_download_url, SettingActivity.this); +// } +// }); +// builder.show(); +// } +// } + int yourChoice; + + private void showSingleChoiceDialog() { + final String[] items = {"跟随系统", "简体中文", "English"}; + yourChoice = -1; + AlertDialog.Builder singleChoiceDialog = + new AlertDialog.Builder(SettingActivity.this); + singleChoiceDialog.setTitle("选择语言"); + // 第二个参数是默认选项,此处设置为0 + singleChoiceDialog.setSingleChoiceItems(items, 0, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + yourChoice = which; + } + }); + singleChoiceDialog.setPositiveButton("确定", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + SPUtils.setParam(SettingActivity.this, "languageIndex", which); + } + }); + singleChoiceDialog.show(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(RestartMainEvent event) { + finish(); + } + public void onDestroy(){ + super.onDestroy(); + EventBus.getDefault().unregister(this); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/SplashActivity.java b/AndroidLearnProject/app/src/main/learn/activity/SplashActivity.java new file mode 100644 index 0000000..859bde0 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/SplashActivity.java @@ -0,0 +1,76 @@ +package com.android.learn.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.support.annotation.Nullable; +import android.view.View; + +import com.android.learn.MainActivity; +import com.android.learn.R; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.mmodel.RegisterLoginData; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.utils.account.UserUtil; +import com.android.learn.mcontract.SplashLoginContract; +import com.android.learn.mpresenter.SplashLoginPresenter; +import com.jaeger.library.StatusBarUtil; + +public class SplashActivity extends BaseMvpActivity implements SplashLoginContract.View { + + + Handler handler = new Handler() { + public void handleMessage(Message msg) { + Intent intent = new Intent(SplashActivity.this, MainActivity.class); + startActivity(intent); + finish(); + } + }; + + @Override + protected int getLayoutId() { + return R.layout.activity_splash; + } + + @Override + protected void initData(Bundle bundle) { + } + + @Override + public SplashLoginPresenter initPresenter() { + return new SplashLoginPresenter(); + } + + @Override + protected void loadData() { + String phone_num = (String) SPUtils.getParam(this, "username", ""); + String password = (String) SPUtils.getParam(this, "password", ""); + if (phone_num.length() > 0 && password.length() > 0) { + mPresenter.login(phone_num, password); + } else handler.sendEmptyMessageDelayed(0, 2000); + } + + public void jumpToMainActivity(View view) { + Intent intent = new Intent(SplashActivity.this, MainActivity.class); + startActivity(intent); + handler.removeCallbacksAndMessages(null); + finish(); + } + + + @Override + public void showLoginResData(RegisterLoginData loginResData) { + UserUtil.setUserInfo(loginResData); + handler.sendEmptyMessageDelayed(0, 1500); + } + + @Override + protected void setStatusBar() { + StatusBarUtil.setTransparent(this); + } + + public void onDestroy() { + super.onDestroy(); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/TodoAddActivity.java b/AndroidLearnProject/app/src/main/learn/activity/TodoAddActivity.java new file mode 100755 index 0000000..face32a --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/TodoAddActivity.java @@ -0,0 +1,119 @@ +package com.android.learn.activity; + +import android.app.DatePickerDialog; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.view.View; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.event.UpdateTodoEvent; +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.TodoData.DatasBean; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.Utils; +import com.android.learn.mcontract.TodoAddContract; +import com.android.learn.mcontract.TodoEditContract; +import com.android.learn.mpresenter.TodoAddPresenter; +import com.android.learn.mpresenter.TodoEditPresenter; + +import org.greenrobot.eventbus.EventBus; + +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class TodoAddActivity extends BaseMvpActivity implements TodoAddContract.View { + @BindView(R.id.title) + TextView mTitle; + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.todo_name) + TextInputEditText et_title; + @BindView(R.id.todo_des) + TextInputEditText et_content; + @BindView(R.id.todo_date) + TextView mTodoDate; + + public static void startActivity(Context context, Bundle bundle) { + Intent intent = new Intent(context, TodoAddActivity.class); + if(bundle!=null) + intent.putExtras(bundle); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_edit_todo; + } + + @Override + protected void initData(Bundle bundle) { + mTitle.setText(getString(R.string.add)); + iv_back.setVisibility(View.VISIBLE); + } + + @OnClick({R.id.save_todo,R.id.todo_date}) + public void click(View view) { + switch (view.getId()) { + case R.id.save_todo: + Map map=new HashMap<>(); + map.put("title",et_title.getText().toString()); + map.put("content",et_content.getText().toString()); + String date=mTodoDate.getText().toString(); + if(!date.contains("-")){ + Utils.showToast(getString(R.string.select_time),true); + return; + } + map.put("date",date); +// map.put("status",0); + map.put("type",0); + + mPresenter.addTodo(map); + break; + case R.id.todo_date: + Calendar calendar = Calendar.getInstance(); + + DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { + @Override + public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) { + mTodoDate.setText(String.format("%d-%d-%d", year, month + 1, dayOfMonth)); + } + }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); + datePickerDialog.getDatePicker().setMinDate(new Date().getTime()); + datePickerDialog.show(); + break; + + } + + } + + + @Override + public TodoAddPresenter initPresenter() { + return new TodoAddPresenter(); + } + + @Override + protected void loadData() { + + } + + @Override + public void showAddTodo(BaseData todoData) { + Utils.showToast(getString(R.string.operate_success),true); + EventBus.getDefault().post(new UpdateTodoEvent()); + finish(); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/activity/TodoEditActivity.java b/AndroidLearnProject/app/src/main/learn/activity/TodoEditActivity.java new file mode 100755 index 0000000..f9ae065 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/activity/TodoEditActivity.java @@ -0,0 +1,124 @@ +package com.android.learn.activity; + +import android.app.DatePickerDialog; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.view.View; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.activity.BaseMvpActivity; +import com.android.learn.base.event.UpdateTodoEvent; +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.TodoData; +import com.android.learn.base.mmodel.TodoData.DatasBean; +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.Utils; +import com.android.learn.mcontract.TodoEditContract; +import com.android.learn.mpresenter.TodoEditPresenter; +import com.android.learn.mpresenter.TodoPresenter; + +import org.greenrobot.eventbus.EventBus; + +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class TodoEditActivity extends BaseMvpActivity implements TodoEditContract.View { + @BindView(R.id.title) + TextView mTitle; + @BindView(R.id.iv_back) + ImageView iv_back; + @BindView(R.id.todo_name) + TextInputEditText et_title; + @BindView(R.id.todo_des) + TextInputEditText et_content; + @BindView(R.id.todo_date) + TextView mTodoDate; + + DatasBean datasBean; + + public static void startActivity(Context context, Bundle bundle) { + Intent intent = new Intent(context, TodoEditActivity.class); + intent.putExtras(bundle); + context.startActivity(intent); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_edit_todo; + } + + @Override + protected void initData(Bundle bundle) { + mTitle.setText(getString(R.string.detail)); + iv_back.setVisibility(View.VISIBLE); + datasBean = (DatasBean) bundle.getSerializable("todo_item"); + et_title.setText(datasBean.getTitle()); + et_content.setText(datasBean.getContent()); + mTodoDate.setText(datasBean.getDateStr()); + } + + @OnClick({R.id.save_todo,R.id.todo_date}) + public void click(View view) { + switch (view.getId()) { + case R.id.save_todo: + Map map=new HashMap<>(); + map.put("title",et_title.getText().toString()); + map.put("content",et_content.getText().toString()); + String date=mTodoDate.getText().toString(); + if(!date.contains("-")){ + Utils.showToast(getString(R.string.select_time),true); + return; + } + map.put("date",date); + map.put("status",0); + map.put("type",0); + + mPresenter.updateTodo(datasBean.getId(),map); + break; + case R.id.todo_date: + Calendar calendar = Calendar.getInstance(); + + DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { + @Override + public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) { + mTodoDate.setText(String.format("%d-%d-%d", year, month + 1, dayOfMonth)); + } + }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); + datePickerDialog.getDatePicker().setMinDate(new Date().getTime()); + datePickerDialog.show(); + break; + + } + + } + + + @Override + public TodoEditPresenter initPresenter() { + return new TodoEditPresenter(); + } + + @Override + protected void loadData() { + + } + + @Override + public void showUpdateTodo(BaseData todoData) { + Utils.showToast(getString(R.string.operate_success),true); + EventBus.getDefault().post(new UpdateTodoEvent()); + finish(); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/adapter/ArticleQuickAdapter.java b/AndroidLearnProject/app/src/main/learn/adapter/ArticleQuickAdapter.java new file mode 100644 index 0000000..01708fc --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/ArticleQuickAdapter.java @@ -0,0 +1,55 @@ +package com.android.learn.adapter; + +import android.content.Context; +import android.view.View; +import android.widget.ImageView; + +import com.android.learn.R; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.thirdframe.glide.ImageLoader; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +public class ArticleQuickAdapter extends BaseQuickAdapter { + + Context context; + List list; + String fromWhere; + + public ArticleQuickAdapter(Context context, List list, String fromWhere) { + super(R.layout.item_article_list, list); + this.context = context; + this.list = list; + this.fromWhere = fromWhere; + } + + public int getPosById(int id) { + int size = list.size(); + for (int i = 0; i < size; i++) { + if (id == list.get(i).id) + return i; + } + return -1; + } + + @Override + protected void convert(BaseViewHolder helper, FeedArticleData articleData) { + helper.setText(R.id.tv_item_title, articleData.getTitle()) + .setText(R.id.tv_item_time, articleData.getNiceDate()) + .setText(R.id.tv_item_author, articleData.getAuthor()); + helper.addOnClickListener(R.id.iv_item_collect); + if ("HomeFragment".equals(fromWhere)||"KnowledgeChildActivity".equals(fromWhere)||"WechatSubFragment".equals(fromWhere)) { + if (articleData.isCollect()) { + helper.setImageResource(R.id.iv_item_collect, R.drawable.icon_collect_select); + } else { + helper.setImageResource(R.id.iv_item_collect, R.drawable.icon_collect_unselect); + } + } + if ("MyCollectActivity".equals(fromWhere)) { + helper.setImageResource(R.id.iv_item_collect, R.drawable.icon_collect_select); + } + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/adapter/DividerItemDecoration.java b/AndroidLearnProject/app/src/main/learn/adapter/DividerItemDecoration.java new file mode 100644 index 0000000..b68e51b --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/DividerItemDecoration.java @@ -0,0 +1,94 @@ +package com.android.learn.adapter; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; + +public class DividerItemDecoration extends RecyclerView.ItemDecoration { + + private static final int[] ATTRS = new int[]{ + android.R.attr.listDivider + }; + + public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; + + public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; + + private Drawable mDivider; + + private int mOrientation; + + public DividerItemDecoration(Context context, int orientation) { + final TypedArray a = context.obtainStyledAttributes(ATTRS); + mDivider = a.getDrawable(0); + a.recycle(); + setOrientation(orientation); + } + + public void setOrientation(int orientation) { + if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { + throw new IllegalArgumentException("invalid orientation"); + } + mOrientation = orientation; + } + + @Override + public void onDraw(Canvas c, RecyclerView parent) { + + if (mOrientation == VERTICAL_LIST) { + drawVertical(c, parent); + } else { + drawHorizontal(c, parent); + } + + } + + + public void drawVertical(Canvas c, RecyclerView parent) { + final int left = parent.getPaddingLeft(); + final int right = parent.getWidth() - parent.getPaddingRight(); + + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + final View child = parent.getChildAt(i); + android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext()); + final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child + .getLayoutParams(); + final int top = child.getBottom() + params.bottomMargin; + final int bottom = top + mDivider.getIntrinsicHeight(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } + + public void drawHorizontal(Canvas c, RecyclerView parent) { + final int top = parent.getPaddingTop(); + final int bottom = parent.getHeight() - parent.getPaddingBottom(); + + final int childCount = parent.getChildCount(); + for (int i = 0; i < childCount; i++) { + final View child = parent.getChildAt(i); + final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child + .getLayoutParams(); + final int left = child.getRight() + params.rightMargin; + final int right = left + mDivider.getIntrinsicHeight(); + mDivider.setBounds(left, top, right, bottom); + mDivider.draw(c); + } + } + + @Override + public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { + if (mOrientation == VERTICAL_LIST) { + outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); + } else { + outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); + } + } +} \ No newline at end of file diff --git a/AndroidLearnProject/app/src/main/learn/adapter/HorizontalPagerAdapter.java b/AndroidLearnProject/app/src/main/learn/adapter/HorizontalPagerAdapter.java new file mode 100644 index 0000000..bb258c8 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/HorizontalPagerAdapter.java @@ -0,0 +1,95 @@ +package com.android.learn.adapter; + +import android.content.Context; +import android.support.annotation.Nullable; +import android.support.v4.view.PagerAdapter; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.activity.KnowledgeChildActivity; +import com.android.learn.base.mmodel.TreeBean; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.ArrayList; +import java.util.List; + + + +public class HorizontalPagerAdapter extends PagerAdapter { + + private Context mContext; + private LayoutInflater mLayoutInflater; + private List mList = new ArrayList<>(); + + public HorizontalPagerAdapter(final Context context,List mList) { + mContext = context; + this.mList=mList; + mLayoutInflater = LayoutInflater.from(context); + } + + public void setList(List list) { + mList = list; + } + + @Override + public int getCount() { + return mList.size(); + } + + @Override + public Object instantiateItem(final ViewGroup container, final int position) { + final View view; + int page; + view = mLayoutInflater.inflate(R.layout.item_tree, container, false); + final TextView txt = (TextView) view.findViewById(R.id.txt_item); + final TreeBean treeBean = mList.get(position); + txt.setText(treeBean.getName()); + RecyclerView recyclerView = view.findViewById(R.id.recyclerView); + recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); + ChildrenAdapter adapter = new ChildrenAdapter(treeBean.getChildren()); + recyclerView.setAdapter(adapter); + adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + KnowledgeChildActivity.startTreeChildrenActivity(mContext, + treeBean.getChildren().get(position).getId(), + treeBean.getChildren().get(position).getName()); + } + }); + container.addView(view); + return view; + } + + @Override + public void destroyItem(final ViewGroup container, final int position, final Object object) { + container.removeView((View) object); + } + + @Override + public boolean isViewFromObject(final View view, final Object object) { + return view.equals(object); + } + + @Override + public int getItemPosition(final Object object) { + return POSITION_NONE; + } + + private class ChildrenAdapter extends BaseQuickAdapter { + + public ChildrenAdapter(@Nullable List data) { + super(R.layout.item_tree_children, data); + } + + @Override + protected void convert(BaseViewHolder helper, TreeBean.ChildrenBean item) { + helper.setText(R.id.tv, item.getName()); + } + } +} diff --git a/AndroidLearnProject/app/src/main/learn/adapter/MainTabAdapter.java b/AndroidLearnProject/app/src/main/learn/adapter/MainTabAdapter.java new file mode 100644 index 0000000..9186c6b --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/MainTabAdapter.java @@ -0,0 +1,41 @@ +package com.android.learn.adapter; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; + + +import com.android.learn.fragment.HomeFragment; + +import java.util.List; + + +public class MainTabAdapter extends FragmentPagerAdapter { + + List fragments; + + public MainTabAdapter(FragmentManager fm, List fragments) { + super(fm); + this.fragments = fragments; + + + } + + @Override + public Fragment getItem(int position) { + Fragment fragment = fragments.get(position); +// Bundle bundle=new Bundle(); +// bundle.putString("title",titles[position]); +// fragment.setArguments(bundle); + return fragment; + } + + @Override + public int getCount() { + return fragments.size(); + } +} + diff --git a/AndroidLearnProject/app/src/main/learn/adapter/ProjectQuickAdapter.java b/AndroidLearnProject/app/src/main/learn/adapter/ProjectQuickAdapter.java new file mode 100644 index 0000000..e52b340 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/ProjectQuickAdapter.java @@ -0,0 +1,32 @@ +package com.android.learn.adapter; + +import android.content.Context; +import android.widget.ImageView; + +import com.android.learn.R; +import com.android.learn.base.mmodel.ProjectListData; +import com.android.learn.base.mmodel.ProjectListData.ProjectData; +import com.android.learn.base.thirdframe.glide.ImageLoader; +import com.bumptech.glide.Glide; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +public class ProjectQuickAdapter extends BaseQuickAdapter { + Context context; + public ProjectQuickAdapter(Context context, List list) { + super(R.layout.item_project_list, list); + this.context=context; + } + + @Override + protected void convert(BaseViewHolder helper, ProjectData projectInfo) { + helper.setText(R.id.item_project_list_title_tv, projectInfo.getTitle()) + .setText(R.id.item_project_list_content_tv, projectInfo.getDesc()) + .setText(R.id.item_project_list_time_tv, projectInfo.getNiceDate()) + .setText(R.id.item_project_list_author_tv, projectInfo.getAuthor()); + + ImageLoader.getInstance().load(context,projectInfo.getEnvelopePic(),(ImageView) helper.getView(R.id.item_project_list_iv)); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/adapter/SearchRecordAdapter.java b/AndroidLearnProject/app/src/main/learn/adapter/SearchRecordAdapter.java new file mode 100644 index 0000000..7a0f023 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/SearchRecordAdapter.java @@ -0,0 +1,30 @@ +package com.android.learn.adapter; + +import android.content.Context; + +import com.android.learn.R; +import com.android.learn.base.db.SearchRecord; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +/** + * Created by yuepeng on 2017/6/9. + */ + +public class SearchRecordAdapter extends BaseQuickAdapter { + Context context; + List list; + + public SearchRecordAdapter(Context context, List list) { + super(R.layout.item_search_record, list); + this.context = context; + this.list = list; + } + + @Override + protected void convert(BaseViewHolder helper, SearchRecord searchRecord) { + helper.setText(R.id.tv_history_item, searchRecord.getName()); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/adapter/TodoQuickAdapter.java b/AndroidLearnProject/app/src/main/learn/adapter/TodoQuickAdapter.java new file mode 100644 index 0000000..dfb8be2 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/adapter/TodoQuickAdapter.java @@ -0,0 +1,48 @@ +package com.android.learn.adapter; + +import android.content.Context; +import android.graphics.Color; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.base.mmodel.TodoData.DatasBean; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; + +import java.util.List; + +public class TodoQuickAdapter extends BaseQuickAdapter { + + Context context; + List list; + int position; + + public TodoQuickAdapter(Context context, List list, int position) { + super(R.layout.todo_item_view, list); + this.context = context; + this.list = list; + this.position = position; + } + + + @Override + protected void convert(BaseViewHolder helper, DatasBean bean) { + helper.setText(R.id.item_name, bean.getTitle()); + helper.setText(R.id.item_des, bean.getContent()); + helper.setText(R.id.tv_todo_time, bean.getDateStr()); + if (position == 1) { + TextView tv_todo_time = helper.getView(R.id.tv_todo_time); + ImageView iv_item_todo = helper.getView(R.id.iv_item_todo); + tv_todo_time.setTextColor(Color.parseColor("#E4A340")); + tv_todo_time.setBackgroundColor(Color.parseColor("#FFFAF1")); + iv_item_todo.setImageResource(R.drawable.icon_done); + TextView tv_item_done_time = helper.getView(R.id.tv_item_done_time); + tv_item_done_time.setVisibility(View.VISIBLE); + tv_item_done_time.setText(context.getString(R.string.todo_finish_time)+bean.getCompleteDateStr()); + } + helper.addOnClickListener(R.id.iv_item_todo); + helper.addOnClickListener(R.id.iv_item_delete); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/HomeFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/HomeFragment.java new file mode 100644 index 0000000..02f218d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/HomeFragment.java @@ -0,0 +1,268 @@ +package com.android.learn.fragment; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.v4.widget.NestedScrollView; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; + +import com.android.learn.R; +import com.android.learn.activity.ArticleDetailActivity; +import com.android.learn.adapter.ArticleQuickAdapter; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.base.event.CancelCollectEvent; +import com.android.learn.base.event.LoginEvent; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.mmodel.BannerListData; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.HomeContract; +import com.android.learn.mpresenter.HomePresenter; +import com.bumptech.glide.Glide; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; +import com.youth.banner.Banner; +import com.youth.banner.BannerConfig; +import com.youth.banner.listener.OnBannerListener; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + + +public class HomeFragment extends BaseMvpFragment implements HomeContract.View { + + @BindView(R.id.article_recyclerview) + RecyclerView article_recyclerview; + @BindView(R.id.scrollview_nested) + NestedScrollView scrollview_nested; + @BindView(R.id.banner) + Banner banner; + @BindView(R.id.smartRefreshLayout_home) + SmartRefreshLayout smartRefreshLayout; + + private List articleDataList; + private ArticleQuickAdapter feedArticleAdapter; + + @Override + public void initData(Bundle bundle) { + + EventBus.getDefault().register(this); + } + + @Override + public void initView(View view) { + initSmartRefreshLayout(); + initRecyclerView(); + } + + @Override + public int setContentLayout() { + return R.layout.fragment_home; + } + + @Override + public void reload() { + mPresenter.getFeedArticleList(0); + mPresenter.getBannerInfo(); + } + + @Override + public HomePresenter initPresenter() { + return new HomePresenter(); + } + + @Override + protected void loadData() { + CustomProgressDialog.show(getActivity()); + mPresenter.getFeedArticleList(0); + mPresenter.getBannerInfo(); + + } + + + @Override + public void showArticleList(FeedArticleListData listData, boolean isRefresh) { + final List newDataList = listData.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + return; + } + smartRefreshLayout.finishLoadMore(); + + feedArticleAdapter.addData(newDataList); + + } + + @Override + public void showBannerList(BannerListData itemBeans) { + + final List linkList = new ArrayList(); + List imageList = new ArrayList(); + List titleList = new ArrayList(); + int size = itemBeans.data.size(); + + for (int i = 0; i < size; i++) { + imageList.add(itemBeans.data.get(i).imagePath); + titleList.add(itemBeans.data.get(i).title); + linkList.add(itemBeans.data.get(i).url); + } + banner.setImageLoader(new com.youth.banner.loader.ImageLoader() { + @Override + public void displayImage(Context context, Object path, ImageView imageView) { + Glide.with(getActivity()).load(path).into(imageView); + } + }); + + //设置样式,默认为:Banner.NOT_INDICATOR(不显示指示器和标题) + //可选样式如下: + //1. Banner.CIRCLE_INDICATOR 显示圆形指示器 + //2. Banner.NUM_INDICATOR 显示数字指示器 + //3. Banner.NUM_INDICATOR_TITLE 显示数字指示器和标题 + //4. Banner.CIRCLE_INDICATOR_TITLE 显示圆形指示器和标题 + banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);//设置圆形指示器与标题 + //设置banner动画效果 +// Tansformer.CubeIn +// Transformer.CubeOut +// Transformer.DepthPage +// Transformer.FlipHorizontal +// Transformer.FlipVertical +// banner.setBannerAnimation(Transformer.FlipHorizontal); + banner.setIndicatorGravity(BannerConfig.CENTER);//设置指示器位置 + banner.setDelayTime(4000);//设置轮播时间 + banner.setImages(imageList);//设置图片源 + banner.setBannerTitles(titleList);//设置标题源 + + banner.start(); + + + banner.setOnBannerListener(new OnBannerListener() { + @Override + public void OnBannerClick(int position) { + Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", linkList.get(position)); + intent.putExtras(bundle); + startActivity(intent); + } + }); + } + + private void initRecyclerView() { + articleDataList = new ArrayList<>(); + feedArticleAdapter = new ArticleQuickAdapter(getActivity(), articleDataList, "HomeFragment"); + article_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), + DividerItemDecoration.VERTICAL_LIST)); + article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); + article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()) { + public boolean canScrollVertically() { + //解决ScrollView里存在多个RecyclerView时滑动卡顿的问题 + //如果你的RecyclerView是水平滑动的话可以重写canScrollHorizontally方法 + return false; + } + }); + //解决数据加载不完的问题 +// project_recyclerview.setNestedScrollingEnabled(false); +// project_recyclerview.setHasFixedSize(true); +// //解决数据加载完成后, 没有停留在顶部的问题 + article_recyclerview.setFocusable(false); + article_recyclerview.setAdapter(feedArticleAdapter); + feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", articleDataList.get(position).getLink()); + intent.putExtras(bundle); + startActivity(intent); + } + + }); + feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + if (feedArticleAdapter.getData().get(position).isCollect()) { + mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); + } else { + mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); + } + } + }); + } + + //初始化下拉刷新控件 + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + mPresenter.onLoadMore(); + } + + @Override + public void onRefresh(RefreshLayout refreshLayout) { + mPresenter.onRefreshMore(); + } + }); + } + + public void scrollToTop() { + scrollview_nested.scrollTo(0, 0); + } + + public void onResume() { + super.onResume(); + + } + + @Override + public void showCollectArticleData(int position, FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + @Override + public void showCancelCollectArticleData(int position, FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + @Override + public void showCancelCollectArticleData(int id) { + int position = feedArticleAdapter.getPosById(id); + if (position == -1) return; + FeedArticleData feedArticleData = articleDataList.get(position); + feedArticleData.setCollect(false); + feedArticleAdapter.setData(position, feedArticleData); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(CancelCollectEvent event) { + mPresenter.cancelCollectArticle(event.id); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(LoginEvent accountEvent) { + feedArticleAdapter.getData().clear(); + feedArticleAdapter.notifyDataSetChanged(); + mPresenter.getFeedArticleList(0); + mPresenter.mCurrentPage = 0; + } + + public void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/KnowledgeFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/KnowledgeFragment.java new file mode 100644 index 0000000..53fd427 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/KnowledgeFragment.java @@ -0,0 +1,79 @@ +package com.android.learn.fragment; + +import android.app.Dialog; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; + +import com.android.learn.R; +import com.android.learn.adapter.HorizontalPagerAdapter; +import com.android.learn.base.activity.BaseActivity; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.mmodel.TreeBean; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.KnowledgeContract; +import com.android.learn.mpresenter.KnowledgePresenter; +import com.gigamole.infinitecycleviewpager.HorizontalInfiniteCycleViewPager; + +import java.util.List; + +import butterknife.BindView; + + +public class KnowledgeFragment extends BaseMvpFragment implements KnowledgeContract.View { + @BindView(R.id.hicvp) + HorizontalInfiniteCycleViewPager horizontalInfiniteCycleViewPager; + private HorizontalPagerAdapter mPagerAdapter; + + Handler handler = new Handler() { + public void handleMessage(Message message) { + CustomProgressDialog.show(getActivity()); + } + }; + + @Override + public void initData(Bundle bundle) { + } + + @Override + public void initView(View view) { + } + + @Override + public int setContentLayout() { + return R.layout.fragment_knowledge; + } + + @Override + public void reload() { + } + + @Override + public KnowledgePresenter initPresenter() { + return new KnowledgePresenter(); + } + + @Override + protected void loadData() { + + CustomProgressDialog.show(getActivity()); + mPresenter.getKnowledge(); + } + + @Override + public void showKnowledge(List datas) { + mPagerAdapter = new HorizontalPagerAdapter(getContext(), datas); + horizontalInfiniteCycleViewPager.setAdapter(mPagerAdapter); + if (horizontalInfiniteCycleViewPager != null && datas.size() > 1) + horizontalInfiniteCycleViewPager.setCurrentItem(1); + horizontalInfiniteCycleViewPager.post(new Runnable() { + @Override + public void run() { + CustomProgressDialog.cancel(); + } + }); + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/ProjectFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/ProjectFragment.java new file mode 100644 index 0000000..da668a5 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/ProjectFragment.java @@ -0,0 +1,126 @@ +package com.android.learn.fragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +import com.android.learn.R; +import com.android.learn.activity.ArticleDetailActivity; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.adapter.ProjectQuickAdapter; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.mmodel.ProjectListData; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.ProjectContract; +import com.android.learn.mpresenter.ProjectPresenter; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + + +public class ProjectFragment extends BaseMvpFragment implements ProjectContract.View { + + @BindView(R.id.project_recyclerview) + RecyclerView project_recyclerview; + @BindView(R.id.smartRefreshLayout_home) + SmartRefreshLayout smartRefreshLayout; + ProjectQuickAdapter projectAdapter; + private List projectDataList; + + @Override + public void initData(Bundle bundle) { + + } + + @Override + public void initView(View view) { + initSmartRefreshLayout(); + initRecyclerView(); + } + + @Override + public int setContentLayout() { + return R.layout.fragment_project; + } + + @Override + public void reload() { + mPresenter.getProjectInfo(1, 294); + } + + @Override + public ProjectPresenter initPresenter() { + return new ProjectPresenter(); + } + + @Override + protected void loadData() { + CustomProgressDialog.show(getActivity()); + mPresenter.getProjectInfo(1, 294); + } + + + @Override + public void showProjectList(ProjectListData listData, boolean isRefresh) { + final List newDataList = listData.data.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + return; + } + smartRefreshLayout.finishLoadMore(); + projectAdapter.addData(newDataList); + + } + + private void initRecyclerView() { + projectDataList = new ArrayList<>(); + projectAdapter = new ProjectQuickAdapter(getActivity(), projectDataList); + project_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), + DividerItemDecoration.VERTICAL_LIST)); + project_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); + project_recyclerview.setAdapter(projectAdapter); + + projectAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", projectDataList.get(position).getLink()); + intent.putExtras(bundle); + startActivity(intent); + } + + }); + } + + //初始化下拉刷新控件 + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + mPresenter.onLoadMore(294); + } + + @Override + public void onRefresh(RefreshLayout refreshLayout) { + mPresenter.onRefreshMore(294); + } + }); + } + + public void scrollToTop() { + project_recyclerview.scrollToPosition(0); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/TodoFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/TodoFragment.java new file mode 100644 index 0000000..79e4f3a --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/TodoFragment.java @@ -0,0 +1,229 @@ +package com.android.learn.fragment; + +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.activity.TodoEditActivity; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.adapter.TodoQuickAdapter; +import com.android.learn.base.event.UpdateDoneEvent; +import com.android.learn.base.event.UpdateTodoEvent; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.TodoData; +import com.android.learn.base.mmodel.TodoData.DatasBean; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.TodoContract; +import com.android.learn.mpresenter.TodoPresenter; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + + +public class TodoFragment extends BaseMvpFragment implements TodoContract.View { + @BindView(R.id.article_recyclerview) + RecyclerView article_recyclerview; + @BindView(R.id.smartRefreshLayout) + SmartRefreshLayout smartRefreshLayout; + @BindView(R.id.tv_empty_todo) + TextView tv_empty_todo; + private List todoList; + private TodoQuickAdapter todoAdapter; + + int fragmentPosition, clickId; + + public static TodoFragment newInstance(Bundle bundle) { + TodoFragment testFragment = new TodoFragment(); + testFragment.setArguments(bundle); + return testFragment; + } + + + @Override + public void initData(Bundle bundle) { + fragmentPosition = bundle.getInt("position", 0); + initSmartRefreshLayout(); + initRecyclerView(); + } + + @Override + public void initView(View view) { + EventBus.getDefault().register(this); + } + + @Override + public int setContentLayout() { + return R.layout.fragment_todo; + } + + @Override + public void reload() { + + } + + @Override + public TodoPresenter initPresenter() { + return new TodoPresenter(); + } + + @Override + protected void loadData() { + CustomProgressDialog.show(getActivity()); + if (fragmentPosition == 0) + mPresenter.getListNotDone(0); + if (fragmentPosition == 1) + mPresenter.getListDone(0); + } + + + private void initRecyclerView() { + todoList = new ArrayList<>(); + todoAdapter = new TodoQuickAdapter(getActivity(), todoList, fragmentPosition); + article_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), + DividerItemDecoration.VERTICAL_LIST)); + article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); + + //解决数据加载完成后, 没有停留在顶部的问题 + article_recyclerview.setFocusable(false); + article_recyclerview.setAdapter(todoAdapter); + + todoAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + DatasBean datasBean = null; + if (fragmentPosition == 0) { + datasBean = todoAdapter.getData().get(position); + Bundle bundle = new Bundle(); + bundle.putSerializable("todo_item", datasBean); + TodoEditActivity.startActivity(getActivity(), bundle); + } + } + + }); + todoAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + + DatasBean datasBean = todoAdapter.getData().get(position); + switch (view.getId()) { + case R.id.iv_item_todo: + if (fragmentPosition == 0) { + clickId = datasBean.getId(); + mPresenter.updateTodoStatus(clickId, 1); + todoAdapter.remove(position); + } + if (fragmentPosition == 1) { + clickId = datasBean.getId(); + mPresenter.updateTodoStatus(clickId, 0); + todoAdapter.remove(position); + } + + break; + case R.id.iv_item_delete: + mPresenter.deleteTodo(datasBean.getId()); + todoAdapter.remove(position); + break; + } + } + }); + } + + //初始化下拉刷新控件 + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + if (fragmentPosition == 0) + mPresenter.getListNotDone(0); + if (fragmentPosition == 1) + mPresenter.getListDone(0); + } + + + }); + } + + public void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + } + + @Override + public void showListNotDone(TodoData todoData) { + final List newDataList = todoData.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + } + smartRefreshLayout.finishLoadMore(); + todoAdapter.addData(newDataList); + + if (todoAdapter.getData().size() == 0) { + tv_empty_todo.setVisibility(View.VISIBLE); + + } else tv_empty_todo.setVisibility(View.GONE); + } + + @Override + public void showListDone(TodoData todoData) { + final List newDataList = todoData.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + } + smartRefreshLayout.finishLoadMore(); + + todoAdapter.addData(newDataList); + + if (todoAdapter.getData().size() == 0) { + tv_empty_todo.setVisibility(View.VISIBLE); + tv_empty_todo.setText(getString(R.string.empty_done)); + } else tv_empty_todo.setVisibility(View.GONE); + + + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(UpdateDoneEvent event) { + if (fragmentPosition == 1) { + todoAdapter.getData().clear(); + mPresenter.donePage = 1; + mPresenter.getListDone(0); + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(UpdateTodoEvent event) { + if (fragmentPosition == 0) { + todoAdapter.getData().clear(); + mPresenter.notDonePage = 1; + mPresenter.getListNotDone(0); + } + } + + @Override + public void showUpdateTodoStatus(BaseData baseData) { + if (fragmentPosition == 0) { + EventBus.getDefault().post(new UpdateDoneEvent()); + } + if (fragmentPosition == 1) { + EventBus.getDefault().post(new UpdateTodoEvent()); + } + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/UserFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/UserFragment.java new file mode 100644 index 0000000..b8b5f62 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/UserFragment.java @@ -0,0 +1,139 @@ +package com.android.learn.fragment; + +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.android.learn.R; +import com.android.learn.activity.MyCollectActivity; +import com.android.learn.activity.MyTodoActivity; +import com.android.learn.activity.RegisterLoginActivity; +import com.android.learn.activity.SettingActivity; +import com.android.learn.base.event.LoginEvent; +import com.android.learn.base.event.LogoutEvent; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.utils.Utils; +import com.android.learn.base.utils.account.UserUtil; +import com.android.learn.mcontract.UserInfoContract; +import com.android.learn.mpresenter.UserInfoPresenter; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import butterknife.BindView; +import butterknife.OnClick; + + +public class UserFragment extends BaseMvpFragment implements UserInfoContract.View { + + @BindView(R.id.iv_user_photo) + public ImageView iv_user_photo; + @BindView(R.id.tv_user_profile_not_login) + TextView tv_user_profile_not_login; + + @Override + public void initData(Bundle bundle) { + EventBus.getDefault().register(this); + } + + @Override + public void initView(View view) { + refreshUserInfo(); + } + + @OnClick({R.id.iv_user_photo, R.id.my_setting_layout, R.id.my_collect_layout, R.id.my_todo_layout}) + public void click(View view) { + switch (view.getId()) { + case R.id.my_collect_layout: + if (!UserUtil.isLogined()) { + RegisterLoginActivity.startActivity(getActivity()); + Utils.showToast(getString(R.string.user_not_login), true); + return; + } + MyCollectActivity.startActivity(getActivity()); + break; + case R.id.my_todo_layout: + MyTodoActivity.startActivity(getActivity()); + break; + case R.id.my_setting_layout: + SettingActivity.startActivity(getActivity()); + break; + + case R.id.iv_user_photo: + if (!UserUtil.isLogined()) { + RegisterLoginActivity.startActivity(getActivity()); + } + } + } + + @Override + public int setContentLayout() { + return R.layout.fragment_user; + } + + @Override + public void reload() { + } + + @Override + public UserInfoPresenter initPresenter() { + return new UserInfoPresenter(); + } + + @Override + protected void loadData() { + + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(LoginEvent accountEvent) { + refreshUserInfo(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(LogoutEvent logoutEvent) { + logout(); + } + + + public void refreshUserInfo() { + if (UserUtil.getUserInfo() == null) return; + if (UserUtil.isLogined()) { + String username = UserUtil.getUserInfo().data.username; + if (tv_user_profile_not_login != null) + tv_user_profile_not_login.setText(username); + String photoUrl = UserUtil.getUserInfo().data.icon; + if (photoUrl != null) { + RequestOptions options = new RequestOptions().placeholder(R.drawable.user_default_photo); + if(iv_user_photo!=null) + Glide.with(getActivity()).load(photoUrl).apply(options).into(iv_user_photo); + } + + } else { + + } + + } + + private void logout() { + + tv_user_profile_not_login.setText(getString(R.string.login_register)); + iv_user_photo.setImageResource(R.drawable.user_default_photo); + SPUtils.clear(getActivity(), "phone_num"); + SPUtils.clear(getActivity(), "password"); + mPresenter.getLogoutData(); + RegisterLoginActivity.startActivity(getActivity()); + UserUtil.setUserInfo(null); + } + + @Override + public void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(getActivity()); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/WechatFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/WechatFragment.java new file mode 100644 index 0000000..89e403d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/WechatFragment.java @@ -0,0 +1,117 @@ +package com.android.learn.fragment; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.ViewPager; +import android.view.View; + +import com.android.learn.R; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.WxArticle; +import com.android.learn.base.view.colorfultab.ColorClipTabLayout; +import com.android.learn.mcontract.WechatContract; +import com.android.learn.mpresenter.WechatPresenter; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + + +public class WechatFragment extends BaseMvpFragment implements WechatContract.View { + + @BindView(R.id.tab_layout) + ColorClipTabLayout tab_layout; + @BindView(R.id.view_pager) + ViewPager view_pager; + + List fragmentList = new ArrayList(); + List titleList = new ArrayList(); + + @Override + protected void loadData() { + mPresenter.getWxArticle(); + } + + @Override + public void initData(Bundle bundle) { + + } + + @Override + public void initView(View view) { + + } + + @Override + public int setContentLayout() { + return R.layout.fragment_wechat; + } + + @Override + public void reload() { + } + + @Override + public WechatPresenter initPresenter() { + return new WechatPresenter(); + } + + @Override + public void showWxArticle(List list) { + WechatSubFragment firstSubFragment = null; + int firstId = 0; + int size = list.size(); + for (int i = 0; i < size; i++) { + WxArticle wxArticle = list.get(i); + titleList.add(wxArticle.getName()); + WechatSubFragment wechatSubFragment = WechatSubFragment.newInstance(wxArticle.getId(), wxArticle.getName()); + fragmentList.add(wechatSubFragment); + if (i == 0) { + firstId = wxArticle.getId(); + firstSubFragment = wechatSubFragment; + } + } + CustomPagerAdapter adapter = new CustomPagerAdapter(getFragmentManager(), fragmentList); + view_pager.setAdapter(adapter); + view_pager.setOffscreenPageLimit(list.size()); + tab_layout.setupWithViewPager(view_pager); + firstSubFragment.userId = firstId; + firstSubFragment.loadData(); + } + + + public class CustomPagerAdapter extends FragmentPagerAdapter { + + private List mFragments; + + public CustomPagerAdapter(FragmentManager fm, List fragments) { + super(fm); + this.mFragments = fragments; + fm.beginTransaction().commitAllowingStateLoss(); + } + + @Override + public Fragment getItem(int position) { + return this.mFragments.get(position); + } + + @Override + public int getCount() { + return this.mFragments.size(); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public CharSequence getPageTitle(int position) { + return titleList.get(position); + } + } +} diff --git a/AndroidLearnProject/app/src/main/learn/fragment/WechatSubFragment.java b/AndroidLearnProject/app/src/main/learn/fragment/WechatSubFragment.java new file mode 100644 index 0000000..3804790 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/fragment/WechatSubFragment.java @@ -0,0 +1,191 @@ +package com.android.learn.fragment; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +import com.android.learn.R; +import com.android.learn.activity.ArticleDetailActivity; +import com.android.learn.adapter.ArticleQuickAdapter; +import com.android.learn.adapter.DividerItemDecoration; +import com.android.learn.base.event.CancelCollectEvent; +import com.android.learn.base.event.LoginEvent; +import com.android.learn.base.fragment.BaseMvpFragment; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.view.CustomProgressDialog; +import com.android.learn.mcontract.WechatSubContract; +import com.android.learn.mpresenter.WechatSubPresenter; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + + +public class WechatSubFragment extends BaseMvpFragment implements WechatSubContract.View { + @BindView(R.id.article_recyclerview) + RecyclerView article_recyclerview; + @BindView(R.id.smartRefreshLayout) + SmartRefreshLayout smartRefreshLayout; + private List articleDataList; + private ArticleQuickAdapter feedArticleAdapter; + + int userId; + String userName; + + public static WechatSubFragment newInstance(int id, String name) { + WechatSubFragment testFragment = new WechatSubFragment(); + Bundle bundle = new Bundle(); + bundle.putInt("id", id); + bundle.putString("name", name); + testFragment.setArguments(bundle); + return testFragment; + } + + + @Override + public void initData(Bundle bundle) { + userId = bundle.getInt("id", 408); + userName = bundle.getString("name"); + initSmartRefreshLayout(); + initRecyclerView(); + } + + @Override + public void initView(View view) { + EventBus.getDefault().register(this); + } + + @Override + public int setContentLayout() { + return R.layout.fragment_wechat_sub; + } + + @Override + public void reload() { + + } + + @Override + public WechatSubPresenter initPresenter() { + return new WechatSubPresenter(); + } + + @Override + protected void loadData() { + CustomProgressDialog.show(getActivity()); + if (userId != 0) + mPresenter.getWxArtileById(userId); + } + + @Override + public void showWxArticleById(FeedArticleListData datas) { + final List newDataList = datas.getDatas(); + if (newDataList == null || newDataList.size() == 0) { + smartRefreshLayout.finishLoadMoreWithNoMoreData(); + return; + } + smartRefreshLayout.finishLoadMore(); + feedArticleAdapter.addData(newDataList); + + } + + @Override + public void showCollectArticleData(int position, FeedArticleListData.FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + @Override + public void showCancelCollectArticleData(int position, FeedArticleListData.FeedArticleData feedArticleData) { + feedArticleAdapter.setData(position, feedArticleData); + } + + @Override + public void showCancelCollectArticleData(int id) { + int position = feedArticleAdapter.getPosById(id); + if (position == -1) return; + FeedArticleData feedArticleData = articleDataList.get(position); + feedArticleData.setCollect(false); + feedArticleAdapter.setData(position, feedArticleData); + } + + + private void initRecyclerView() { + articleDataList = new ArrayList<>(); + feedArticleAdapter = new ArticleQuickAdapter(getActivity(), articleDataList, "WechatSubFragment"); + article_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), + DividerItemDecoration.VERTICAL_LIST)); + article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); + + //解决数据加载完成后, 没有停留在顶部的问题 + article_recyclerview.setFocusable(false); + article_recyclerview.setAdapter(feedArticleAdapter); + + feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { + @Override + public void onItemClick(BaseQuickAdapter adapter, View view, int position) { + Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); + Bundle bundle = new Bundle(); + bundle.putString("url", feedArticleAdapter.getData().get(position).getLink()); + intent.putExtras(bundle); + startActivity(intent); + } + + }); + feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { + @Override + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + if (feedArticleAdapter.getData().get(position).isCollect()) { + mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); + } else { + mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); + } + } + }); + } + + //初始化下拉刷新控件 + private void initSmartRefreshLayout() { + smartRefreshLayout.setEnableLoadMore(true); + smartRefreshLayout.setEnableRefresh(false); + smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 + smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); + smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(RefreshLayout refreshLayout) { + mPresenter.getWxArtileById(userId); + } + + + }); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(CancelCollectEvent event) { + mPresenter.cancelCollectArticle(event.id); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEvent(LoginEvent accountEvent) { + feedArticleAdapter.getData().clear(); + feedArticleAdapter.notifyDataSetChanged(); + mPresenter.getWxArtileById(userId); + mPresenter.num = 0; + } + + public void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/CollectContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/CollectContract.java new file mode 100644 index 0000000..08fb77e --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/CollectContract.java @@ -0,0 +1,26 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class CollectContract { + + public interface Presenter { + + + void getCollectList(); + + void cancelCollectArticle(int position, int id); + } + + public interface View { + + void showCollectList(FeedArticleListData feedArticleListData); + + void showCancelCollectArticle(int position, int id); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/HomeContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/HomeContract.java new file mode 100644 index 0000000..971711d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/HomeContract.java @@ -0,0 +1,39 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.BannerListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.FeedArticleListData; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class HomeContract { + + public interface Presenter { + + void getBannerInfo(); + + void getFeedArticleList(int num); + + void onLoadMore(); + + void onRefreshMore(); + + void addCollectArticle(int position, FeedArticleData feedArticleData); + + void cancelCollectArticle(int position, FeedArticleData feedArticleData); + } + + public interface View { + + void showArticleList(FeedArticleListData itemBeans, boolean isRefresh); + + void showBannerList(BannerListData itemBeans); + + void showCollectArticleData(int position, FeedArticleData feedArticleData); + + void showCancelCollectArticleData(int position, FeedArticleData feedArticleData); + void showCancelCollectArticleData(int id); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/KnowledgeChildContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/KnowledgeChildContract.java new file mode 100644 index 0000000..164a337 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/KnowledgeChildContract.java @@ -0,0 +1,32 @@ +package com.android.learn.mcontract; + + +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.TreeBean; + +import java.util.List; + + +public class KnowledgeChildContract { + + public interface Presenter { + void getKnowledgeArticleList(int num,int cid); + + void onRefreshMore(int cid); + + void onLoadMore(int cid); + + void addCollectArticle(int position, FeedArticleData feedArticleData); + + void cancelCollectArticle(int position, FeedArticleData feedArticleData); + } + + public interface View { + void showArticleList(FeedArticleListData itemBeans, boolean isRefresh); + void showCollectArticleData(int position, FeedArticleData feedArticleData); + + void showCancelCollectArticleData(int id, FeedArticleData feedArticleData); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/KnowledgeContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/KnowledgeContract.java new file mode 100644 index 0000000..ad4efd3 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/KnowledgeContract.java @@ -0,0 +1,22 @@ +package com.android.learn.mcontract; + + + +import com.android.learn.base.mmodel.TreeBean; + +import java.util.List; + + +public class KnowledgeContract { + + public interface View { + void showKnowledge(List data); + + } + + public interface Presenter { + void getKnowledge(); + + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/MainActivityContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/MainActivityContract.java new file mode 100644 index 0000000..5942515 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/MainActivityContract.java @@ -0,0 +1,26 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.HotKeyData; + +import java.util.List; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class MainActivityContract { + + public interface Presenter { + + void getHotKey(); + + } + + public interface View { + + void showHotKey(List list); + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/ProjectContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/ProjectContract.java new file mode 100644 index 0000000..d3222df --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/ProjectContract.java @@ -0,0 +1,24 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.ProjectListData; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class ProjectContract { + + public interface Presenter { + + void getProjectInfo(int page, int cid); + + void onRefreshMore(int cid); + + void onLoadMore(int cid); + } + + public interface View { + + void showProjectList(ProjectListData itemBeans, boolean isRefresh); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/RegisterLoginContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/RegisterLoginContract.java new file mode 100644 index 0000000..e58d6d2 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/RegisterLoginContract.java @@ -0,0 +1,25 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.RegisterLoginData; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class RegisterLoginContract { + + public interface Presenter { + + void login(String account, String password); + + void register(String account, String password, String rePassword); + + } + + public interface View { + + void showRegisterResData(RegisterLoginData registerResData); + + void showLoginResData(RegisterLoginData loginData); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/SearchContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/SearchContract.java new file mode 100644 index 0000000..01fe7bb --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/SearchContract.java @@ -0,0 +1,35 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.HotKeyData; + +import java.util.List; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class SearchContract { + + public interface Presenter { + + + void getFeedArticleList(String key); + + void onLoadMore(String key); + + void addCollectArticle(int position, FeedArticleListData.FeedArticleData feedArticleData); + + void cancelCollectArticle(int position, FeedArticleListData.FeedArticleData feedArticleData); + } + + public interface View { + + + void showArticleList(FeedArticleListData itemBeans); + + void showCollectArticleData(int position, FeedArticleListData.FeedArticleData feedArticleData); + + void showCancelCollectArticleData(int id, FeedArticleListData.FeedArticleData feedArticleData); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/SplashLoginContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/SplashLoginContract.java new file mode 100644 index 0000000..9f6e46e --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/SplashLoginContract.java @@ -0,0 +1,25 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.RegisterLoginData; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class SplashLoginContract { + + public interface Presenter { + + + void login(String username, String password); + + + } + + public interface View { + + void showLoginResData(RegisterLoginData loginResData); + + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/TodoAddContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/TodoAddContract.java new file mode 100644 index 0000000..61282f4 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/TodoAddContract.java @@ -0,0 +1,24 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.BaseData; + +import java.util.Map; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class TodoAddContract { + + public interface Presenter { + + void addTodo( Map map); + + } + + public interface View { + + + void showAddTodo(BaseData todoData); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/TodoContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/TodoContract.java new file mode 100644 index 0000000..d75b750 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/TodoContract.java @@ -0,0 +1,34 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.TodoData; + +import java.util.Map; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class TodoContract { + + public interface Presenter { + + + void getListNotDone(int type); + + void getListDone(int type); + + void deleteTodo(int id); + + void updateTodoStatus(int id, int status); + + } + + public interface View { + + void showListNotDone(TodoData todoData); + + void showListDone(TodoData todoData); + void showUpdateTodoStatus(BaseData todoData); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/TodoEditContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/TodoEditContract.java new file mode 100644 index 0000000..689516a --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/TodoEditContract.java @@ -0,0 +1,25 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.TodoData; + +import java.util.Map; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class TodoEditContract { + + public interface Presenter { + + void updateTodo(int id, Map map); + + } + + public interface View { + + + void showUpdateTodo(BaseData todoData); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/UserInfoContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/UserInfoContract.java new file mode 100644 index 0000000..890d489 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/UserInfoContract.java @@ -0,0 +1,18 @@ +package com.android.learn.mcontract; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class UserInfoContract { + + public interface Presenter { + + + void getLogoutData(); + + } + public interface View { + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/WechatContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/WechatContract.java new file mode 100644 index 0000000..4ecf429 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/WechatContract.java @@ -0,0 +1,28 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.BannerListData; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.WxArticle; + +import java.util.List; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class WechatContract { + + public interface Presenter { + + void getWxArticle(); + + } + + public interface View { + + void showWxArticle(List list); + + + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mcontract/WechatSubContract.java b/AndroidLearnProject/app/src/main/learn/mcontract/WechatSubContract.java new file mode 100644 index 0000000..d9dc417 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mcontract/WechatSubContract.java @@ -0,0 +1,37 @@ +package com.android.learn.mcontract; + +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.WxArticle; + +import java.util.List; + +/** + * Created by gaolei on 2018/6/18. + */ + +public class WechatSubContract { + + public interface Presenter { + + + void getWxArtileById(int id); + + + void addCollectArticle(int position, FeedArticleData feedArticleData); + + void cancelCollectArticle(int position, FeedArticleData feedArticleData); + } + + public interface View { + + + void showWxArticleById(FeedArticleListData datas); + + void showCollectArticleData(int position, FeedArticleData feedArticleData); + + void showCancelCollectArticleData(int position, FeedArticleData feedArticleData); + + void showCancelCollectArticleData(int id); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/CollectPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/CollectPresenter.java new file mode 100644 index 0000000..f7250f5 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/CollectPresenter.java @@ -0,0 +1,52 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.CollectContract; + +import io.reactivex.Observable; + + +public class CollectPresenter extends BasePresenter implements CollectContract.Presenter { + + int page = 0; + + @Override + public void getCollectList() { + + Observable observable = mRestService.getCollectList(page); + addSubscribe(observable, new BaseObserver>(true) { + + @Override + public void onNext(BaseResponse data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showCollectList(data.getData()); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + page++; + } + + @Override + public void cancelCollectArticle(final int position, final int id) { +// int id = feedArticleData.getId(); + Observable observable = mRestService.cancelCollectArticle(id, -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showCancelCollectArticle(position, id); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/HomePresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/HomePresenter.java new file mode 100644 index 0000000..70fc3a2 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/HomePresenter.java @@ -0,0 +1,120 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BannerListData; +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.HomeContract; + +import io.reactivex.Observable; + + +public class HomePresenter extends BasePresenter implements HomeContract.Presenter { + private boolean isRefresh = true; + public int mCurrentPage = 0; + + @Override + public void onRefreshMore() { + Observable observable = mRestService.getFeedArticleList(-1); + addSubscribe(observable, new BaseObserver>(false) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData(), true); + } + }); + + + } + + @Override + public void onLoadMore() { + ++mCurrentPage; + Observable observable = mRestService.getFeedArticleList(mCurrentPage); + addSubscribe(observable, new BaseObserver>(false) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData(), false); + } + }); + } + + @Override + public void getFeedArticleList(int num) { + Observable observable = mRestService.getFeedArticleList(num); + addSubscribe(observable, new BaseObserver>(true) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData(), false); + } + }); + } + + @Override + public void getBannerInfo() { + Observable observable = mRestService.getBannerListData(); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BannerListData bannerListData) { + mView.showBannerList(bannerListData); + } + + }); + + + } + + + @Override + public void addCollectArticle(final int position, final FeedArticleData feedArticleData) { + Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(true); + mView.showCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + + } + + @Override + public void cancelCollectArticle(final int position, final FeedArticleData feedArticleData) { + Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(false); + mView.showCancelCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } + + public void cancelCollectArticle(final int id) { + Observable observable = mRestService.cancelCollectArticle(id, -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showCancelCollectArticleData(id); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/KnowledgeChildPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/KnowledgeChildPresenter.java new file mode 100644 index 0000000..183a72d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/KnowledgeChildPresenter.java @@ -0,0 +1,88 @@ +package com.android.learn.mpresenter; + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.KnowledgeChildContract; + +import io.reactivex.Observable; + + +public class KnowledgeChildPresenter extends BasePresenter implements KnowledgeChildContract.Presenter { + private int mCurrentPage = 0; + + @Override + public void getKnowledgeArticleList(int num, int cid) { + Observable observable = mRestService.getKnowledgeArticleList(num, cid); + addSubscribe(observable, new BaseObserver>(true) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData(), false); + } + }); + } + + @Override + public void onRefreshMore(int cid) { + Observable observable = mRestService.getKnowledgeArticleList(-1, cid); + addSubscribe(observable, new BaseObserver>(false) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData(), true); + } + }); + + + } + + @Override + public void onLoadMore(int cid) { + ++mCurrentPage; + Observable observable = mRestService.getKnowledgeArticleList(mCurrentPage, cid); + addSubscribe(observable, new BaseObserver>(false) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData(), false); + } + }); + } + + @Override + public void addCollectArticle(final int position, final FeedArticleData feedArticleData) { + Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(true); + mView.showCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + + } + + @Override + public void cancelCollectArticle(final int position, final FeedArticleData feedArticleData) { + Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(false); + mView.showCancelCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } + + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/KnowledgePresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/KnowledgePresenter.java new file mode 100644 index 0000000..b69f2c6 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/KnowledgePresenter.java @@ -0,0 +1,45 @@ +package com.android.learn.mpresenter; + +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.TreeBean; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.mcontract.KnowledgeContract; + +import java.util.List; + +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; + + +/** + *
+ *     author : lex
+ *     e-mail : ldlywt@163.com
+ *     time   : 2018/09/05
+ *     desc   :
+ *     version: 1.0
+ * 
+ */ +public class KnowledgePresenter extends BasePresenter implements KnowledgeContract.Presenter { + + @Override + public void getKnowledge() { + + Observable observable = mRestService.getKnowledgeTree(); + BaseObserver baseObserver=new BaseObserver>>(false) { + @Override + public void onNext(BaseResponse> datas) { + mView.showKnowledge(datas.data); + } + }; + baseObserver.setCancelDialog(false); + addSubscribe(observable, baseObserver); + + + } + + + + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/MainActivityPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/MainActivityPresenter.java new file mode 100644 index 0000000..d368d8d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/MainActivityPresenter.java @@ -0,0 +1,41 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.HotKeyData; +import com.android.learn.base.mmodel.TreeBean; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.CollectContract; +import com.android.learn.mcontract.MainActivityContract; + +import java.util.List; + +import io.reactivex.Observable; + + +public class MainActivityPresenter extends BasePresenter implements MainActivityContract.Presenter { + + private int mCurrentPage = 0; + + @Override + public void getHotKey() { + Observable observable = mRestService.getHotKey(); + addSubscribe(observable, new BaseObserver>>(true) { + + @Override + public void onNext(BaseResponse> datas) { + if (datas.errorCode == BaseData.SUCCESS) { + mView.showHotKey(datas.data); + } else ResponseStatusUtil.handleResponseStatus(datas); + } + + }); + + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/ProjectPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/ProjectPresenter.java new file mode 100644 index 0000000..d18e468 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/ProjectPresenter.java @@ -0,0 +1,52 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.ProjectListData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.mcontract.ProjectContract; + +import io.reactivex.Observable; + + +public class ProjectPresenter extends BasePresenter implements ProjectContract.Presenter { + + private int mCurrentPage = 1; + + @Override + public void getProjectInfo(int page, int cid) { + Observable observable = mRestService.getProjectListData(page, cid); + addSubscribe(observable, new BaseObserver(true) { + @Override + public void onNext(ProjectListData projectListData) { + mView.showProjectList(projectListData, false); + } + }); + } + + @Override + public void onRefreshMore(int cid) { + Observable observable = mRestService.getProjectListData(-1, cid); + addSubscribe(observable, new BaseObserver(false) { + @Override + public void onNext(ProjectListData projectListData) { + mView.showProjectList(projectListData, true); + } + }); + } + + @Override + public void onLoadMore(int cid) { + ++mCurrentPage; + Observable observable = mRestService.getProjectListData(mCurrentPage, cid); + addSubscribe(observable, new BaseObserver(false) { + @Override + public void onNext(ProjectListData projectListData) { + mView.showProjectList(projectListData, false); + } + }); + } + + +} + diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/RegisterLoginPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/RegisterLoginPresenter.java new file mode 100644 index 0000000..d0f394b --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/RegisterLoginPresenter.java @@ -0,0 +1,46 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.RegisterLoginData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.retrofit.ApiService; +import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.base.utils.Utils; +import com.android.learn.mcontract.RegisterLoginContract; + +import io.reactivex.Observable; + + +public class RegisterLoginPresenter extends BasePresenter implements RegisterLoginContract.Presenter { + @Override + public void login(String account, String password) { + Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).login(account, password); + addSubscribe(observable, new BaseObserver(false) { + @Override + public void onNext(RegisterLoginData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showLoginResData(data); + } else ResponseStatusUtil.handleResponseStatus(data); + + } + }); + } + + @Override + public void register(String account, String password, String repassword) { + Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).register(account, password, repassword); + addSubscribe(observable, new BaseObserver(false) { + @Override + public void onNext(RegisterLoginData data) { + if (data.errorCode == BaseData.SUCCESS) { + Utils.showToast("注册成功", true); + mView.showRegisterResData(data); + } else ResponseStatusUtil.handleResponseStatus(data); + + } + }); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/SearchPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/SearchPresenter.java new file mode 100644 index 0000000..ba70ade --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/SearchPresenter.java @@ -0,0 +1,75 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.SearchContract; + +import io.reactivex.Observable; + + +public class SearchPresenter extends BasePresenter implements SearchContract.Presenter { + + private int mCurrentPage = 0; + + @Override + public void getFeedArticleList( String key) { + Observable observable = mRestService.search(mCurrentPage, key); + addSubscribe(observable, new BaseObserver>(true) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData()); + } + }); + } + + @Override + public void onLoadMore(String key) { + ++mCurrentPage; + Observable observable = mRestService.search(mCurrentPage, key); + addSubscribe(observable, new BaseObserver>(true) { + @Override + public void onNext(BaseResponse feedArticleListData) { + mView.showArticleList(feedArticleListData.getData()); + } + }); + } + @Override + public void addCollectArticle(final int position, final FeedArticleListData.FeedArticleData feedArticleData) { + Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(true); + mView.showCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + + } + + @Override + public void cancelCollectArticle(final int position, final FeedArticleListData.FeedArticleData feedArticleData) { + Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(false); + mView.showCancelCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } + + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/SplashLoginPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/SplashLoginPresenter.java new file mode 100644 index 0000000..10cbecd --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/SplashLoginPresenter.java @@ -0,0 +1,28 @@ +package com.android.learn.mpresenter; + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.RegisterLoginData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.retrofit.ApiService; +import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.SplashLoginContract; + +import io.reactivex.Observable; + + +public class SplashLoginPresenter extends BasePresenter implements SplashLoginContract.Presenter { + + @Override + public void login(String account, String password) { + Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).login(account, password); + addSubscribe(observable, new BaseObserver(false) { + @Override + public void onNext(RegisterLoginData data) { + mView.showLoginResData(data); + + } + }); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/TodoAddPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/TodoAddPresenter.java new file mode 100644 index 0000000..8aa7201 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/TodoAddPresenter.java @@ -0,0 +1,33 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.TodoAddContract; +import com.android.learn.mcontract.TodoEditContract; + +import java.util.Map; + +import io.reactivex.Observable; + + +public class TodoAddPresenter extends BasePresenter implements TodoAddContract.Presenter { + + @Override + public void addTodo( Map map) { + Observable observable = mRestService.addTodo(map); + + addSubscribe(observable, new BaseObserver(false) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showAddTodo(data); + } else ResponseStatusUtil.handleResponseStatus(data); + } + }); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/TodoEditPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/TodoEditPresenter.java new file mode 100644 index 0000000..a55f3e1 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/TodoEditPresenter.java @@ -0,0 +1,35 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.TodoData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.TodoContract; +import com.android.learn.mcontract.TodoEditContract; + +import java.util.Map; + +import io.reactivex.Observable; + + +public class TodoEditPresenter extends BasePresenter implements TodoEditContract.Presenter { + + @Override + public void updateTodo(int id, Map map) { + Observable observable = mRestService.updateTodo(id, map); + + addSubscribe(observable, new BaseObserver(false) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showUpdateTodo(data); + } else ResponseStatusUtil.handleResponseStatus(data); + } + }); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/TodoPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/TodoPresenter.java new file mode 100644 index 0000000..d48c4bb --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/TodoPresenter.java @@ -0,0 +1,80 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.TodoData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.TodoContract; + +import java.util.Map; + +import io.reactivex.Observable; + + +public class TodoPresenter extends BasePresenter implements TodoContract.Presenter { + public int notDonePage = 1, donePage = 1; + + @Override + public void getListNotDone(int type) { + Observable observable = mRestService.getListNotDone(type, notDonePage); + addSubscribe(observable, new BaseObserver>(true) { + + @Override + public void onNext(BaseResponse data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showListNotDone(data.getData()); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + notDonePage++; + } + + @Override + public void getListDone(int type) { + Observable observable = mRestService.getListDone(type, donePage); + addSubscribe(observable, new BaseObserver>(true) { + + @Override + public void onNext(BaseResponse data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showListDone(data.getData()); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + donePage++; + } + + @Override + public void deleteTodo(int id) { + Observable observable = mRestService.deleteTodo(id); + + addSubscribe(observable, new BaseObserver(false) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + } else ResponseStatusUtil.handleResponseStatus(data); + } + }); + } + //status: 0或1,传1代表未完成到已完成 + @Override + public void updateTodoStatus(int id, int status) { + Observable observable = mRestService.updateTodoStatus(id, status); + + addSubscribe(observable, new BaseObserver(false) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showUpdateTodoStatus(data); + } else ResponseStatusUtil.handleResponseStatus(data); + } + }); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/UserInfoPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/UserInfoPresenter.java new file mode 100644 index 0000000..468d861 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/UserInfoPresenter.java @@ -0,0 +1,26 @@ +package com.android.learn.mpresenter; + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.retrofit.ApiService; +import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.mcontract.UserInfoContract; + +import io.reactivex.Observable; + +public class UserInfoPresenter extends BasePresenter implements UserInfoContract.Presenter { + + @Override + public void getLogoutData() { + + Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).logout(); + addSubscribe(observable, new BaseObserver(false) { + @Override + public void onNext(BaseData baseData) { + } + }); + } + + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/WechatPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/WechatPresenter.java new file mode 100644 index 0000000..ceb3ec4 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/WechatPresenter.java @@ -0,0 +1,34 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BannerListData; +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mmodel.WxArticle; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.HomeContract; +import com.android.learn.mcontract.WechatContract; + +import java.util.List; + +import io.reactivex.Observable; + + +public class WechatPresenter extends BasePresenter implements WechatContract.Presenter { + + @Override + public void getWxArticle() { + Observable observable = mRestService.getWxArticle(); + addSubscribe(observable, new BaseObserver>>(false) { + @Override + public void onNext(BaseResponse> datas) { + mView.showWxArticle(datas.data); + } + }); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/mpresenter/WechatSubPresenter.java b/AndroidLearnProject/app/src/main/learn/mpresenter/WechatSubPresenter.java new file mode 100644 index 0000000..5690f34 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/mpresenter/WechatSubPresenter.java @@ -0,0 +1,80 @@ +package com.android.learn.mpresenter; + + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import com.android.learn.base.utils.ResponseStatusUtil; +import com.android.learn.mcontract.WechatSubContract; + +import io.reactivex.Observable; + + +public class WechatSubPresenter extends BasePresenter implements WechatSubContract.Presenter { + + public int num=0; + @Override + public void getWxArtileById(int id) { + Observable observable = mRestService.getWxArtileById(id, num); + addSubscribe(observable, new BaseObserver>(true) { + + @Override + public void onNext(BaseResponse listData) { + mView.showWxArticleById(listData.getData()); + } + + }); + num++; + } + + @Override + public void addCollectArticle(final int position, final FeedArticleData feedArticleData) { + Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(true); + mView.showCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + + } + + @Override + public void cancelCollectArticle(final int position, final FeedArticleData feedArticleData) { + Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + feedArticleData.setCollect(false); + mView.showCancelCollectArticleData(position, feedArticleData); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } + + public void cancelCollectArticle(final int id) { + Observable observable = mRestService.cancelCollectArticle(id, -1); + addSubscribe(observable, new BaseObserver(true) { + + @Override + public void onNext(BaseData data) { + if (data.errorCode == BaseData.SUCCESS) { + mView.showCancelCollectArticleData(id); + } else ResponseStatusUtil.handleResponseStatus(data); + } + + }); + } + +} diff --git a/AndroidLearnProject/app/src/main/learn/view/CustomViewPager.java b/AndroidLearnProject/app/src/main/learn/view/CustomViewPager.java new file mode 100644 index 0000000..3b9263d --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/view/CustomViewPager.java @@ -0,0 +1,63 @@ +package com.android.learn.view; + +import android.content.Context; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; + + +public class CustomViewPager extends ViewPager { + + + public boolean canScroll = true; + + public CustomViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public CustomViewPager(Context context) { + super(context); + } + + + public void setCanScroll(boolean canScroll) { + this.canScroll = canScroll; + } + + @Override + public boolean onTouchEvent(MotionEvent ev) { + return canScroll && super.onTouchEvent(ev); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return canScroll && super.onInterceptTouchEvent(ev); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if(getCurrentItem()!=0) + getParent().requestDisallowInterceptTouchEvent(true);//如果不是viewpager的第一项让父控件不要拦截事件 + return super.dispatchTouchEvent(ev); + } + +// @Override +// protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { +// if (v != this && v instanceof ViewPager) { //判断当前的View是不是ViewPager +// int currentItem = ((ViewPager) v).getCurrentItem(); //当前的条目 +// int countItem = ((ViewPager) v).getAdapter().getCount(); //总的条目 +// if ((currentItem == (countItem - 1) && dx < 0) || (currentItem == 0 && dx > 0)) { //判断当前条目以及滑动方向 +// return false; +// } +// return true; +// } +// return super.canScroll(v, checkV, dx, x, y); +// } + + @Override + public void setCurrentItem(int item) { + setCurrentItem(item, false); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/view/SearchViewUtils.java b/AndroidLearnProject/app/src/main/learn/view/SearchViewUtils.java new file mode 100644 index 0000000..a1b7817 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/view/SearchViewUtils.java @@ -0,0 +1,105 @@ +package com.android.learn.view; + +import android.animation.Animator; +import android.content.Context; +import android.os.Build; +import android.support.v7.widget.CardView; +import android.view.View; +import android.view.ViewAnimationUtils; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; + + +public class SearchViewUtils { + public static void handleToolBar(final Context context, final View search, final EditText editText) { + //隐藏 + if (search.getVisibility() == View.VISIBLE) { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + final Animator animatorHide = ViewAnimationUtils.createCircularReveal(search, + search.getWidth() - dip2px(context, 56), + dip2px(context, 23), + //确定元的半径(算长宽的斜边长,这样半径不会太短也不会很长效果比较舒服) + (float) Math.hypot(search.getWidth(), search.getHeight()), + 0); + animatorHide.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + + } + + @Override + public void onAnimationEnd(Animator animation) { + search.setVisibility(View.GONE); + ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(search.getWindowToken(), 0); + } + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }); + animatorHide.setDuration(300); + animatorHide.start(); + } else { +// 关闭输入法 + ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(search.getWindowToken(), 0); + search.setVisibility(View.GONE); + } + editText.setText(""); + search.setEnabled(false); + } + //显示 + else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + final Animator animator = ViewAnimationUtils.createCircularReveal(search, + search.getWidth() - dip2px(context, 56), + dip2px(context, 23), + 0, + (float) Math.hypot(search.getWidth(), search.getHeight())); + animator.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator animation) { + } + + @Override + public void onAnimationEnd(Animator animation) { + ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); + } + + @Override + public void onAnimationCancel(Animator animation) { + + } + + @Override + public void onAnimationRepeat(Animator animation) { + + } + }); + search.setVisibility(View.VISIBLE); + if (search.getVisibility() == View.VISIBLE) { + animator.setDuration(300); + animator.start(); + search.setEnabled(true); + } + } else { + search.setVisibility(View.VISIBLE); + search.setEnabled(true); + // 关闭输入法 + ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); + } + } + } + + + public static int dip2px(Context context, float dp) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dp * scale + 0.5); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/Bar.java b/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/Bar.java new file mode 100644 index 0000000..2a89f48 --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/Bar.java @@ -0,0 +1,134 @@ +package com.android.learn.view.fontsliderbar; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.text.TextUtils; + +import com.android.learn.R; + +/** + * Created by Administrator on 2017/9/6 0006. + */ +public class Bar { + + private Paint mBarPaint; + private Paint mTextPaint; + + private final float mLeftX; + private final float mRightX; + private final float mY; + private final float mPadding; + + private int mSegments; + private float mTickDistance; + private final float mTickHeight; + private final float mTickStartY; + private final float mTickEndY; + private int mtextSize; + Context context; + + public Bar(Context context, float x, float y, float width, int tickCount, float tickHeight, + float barWidth, int barColor, int textColor, int textSize, int padding) { + this.context = context; + mLeftX = x; + mRightX = x + width; + mY = y; + mPadding = padding; + mtextSize = textSize; + + mSegments = tickCount - 1; + mTickDistance = width / mSegments; + mTickHeight = tickHeight; + mTickStartY = mY - mTickHeight / 2f; + mTickEndY = mY + mTickHeight / 2f; + + mBarPaint = new Paint(); + mBarPaint.setColor(barColor); + mBarPaint.setStrokeWidth(barWidth); + mBarPaint.setAntiAlias(true); + + mTextPaint = new Paint(); + mTextPaint.setColor(textColor); + mTextPaint.setTextSize(textSize); + mTextPaint.setAntiAlias(true); + } + + public void draw(Canvas canvas) { + drawLine(canvas); + drawTicks(canvas,context); + } + + public float getLeftX() { + return mLeftX; + } + + public float getRightX() { + return mRightX; + } + + //获取标尺最近的刻度 通过圆所在的位置 + public float getNearestTickCoordinate(Thumb thumb) { + final int nearestTickIndex = getNearestTickIndex(thumb); + final float nearestTickCoordinate = mLeftX + (nearestTickIndex * mTickDistance); + return nearestTickCoordinate; + } + + //获取标尺最近的刻度 通过下标 + public float getNearestTickCoordinate(int index) { + final int nearestTickIndex = index; + final float nearestTickCoordinate = mLeftX + (nearestTickIndex * mTickDistance); + return nearestTickCoordinate; + } + + + public int getNearestTickIndex(Thumb thumb) { + return getNearestTickIndex(thumb.getX()); + } + + public int getNearestTickIndex(float x) { + return (int) ((x - mLeftX + mTickDistance / 2f) / mTickDistance); + } + + private void drawLine(Canvas canvas) { + canvas.drawLine(mLeftX, mY, mRightX, mY, mBarPaint); + } + + private void drawTicks(Canvas canvas,Context context) { + for (int i = 0; i <= mSegments; i++) { + final float x = i * mTickDistance + mLeftX; + canvas.drawLine(x, mTickStartY, x, mTickEndY, mBarPaint); + //绘制头尾 A 以及标准 + String text = ""; + if (i == 0) { + text = "A"; + mTextPaint.setTextSize(mtextSize * 0.9f); + } + if (i == 1) { + if (context != null) + text = context.getString(R.string.standrd); + mTextPaint.setTextSize(mtextSize); + } + if (i == mSegments) { + text = "A"; + mTextPaint.setTextSize(mtextSize * 1.4f); + } + if (!TextUtils.isEmpty(text)) { + canvas.drawText(text, x - getTextWidth(text) / 2, mTickStartY - mPadding, mTextPaint); + } + } + } + + float getTextWidth(String text) { + return mTextPaint.measureText(text); + } + + public void destroyResources() { + if (null != mBarPaint) { + mBarPaint = null; + } + if (null != mTextPaint) { + mTextPaint = null; + } + } +} \ No newline at end of file diff --git a/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/FontSliderBar.java b/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/FontSliderBar.java new file mode 100644 index 0000000..18e562c --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/FontSliderBar.java @@ -0,0 +1,421 @@ +package com.android.learn.view.fontsliderbar; + +import android.animation.ValueAnimator; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; + +/** + * Created by Administrator on 2017/9/6 0006. + */ + +public class FontSliderBar extends View { + + private static final String TAG = "SliderBar"; + + private static final int DEFAULT_TICK_COUNT = 3; + private static final float DEFAULT_TICK_HEIGHT = 24; + + private static final float DEFAULT_BAR_WIDTH = 3; + private static final int DEFAULT_BAR_COLOR = Color.LTGRAY; + + private static final int DEFAULT_TEXT_SIZE = 14; + private static final int DEFAULT_TEXT_COLOR = Color.LTGRAY; + private static final int DEFAULT_TEXT_PADDING = 20; + + private static final float DEFAULT_THUMB_RADIUS = 20; + private static final int DEFAULT_THUMB_COLOR_NORMAL = 0xff33b5e5; + private static final int DEFAULT_THUMB_COLOR_PRESSED = 0xff33b5e5; + + private int mTickCount = DEFAULT_TICK_COUNT; + private float mTickHeight = DEFAULT_TICK_HEIGHT; + + private float mBarWidth = DEFAULT_BAR_WIDTH; + private int mBarColor = DEFAULT_BAR_COLOR; + + private float mThumbRadius = DEFAULT_THUMB_RADIUS; + private int mThumbColorNormal = DEFAULT_THUMB_COLOR_NORMAL; + private int mThumbColorPressed = DEFAULT_THUMB_COLOR_PRESSED; + + private int mTextSize = DEFAULT_TEXT_SIZE; + private int mTextColor = DEFAULT_TEXT_COLOR; + private int mTextPadding = DEFAULT_TEXT_PADDING; + + private int mDefaultWidth = 500; + + private int mCurrentIndex = 1; + private boolean mAnimation = true; + + private Thumb mThumb; + private Bar mBar; + private float mWith; + + private ValueAnimator mAnimator; + private OnSliderBarChangeListener mListener; + Context context; + + public FontSliderBar(Context context) { + super(context); + } + + public FontSliderBar(Context context, AttributeSet attrs) { + super(context, attrs); + this.context=context; + } + + public FontSliderBar(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int width; + int height; + + final int measureWidthMode = MeasureSpec.getMode(widthMeasureSpec); + final int measureHeightMode = MeasureSpec.getMode(heightMeasureSpec); + final int measureWidth = MeasureSpec.getSize(widthMeasureSpec); + final int measureHeight = MeasureSpec.getSize(heightMeasureSpec); + + if (measureWidthMode == MeasureSpec.AT_MOST) { + width = measureWidth; + } else if (measureWidthMode == MeasureSpec.EXACTLY) { + width = measureWidth; + } else { + width = mDefaultWidth; + } + mWith=width; + if (measureHeightMode == MeasureSpec.AT_MOST) { + height = Math.min(getMinHeight(), measureHeight); + } else if (measureHeightMode == MeasureSpec.EXACTLY) { + height = measureHeight; + } else { + height = getMinHeight(); + } + setMeasuredDimension(width, height); + } + + private int getMinHeight() { + final float f = getFontHeight(); + return (int) (f + mTextPadding + mThumbRadius * 2); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + createBar(context); + createThumbs(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + mBar.draw(canvas); + mThumb.draw(canvas); + } + + @Override + protected void onVisibilityChanged(View changedView, int visibility) { + super.onVisibilityChanged(changedView, visibility); + if (VISIBLE != visibility) { + stopAnimation(); + } + } + + @Override + protected void onDetachedFromWindow() { + destroyResources(); + super.onDetachedFromWindow(); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (!isEnabled() || isAnimationRunning()) { + return false; + } + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + return onActionDown(event.getX(), event.getY()); + case MotionEvent.ACTION_MOVE: + this.getParent().requestDisallowInterceptTouchEvent(true); + return onActionMove(event.getX()); + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + this.getParent().requestDisallowInterceptTouchEvent(false); + return onActionUp(event.getX(), event.getY()); + default: + return true; + } + } + + public FontSliderBar setOnSliderBarChangeListener(OnSliderBarChangeListener listener) { + mListener = listener; + return FontSliderBar.this; + } + + public FontSliderBar setTickCount(int tickCount) { + if (isValidTickCount(tickCount)) { + mTickCount = tickCount; + } else { + Log.e(TAG, "tickCount less than 2; invalid tickCount."); + throw new IllegalArgumentException("tickCount less than 2; invalid tickCount."); + } + return FontSliderBar.this; + } + + public FontSliderBar setTickHeight(float tickHeight) { + mTickHeight = tickHeight; + return FontSliderBar.this; + } + + public FontSliderBar setBarWeight(float barWeight) { + mBarWidth = barWeight; + return FontSliderBar.this; + } + + public FontSliderBar setBarColor(int barColor) { + mBarColor = barColor; + return FontSliderBar.this; + } + + public FontSliderBar setTextSize(int textSize) { + mTextSize = textSize; + return FontSliderBar.this; + } + + public FontSliderBar setTextColor(int textColor) { + mTextColor = textColor; + return FontSliderBar.this; + } + + public FontSliderBar setTextPadding(int textPadding) { + mTextPadding = textPadding; + return FontSliderBar.this; + } + + public FontSliderBar setThumbRadius(float thumbRadius) { + mThumbRadius = thumbRadius; + return FontSliderBar.this; + } + + public FontSliderBar setThumbColorNormal(int thumbColorNormal) { + mThumbColorNormal = thumbColorNormal; + return FontSliderBar.this; + } + + public FontSliderBar setThumbColorPressed(int thumbColorPressed) { + mThumbColorPressed = thumbColorPressed; + return FontSliderBar.this; + } + + + public FontSliderBar setThumbIndex(int currentIndex) { + //处理越界 + if (indexOutOfRange(currentIndex)) { + if(currentIndex<0){ + mCurrentIndex = 0; + } + if(currentIndex>mTickCount-1){ + mCurrentIndex = mTickCount-1; + } +// throw new IllegalArgumentException( +// "A thumb index is out of bounds. Check that it is between 0 and mTickCount - 1"); + } else { + if (mCurrentIndex != currentIndex) { + mCurrentIndex = currentIndex; + } + } + if (mListener != null) { + mListener.onIndexChanged(this, mCurrentIndex); + } + return FontSliderBar.this; + } + + public FontSliderBar withAnimation(boolean animation) { + mAnimation = animation; + return FontSliderBar.this; + } + + public void applay(Context context) { + createThumbs(); + createBar(context); + requestLayout(); + invalidate(); + } + + public int getCurrentIndex() { + if(mCurrentIndex>mTickCount-1){ + mCurrentIndex=mTickCount-1; + } + return mCurrentIndex; + } + + private void createBar(Context context) { + mBar = new Bar(context,getXCoordinate(), getYCoordinate(), getBarLength(), mTickCount, mTickHeight, mBarWidth, + mBarColor, mTextColor, mTextSize, mTextPadding); + } + + private void createThumbs() { + if(mCurrentIndex==0){ + mThumb = new Thumb(getXCoordinate()+(mWith/mTickCount+getXCoordinate()/2)*mCurrentIndex, getYCoordinate(), mThumbColorNormal, mThumbColorPressed, mThumbRadius); + }else{ + mThumb = new Thumb(getXCoordinate()+(mWith/mTickCount+getXCoordinate()/2)*mCurrentIndex-4, getYCoordinate(), mThumbColorNormal, mThumbColorPressed, mThumbRadius); + } + //getWidth() - 2 * getXCoordinate() +// float xCoordinate = getBarLength() / (mTickCount - 1) * mCurrentIndex + getXCoordinate(); +// mThumb = new Thumb(xCoordinate, getYCoordinate(), mThumbColorNormal, mThumbColorPressed, mThumbRadius); + } + + private float getXCoordinate() { + return mThumbRadius; + } + + private float getYCoordinate() { + return getHeight() - mThumbRadius; + } + + private float getFontHeight() { + Paint paint = new Paint(); + paint.setTextSize(mTextSize); + paint.measureText("A"); + Paint.FontMetrics fontMetrics = paint.getFontMetrics(); + float f = fontMetrics.descent - fontMetrics.ascent; + return f; + } + + private float getBarLength() { + return getWidth() - 2 * getXCoordinate(); + } + + private boolean indexOutOfRange(int thumbIndex) { + return (thumbIndex < 0 || thumbIndex >= mTickCount); + } + + private boolean isValidTickCount(int tickCount) { + return tickCount > 1; + } + + private boolean onActionDown(float x, float y) { + if (!mThumb.isPressed() && mThumb.isInTargetZone(x, y)) { + pressThumb(mThumb); + } + return true; + } + + private boolean onActionMove(float x) { + if (mThumb.isPressed()) { + moveThumb(mThumb, x); + } + return true; + } + + private boolean onActionUp(float x, float y) { + if (mThumb.isPressed()) { + releaseThumb(mThumb); + }else{ + //点击事件 + final int tempIndex = mBar.getNearestTickIndex(x); + if (tempIndex != mCurrentIndex) { + mCurrentIndex = tempIndex; + if (null != mListener) { + mListener.onIndexChanged(this, mCurrentIndex); + } + float end = mBar.getNearestTickCoordinate(mCurrentIndex); + if(end>mBar.getRightX()){ + end= mBar.getRightX(); + } + mThumb.setX(end); + invalidate(); + } + mThumb.release();//回收 + } + return true; + } + + private void pressThumb(Thumb thumb) { + thumb.press(); + invalidate(); + } + + private void releaseThumb(final Thumb thumb) { + final int tempIndex = mBar.getNearestTickIndex(thumb); + if (tempIndex != mCurrentIndex) { + mCurrentIndex = tempIndex; + if (null != mListener) { + mListener.onIndexChanged(this, mCurrentIndex); + } + } + + float start = thumb.getX(); + float end = mBar.getNearestTickCoordinate(thumb); + if (mAnimation) { + startAnimation(thumb, start, end); + } else { + thumb.setX(end); + invalidate(); + } + thumb.release(); + } + + private void startAnimation(final Thumb thumb, float start, float end) { + stopAnimation(); + mAnimator = ValueAnimator.ofFloat(start, end); + mAnimator.setDuration(80); + mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimator animation) { + final float x = (Float) animation.getAnimatedValue(); + thumb.setX(x); + invalidate(); + } + }); + mAnimator.start(); + } + + private boolean isAnimationRunning() { + if (null != mAnimator && mAnimator.isRunning()) { + return true; + } + return false; + } + + private void destroyResources() { + stopAnimation(); + if (null != mBar) { + mBar.destroyResources(); + mBar = null; + } + if (null != mThumb) { + mThumb.destroyResources(); + mThumb = null; + } + } + + private void stopAnimation() { + if (null != mAnimator) { + mAnimator.cancel(); + mAnimator = null; + } + } + + private void moveThumb(Thumb thumb, float x) { + if (x < mBar.getLeftX() || x > mBar.getRightX()) { + // Do nothing. + } else { + thumb.setX(x); + invalidate(); + } + } + + public interface OnSliderBarChangeListener { + void onIndexChanged(FontSliderBar rangeBar, int index); + } +} diff --git a/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/Thumb.java b/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/Thumb.java new file mode 100644 index 0000000..544c36f --- /dev/null +++ b/AndroidLearnProject/app/src/main/learn/view/fontsliderbar/Thumb.java @@ -0,0 +1,101 @@ +package com.android.learn.view.fontsliderbar; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; + +/** + * Created by Administrator on 2017/9/6 0006. + */ + +public class Thumb { + + private static final float MINIMUM_TARGET_RADIUS = 50; + + private final float mTouchZone; + private boolean mIsPressed; + + private final float mY; + private float mX; + + private Paint mPaintNormal; + private Paint mPaintPressed; + + private float mRadius; + private int mColorNormal; + private int mColorPressed; + + public Thumb(float x, float y, int colorNormal, int colorPressed, float radius) { + + mRadius = radius; + mColorNormal = colorNormal; + mColorPressed = colorPressed; + + mPaintNormal = new Paint(); + mPaintNormal.setColor(mColorNormal); + mPaintNormal.setAntiAlias(true); + + mPaintPressed = new Paint(); + mPaintPressed.setColor(mColorPressed); + mPaintPressed.setAntiAlias(true); + + mTouchZone = (int) Math.max(MINIMUM_TARGET_RADIUS, radius); + + mX = x; + mY = y; + } + + public void setX(float x) { + mX = x; + } + + public float getX() { + return mX; + } + + public boolean isPressed() { + return mIsPressed; + } + + public void press() { + mIsPressed = true; + } + + public void release() { + mIsPressed = false; + } + + public boolean isInTargetZone(float x, float y) { + if (Math.abs(x - mX) <= mTouchZone && Math.abs(y - mY) <= mTouchZone) { + return true; + } + return false; + } + + public void draw(Canvas canvas) { + if (mIsPressed) { + mPaintPressed.setColor(Color.WHITE); + mPaintPressed.setStyle(Paint.Style.FILL); + canvas.drawCircle(mX, mY, mRadius, mPaintPressed); + mPaintPressed.setColor(mColorPressed); + mPaintPressed.setStyle(Paint.Style.STROKE); + canvas.drawCircle(mX, mY, mRadius-1, mPaintPressed); + } else { + mPaintNormal.setColor(Color.WHITE); + mPaintNormal.setStyle(Paint.Style.FILL); + canvas.drawCircle(mX, mY, mRadius, mPaintNormal); + mPaintNormal.setColor(mColorPressed); + mPaintNormal.setStyle(Paint.Style.STROKE); + canvas.drawCircle(mX, mY, mRadius-1, mPaintNormal); + } + } + + public void destroyResources() { + if(null != mPaintNormal) { + mPaintNormal = null; + } + if(null != mPaintPressed) { + mPaintPressed = null; + } + } +} diff --git a/AndroidLearnProject/basemodule/build.gradle b/AndroidLearnProject/basemodule/build.gradle index da22374..b0ea954 100644 --- a/AndroidLearnProject/basemodule/build.gradle +++ b/AndroidLearnProject/basemodule/build.gradle @@ -2,6 +2,9 @@ apply plugin: 'com.android.library' //使用greendao apply plugin: 'org.greenrobot.greendao' apply plugin: 'com.jakewharton.butterknife' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion @@ -39,15 +42,18 @@ android { // jniLibs.srcDirs = ['libs'] // } // } + compileOptions { + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { api fileTree(include: ['*.jar'], dir: 'libs') api rootProject.ext.dependencies.appcompatV7 api rootProject.ext.dependencies.design + api rootProject.ext.dependencies.cardview api rootProject.ext.dependencies["constraint-layout"] - api 'com.android.support:cardview-v7:26+' - testImplementation 'junit:junit:4.12' api fileTree(include: ['*.jar'], dir: 'libs') + api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" //okhttp retrofit api rootProject.ext.dependencies["okhttp3"] @@ -56,11 +62,11 @@ dependencies { //butterknife api rootProject.ext.dependencies["butterknife"] - annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] + kapt rootProject.ext.dependencies["butterknife-compiler"] // glide api rootProject.ext.dependencies["glide"] - annotationProcessor rootProject.ext.dependencies["glide-compiler"] + kapt rootProject.ext.dependencies["glide-compiler"] // banner api rootProject.ext.dependencies["banner"] @@ -72,11 +78,11 @@ dependencies { // dagger2 api rootProject.ext.dependencies["dagger"] - annotationProcessor rootProject.ext.dependencies["dagger-compiler"] + kapt rootProject.ext.dependencies["dagger-compiler"] // eventbus api rootProject.ext.dependencies["event-bus"] - annotationProcessor rootProject.ext.dependencies["eventbus-annotation-processor"] + kapt rootProject.ext.dependencies["eventbus-annotation-processor"] // BlockCanary进行卡顿监控和提示 @@ -102,7 +108,7 @@ dependencies { api rootProject.ext.dependencies["SmartRefreshHeader"] //RecyclerView万能适配器 - compile rootProject.ext.dependencies["BaseRecyclerViewAdapterHelper"] + api rootProject.ext.dependencies["BaseRecyclerViewAdapterHelper"] //友盟统计 api rootProject.ext.dependencies["umeng-common"] @@ -110,20 +116,27 @@ dependencies { //崩溃自定义跳转界面 api rootProject.ext.dependencies["customactivityoncrash"] - // 知识点模块的旋转效果 + + // 知识点模块的旋转效果 api rootProject.ext.dependencies["infinitecycleviewpager"] - // 首页欢迎的SVGA动效 + + // 首页欢迎的SVGA动效 api rootProject.ext.dependencies["SVGAPlayer-Android"] - // 搜索页的flow标签 + + // 搜索页的flow标签 api rootProject.ext.dependencies["flowlayout"] + // 搜索历史使用的数据库框架 api rootProject.ext.dependencies["greendao"] + // activity滑动消失框架 api rootProject.ext.dependencies["bga-swipebacklayout"] + // StatusUtil 沉浸式状态栏 api('com.jaeger.statusbarutil:library:1.4.0') { exclude group: 'com.android.support', module: 'recyclerview-v7' } + // 换肤框架,不必重启应用 api project(':xskinloader-lib') } diff --git a/AndroidLearnProject/build.gradle b/AndroidLearnProject/build.gradle index aee8516..b737103 100644 --- a/AndroidLearnProject/build.gradle +++ b/AndroidLearnProject/build.gradle @@ -1,14 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. apply from: 'config.gradle' buildscript { - + ext.kotlin_version = '1.2.50' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' - + classpath 'com.android.tools.build:gradle:3.1.4' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-52-35-594.json b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-52-35-594.json deleted file mode 100644 index a90c3fe..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-52-35-594.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1546433543145000,"args":{"JVM stats":"heap_memory_usage: 288947040\nnon_heap_memory_usage: 231813920\nloaded_class_count: 20024\nthread_count: 28\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433544798000,"args":{"JVM stats":"heap_memory_usage: 395989704\nnon_heap_memory_usage: 233523152\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433548702000,"args":{"JVM stats":"heap_memory_usage: 434190888\nnon_heap_memory_usage: 233618296\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549008000,"args":{"JVM stats":"heap_memory_usage: 437775176\nnon_heap_memory_usage: 233622440\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549113000,"args":{"JVM stats":"heap_memory_usage: 439078328\nnon_heap_memory_usage: 233622440\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549115000,"args":{"JVM stats":"heap_memory_usage: 439078328\nnon_heap_memory_usage: 233622440\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549115001,"args":{"JVM stats":"heap_memory_usage: 439078328\nnon_heap_memory_usage: 233622440\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549117000,"args":{"JVM stats":"heap_memory_usage: 439078328\nnon_heap_memory_usage: 233622440\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549118000,"args":{"JVM stats":"heap_memory_usage: 439403904\nnon_heap_memory_usage: 233622440\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549244000,"args":{"JVM stats":"heap_memory_usage: 444302464\nnon_heap_memory_usage: 233623016\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549471000,"args":{"JVM stats":"heap_memory_usage: 458002984\nnon_heap_memory_usage: 233743200\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549472000,"args":{"JVM stats":"heap_memory_usage: 458002984\nnon_heap_memory_usage: 233745952\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549496000,"args":{"JVM stats":"heap_memory_usage: 459957440\nnon_heap_memory_usage: 233756384\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549499000,"args":{"JVM stats":"heap_memory_usage: 459957440\nnon_heap_memory_usage: 233765576\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549507000,"args":{"JVM stats":"heap_memory_usage: 460283480\nnon_heap_memory_usage: 233761480\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549510000,"args":{"JVM stats":"heap_memory_usage: 460283480\nnon_heap_memory_usage: 233761480\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549521000,"args":{"JVM stats":"heap_memory_usage: 460613168\nnon_heap_memory_usage: 233761480\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549523000,"args":{"JVM stats":"heap_memory_usage: 460613168\nnon_heap_memory_usage: 233761480\nloaded_class_count: 20111\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549846000,"args":{"JVM stats":"heap_memory_usage: 488300008\nnon_heap_memory_usage: 234017960\nloaded_class_count: 20111\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549907000,"args":{"JVM stats":"heap_memory_usage: 492273056\nnon_heap_memory_usage: 234109048\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549925000,"args":{"JVM stats":"heap_memory_usage: 493575448\nnon_heap_memory_usage: 234131064\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549928000,"args":{"JVM stats":"heap_memory_usage: 493575448\nnon_heap_memory_usage: 234131064\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549929000,"args":{"JVM stats":"heap_memory_usage: 493901024\nnon_heap_memory_usage: 234131064\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549952000,"args":{"JVM stats":"heap_memory_usage: 494243024\nnon_heap_memory_usage: 234131064\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433549989000,"args":{"JVM stats":"heap_memory_usage: 496196928\nnon_heap_memory_usage: 234135352\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550022000,"args":{"JVM stats":"heap_memory_usage: 498801784\nnon_heap_memory_usage: 234057848\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550024000,"args":{"JVM stats":"heap_memory_usage: 499131472\nnon_heap_memory_usage: 234057848\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550100000,"args":{"JVM stats":"heap_memory_usage: 504016824\nnon_heap_memory_usage: 234012704\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550127000,"args":{"JVM stats":"heap_memory_usage: 505646232\nnon_heap_memory_usage: 234012704\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550129000,"args":{"JVM stats":"heap_memory_usage: 505646232\nnon_heap_memory_usage: 234012704\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550162000,"args":{"JVM stats":"heap_memory_usage: 507602704\nnon_heap_memory_usage: 233947288\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550167000,"args":{"JVM stats":"heap_memory_usage: 508258000\nnon_heap_memory_usage: 233962328\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550176000,"args":{"JVM stats":"heap_memory_usage: 508258000\nnon_heap_memory_usage: 233963032\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550178000,"args":{"JVM stats":"heap_memory_usage: 508258000\nnon_heap_memory_usage: 233963032\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550181000,"args":{"JVM stats":"heap_memory_usage: 508258000\nnon_heap_memory_usage: 233964152\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433550182000,"args":{"JVM stats":"heap_memory_usage: 508584104\nnon_heap_memory_usage: 233964152\nloaded_class_count: 20121\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552628000,"args":{"JVM stats":"heap_memory_usage: 343874656\nnon_heap_memory_usage: 234447664\nloaded_class_count: 20121\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 163\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552638000,"args":{"JVM stats":"heap_memory_usage: 345682224\nnon_heap_memory_usage: 234428792\nloaded_class_count: 20124\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552756000,"args":{"JVM stats":"heap_memory_usage: 359046352\nnon_heap_memory_usage: 234118448\nloaded_class_count: 20137\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552769000,"args":{"JVM stats":"heap_memory_usage: 359228648\nnon_heap_memory_usage: 234205552\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552774000,"args":{"JVM stats":"heap_memory_usage: 359936656\nnon_heap_memory_usage: 234184112\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552775000,"args":{"JVM stats":"heap_memory_usage: 359936656\nnon_heap_memory_usage: 234184112\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552777000,"args":{"JVM stats":"heap_memory_usage: 359936656\nnon_heap_memory_usage: 234185096\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552778000,"args":{"JVM stats":"heap_memory_usage: 359936656\nnon_heap_memory_usage: 234189064\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433552854000,"args":{"JVM stats":"heap_memory_usage: 368031904\nnon_heap_memory_usage: 234100696\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433553269000,"args":{"JVM stats":"heap_memory_usage: 433920512\nnon_heap_memory_usage: 234229800\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433553270000,"args":{"JVM stats":"heap_memory_usage: 433920512\nnon_heap_memory_usage: 234229800\nloaded_class_count: 20144\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433555577000,"args":{"JVM stats":"heap_memory_usage: 444221928\nnon_heap_memory_usage: 234487136\nloaded_class_count: 20155\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433555595000,"args":{"JVM stats":"heap_memory_usage: 452096416\nnon_heap_memory_usage: 234482432\nloaded_class_count: 20155\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":12,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433543148000,"dur":70000},{"pid":1,"tid":12,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433543218000,"dur":33000},{"pid":1,"tid":12,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433543251000,"dur":9000},{"pid":1,"tid":12,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433543251000,"dur":9000},{"pid":1,"tid":12,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544017000,"dur":61000},{"pid":1,"tid":12,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544078000,"dur":10000},{"pid":1,"tid":12,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544094000,"dur":11000},{"pid":1,"tid":12,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544105000,"dur":1000},{"pid":1,"tid":12,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544106000,"dur":4000},{"pid":1,"tid":12,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544110000,"dur":3000},{"pid":1,"tid":12,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544113000,"dur":2000},{"pid":1,"tid":12,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544115000,"dur":1000},{"pid":1,"tid":12,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544116000,"dur":11000},{"pid":1,"tid":12,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544127000,"dur":1000},{"pid":1,"tid":12,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544128000,"dur":1000},{"pid":1,"tid":12,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544129000,"dur":1000},{"pid":1,"tid":12,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544130000,"dur":100},{"pid":1,"tid":12,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544130000,"dur":3000},{"pid":1,"tid":12,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544133000,"dur":12000},{"pid":1,"tid":12,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544145000,"dur":6000},{"pid":1,"tid":12,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544151000,"dur":1000},{"pid":1,"tid":12,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544088000,"dur":64000},{"pid":1,"tid":12,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544152000,"dur":14000},{"pid":1,"tid":12,"id":28,"name":"app task manager create merge manifest task","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544168000,"dur":1000},{"pid":1,"tid":12,"id":29,"name":"app task manager create generate res values task","args":{"span_id":"29","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544169000,"dur":100},{"pid":1,"tid":12,"id":30,"name":"app task manager create create renderscript task","args":{"span_id":"30","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544169000,"dur":100},{"pid":1,"tid":12,"id":31,"name":"app task manager create merge resources task","args":{"span_id":"31","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544169000,"dur":1000},{"pid":1,"tid":12,"id":32,"name":"app task manager create merge assets task","args":{"span_id":"32","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544170000,"dur":100},{"pid":1,"tid":12,"id":33,"name":"app task manager create build config task","args":{"span_id":"33","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544171000,"dur":100},{"pid":1,"tid":12,"id":34,"name":"app task manager create process res task","args":{"span_id":"34","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544171000,"dur":2000},{"pid":1,"tid":12,"id":35,"name":"app task manager create aidl task","args":{"span_id":"35","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544173000,"dur":100},{"pid":1,"tid":12,"id":36,"name":"app task manager create shader task","args":{"span_id":"36","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544173000,"dur":3000},{"pid":1,"tid":12,"id":37,"name":"app task manager create ndk task","args":{"span_id":"37","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544176000,"dur":2000},{"pid":1,"tid":12,"id":38,"name":"app task manager create external native build task","args":{"span_id":"38","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544178000,"dur":100},{"pid":1,"tid":12,"id":39,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"39","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544178000,"dur":1000},{"pid":1,"tid":12,"id":40,"name":"app task manager create compile task","args":{"span_id":"40","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544179000,"dur":2000},{"pid":1,"tid":12,"id":41,"name":"app task manager create packaging task","args":{"span_id":"41","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544182000,"dur":1000},{"pid":1,"tid":12,"id":42,"name":"app task manager create lint task","args":{"span_id":"42","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544183000,"dur":100},{"pid":1,"tid":12,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544166000,"dur":17000},{"pid":1,"tid":12,"id":43,"name":"variant manager create tasks for variant","args":{"span_id":"43","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544183000,"dur":4000},{"pid":1,"tid":12,"id":44,"name":"variant manager create tasks for variant","args":{"span_id":"44","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544187000,"dur":19000},{"pid":1,"tid":12,"id":46,"name":"app task manager create merge manifest task","args":{"span_id":"46","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544207000,"dur":1000},{"pid":1,"tid":12,"id":47,"name":"app task manager create generate res values task","args":{"span_id":"47","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544208000,"dur":100},{"pid":1,"tid":12,"id":48,"name":"app task manager create create renderscript task","args":{"span_id":"48","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544208000,"dur":100},{"pid":1,"tid":12,"id":49,"name":"app task manager create merge resources task","args":{"span_id":"49","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544208000,"dur":1000},{"pid":1,"tid":12,"id":50,"name":"app task manager create merge assets task","args":{"span_id":"50","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544209000,"dur":100},{"pid":1,"tid":12,"id":51,"name":"app task manager create build config task","args":{"span_id":"51","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544209000,"dur":100},{"pid":1,"tid":12,"id":52,"name":"app task manager create process res task","args":{"span_id":"52","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544209000,"dur":2000},{"pid":1,"tid":12,"id":53,"name":"app task manager create aidl task","args":{"span_id":"53","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544211000,"dur":100},{"pid":1,"tid":12,"id":54,"name":"app task manager create shader task","args":{"span_id":"54","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544211000,"dur":100},{"pid":1,"tid":12,"id":55,"name":"app task manager create ndk task","args":{"span_id":"55","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544211000,"dur":100},{"pid":1,"tid":12,"id":56,"name":"app task manager create external native build task","args":{"span_id":"56","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544211000,"dur":100},{"pid":1,"tid":12,"id":57,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"57","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544211000,"dur":1000},{"pid":1,"tid":12,"id":58,"name":"app task manager create compile task","args":{"span_id":"58","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544212000,"dur":2000},{"pid":1,"tid":12,"id":59,"name":"app task manager create packaging task","args":{"span_id":"59","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544214000,"dur":2000},{"pid":1,"tid":12,"id":60,"name":"app task manager create lint task","args":{"span_id":"60","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544216000,"dur":100},{"pid":1,"tid":12,"id":45,"name":"variant manager create tasks for variant","args":{"span_id":"45","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544206000,"dur":10000},{"pid":1,"tid":12,"id":61,"name":"variant manager create tasks for variant","args":{"span_id":"61","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544216000,"dur":6000},{"pid":1,"tid":12,"id":63,"name":"app task manager create merge manifest task","args":{"span_id":"63","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544223000,"dur":100},{"pid":1,"tid":12,"id":64,"name":"app task manager create generate res values task","args":{"span_id":"64","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544223000,"dur":100},{"pid":1,"tid":12,"id":65,"name":"app task manager create create renderscript task","args":{"span_id":"65","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544223000,"dur":1000},{"pid":1,"tid":12,"id":66,"name":"app task manager create merge resources task","args":{"span_id":"66","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544224000,"dur":100},{"pid":1,"tid":12,"id":67,"name":"app task manager create merge assets task","args":{"span_id":"67","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544224000,"dur":100},{"pid":1,"tid":12,"id":68,"name":"app task manager create build config task","args":{"span_id":"68","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544224000,"dur":100},{"pid":1,"tid":12,"id":69,"name":"app task manager create process res task","args":{"span_id":"69","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544224000,"dur":1000},{"pid":1,"tid":12,"id":70,"name":"app task manager create aidl task","args":{"span_id":"70","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544225000,"dur":1000},{"pid":1,"tid":12,"id":71,"name":"app task manager create shader task","args":{"span_id":"71","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544226000,"dur":100},{"pid":1,"tid":12,"id":72,"name":"app task manager create ndk task","args":{"span_id":"72","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544226000,"dur":100},{"pid":1,"tid":12,"id":73,"name":"app task manager create external native build task","args":{"span_id":"73","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544226000,"dur":100},{"pid":1,"tid":12,"id":74,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"74","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544226000,"dur":1000},{"pid":1,"tid":12,"id":75,"name":"app task manager create compile task","args":{"span_id":"75","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544227000,"dur":2000},{"pid":1,"tid":12,"id":76,"name":"app task manager create packaging task","args":{"span_id":"76","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544229000,"dur":1000},{"pid":1,"tid":12,"id":77,"name":"app task manager create lint task","args":{"span_id":"77","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544230000,"dur":100},{"pid":1,"tid":12,"id":62,"name":"variant manager create tasks for variant","args":{"span_id":"62","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544222000,"dur":8000},{"pid":1,"tid":12,"id":78,"name":"variant manager create tasks for variant","args":{"span_id":"78","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544230000,"dur":5000},{"pid":1,"tid":12,"id":79,"name":"variant manager create tasks for variant","args":{"span_id":"79","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544235000,"dur":11000},{"pid":1,"tid":12,"id":81,"name":"app task manager create merge manifest task","args":{"span_id":"81","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544248000,"dur":2000},{"pid":1,"tid":12,"id":82,"name":"app task manager create generate res values task","args":{"span_id":"82","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544250000,"dur":100},{"pid":1,"tid":12,"id":83,"name":"app task manager create create renderscript task","args":{"span_id":"83","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544250000,"dur":100},{"pid":1,"tid":12,"id":84,"name":"app task manager create merge resources task","args":{"span_id":"84","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544250000,"dur":1000},{"pid":1,"tid":12,"id":85,"name":"app task manager create merge assets task","args":{"span_id":"85","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544251000,"dur":100},{"pid":1,"tid":12,"id":86,"name":"app task manager create build config task","args":{"span_id":"86","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544251000,"dur":100},{"pid":1,"tid":12,"id":87,"name":"app task manager create process res task","args":{"span_id":"87","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544251000,"dur":2000},{"pid":1,"tid":12,"id":88,"name":"app task manager create aidl task","args":{"span_id":"88","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544253000,"dur":1000},{"pid":1,"tid":12,"id":89,"name":"app task manager create shader task","args":{"span_id":"89","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544254000,"dur":100},{"pid":1,"tid":12,"id":90,"name":"app task manager create ndk task","args":{"span_id":"90","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544254000,"dur":1000},{"pid":1,"tid":12,"id":91,"name":"app task manager create external native build task","args":{"span_id":"91","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544255000,"dur":100},{"pid":1,"tid":12,"id":92,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"92","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544255000,"dur":100},{"pid":1,"tid":12,"id":93,"name":"app task manager create compile task","args":{"span_id":"93","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544255000,"dur":1000},{"pid":1,"tid":12,"id":94,"name":"app task manager create packaging task","args":{"span_id":"94","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544256000,"dur":1000},{"pid":1,"tid":12,"id":95,"name":"app task manager create lint task","args":{"span_id":"95","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544258000,"dur":100},{"pid":1,"tid":12,"id":80,"name":"variant manager create tasks for variant","args":{"span_id":"80","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544246000,"dur":12000},{"pid":1,"tid":12,"id":96,"name":"variant manager create tasks for variant","args":{"span_id":"96","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544258000,"dur":5000},{"pid":1,"tid":12,"id":98,"name":"app task manager create merge manifest task","args":{"span_id":"98","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544264000,"dur":1000},{"pid":1,"tid":12,"id":99,"name":"app task manager create generate res values task","args":{"span_id":"99","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544265000,"dur":1000},{"pid":1,"tid":12,"id":100,"name":"app task manager create create renderscript task","args":{"span_id":"100","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544266000,"dur":100},{"pid":1,"tid":12,"id":101,"name":"app task manager create merge resources task","args":{"span_id":"101","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544266000,"dur":100},{"pid":1,"tid":12,"id":102,"name":"app task manager create merge assets task","args":{"span_id":"102","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544266000,"dur":1000},{"pid":1,"tid":12,"id":103,"name":"app task manager create build config task","args":{"span_id":"103","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544267000,"dur":100},{"pid":1,"tid":12,"id":104,"name":"app task manager create process res task","args":{"span_id":"104","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544267000,"dur":3000},{"pid":1,"tid":12,"id":105,"name":"app task manager create aidl task","args":{"span_id":"105","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544270000,"dur":100},{"pid":1,"tid":12,"id":106,"name":"app task manager create shader task","args":{"span_id":"106","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544270000,"dur":1000},{"pid":1,"tid":12,"id":107,"name":"app task manager create ndk task","args":{"span_id":"107","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544271000,"dur":100},{"pid":1,"tid":12,"id":108,"name":"app task manager create external native build task","args":{"span_id":"108","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544271000,"dur":100},{"pid":1,"tid":12,"id":109,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"109","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544271000,"dur":100},{"pid":1,"tid":12,"id":110,"name":"app task manager create compile task","args":{"span_id":"110","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544271000,"dur":3000},{"pid":1,"tid":12,"id":111,"name":"app task manager create packaging task","args":{"span_id":"111","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544275000,"dur":100},{"pid":1,"tid":12,"id":112,"name":"app task manager create lint task","args":{"span_id":"112","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544276000,"dur":100},{"pid":1,"tid":12,"id":97,"name":"variant manager create tasks for variant","args":{"span_id":"97","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544263000,"dur":13000},{"pid":1,"tid":12,"id":113,"name":"variant manager create tasks for variant","args":{"span_id":"113","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544276000,"dur":5000},{"pid":1,"tid":12,"id":114,"name":"variant manager create tasks for variant","args":{"span_id":"114","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544281000,"dur":11000},{"pid":1,"tid":12,"id":116,"name":"app task manager create merge manifest task","args":{"span_id":"116","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544294000,"dur":100},{"pid":1,"tid":12,"id":117,"name":"app task manager create generate res values task","args":{"span_id":"117","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544294000,"dur":100},{"pid":1,"tid":12,"id":118,"name":"app task manager create create renderscript task","args":{"span_id":"118","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544294000,"dur":1000},{"pid":1,"tid":12,"id":119,"name":"app task manager create merge resources task","args":{"span_id":"119","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544295000,"dur":100},{"pid":1,"tid":12,"id":120,"name":"app task manager create merge assets task","args":{"span_id":"120","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544295000,"dur":100},{"pid":1,"tid":12,"id":121,"name":"app task manager create build config task","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544295000,"dur":100},{"pid":1,"tid":12,"id":122,"name":"app task manager create process res task","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544295000,"dur":1000},{"pid":1,"tid":12,"id":123,"name":"app task manager create aidl task","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544296000,"dur":100},{"pid":1,"tid":12,"id":124,"name":"app task manager create shader task","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544296000,"dur":1000},{"pid":1,"tid":12,"id":125,"name":"app task manager create ndk task","args":{"span_id":"125","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544297000,"dur":100},{"pid":1,"tid":12,"id":126,"name":"app task manager create external native build task","args":{"span_id":"126","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544297000,"dur":100},{"pid":1,"tid":12,"id":127,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"127","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544297000,"dur":100},{"pid":1,"tid":12,"id":128,"name":"app task manager create compile task","args":{"span_id":"128","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544297000,"dur":5000},{"pid":1,"tid":12,"id":129,"name":"app task manager create packaging task","args":{"span_id":"129","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544302000,"dur":2000},{"pid":1,"tid":12,"id":130,"name":"app task manager create lint task","args":{"span_id":"130","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544304000,"dur":100},{"pid":1,"tid":12,"id":115,"name":"variant manager create tasks for variant","args":{"span_id":"115","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544292000,"dur":12000},{"pid":1,"tid":12,"id":131,"name":"variant manager create tasks for variant","args":{"span_id":"131","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544304000,"dur":4000},{"pid":1,"tid":12,"id":133,"name":"app task manager create merge manifest task","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544309000,"dur":1000},{"pid":1,"tid":12,"id":134,"name":"app task manager create generate res values task","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544310000,"dur":100},{"pid":1,"tid":12,"id":135,"name":"app task manager create create renderscript task","args":{"span_id":"135","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544310000,"dur":100},{"pid":1,"tid":12,"id":136,"name":"app task manager create merge resources task","args":{"span_id":"136","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544310000,"dur":100},{"pid":1,"tid":12,"id":137,"name":"app task manager create merge assets task","args":{"span_id":"137","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544310000,"dur":1000},{"pid":1,"tid":12,"id":138,"name":"app task manager create build config task","args":{"span_id":"138","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544311000,"dur":100},{"pid":1,"tid":12,"id":139,"name":"app task manager create process res task","args":{"span_id":"139","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544311000,"dur":2000},{"pid":1,"tid":12,"id":140,"name":"app task manager create aidl task","args":{"span_id":"140","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544313000,"dur":100},{"pid":1,"tid":12,"id":141,"name":"app task manager create shader task","args":{"span_id":"141","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544313000,"dur":100},{"pid":1,"tid":12,"id":142,"name":"app task manager create ndk task","args":{"span_id":"142","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544313000,"dur":1000},{"pid":1,"tid":12,"id":143,"name":"app task manager create external native build task","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544314000,"dur":100},{"pid":1,"tid":12,"id":144,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544314000,"dur":100},{"pid":1,"tid":12,"id":145,"name":"app task manager create compile task","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544314000,"dur":3000},{"pid":1,"tid":12,"id":146,"name":"app task manager create packaging task","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544317000,"dur":1000},{"pid":1,"tid":12,"id":147,"name":"app task manager create lint task","args":{"span_id":"147","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544318000,"dur":100},{"pid":1,"tid":12,"id":132,"name":"variant manager create tasks for variant","args":{"span_id":"132","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544308000,"dur":10000},{"pid":1,"tid":12,"id":148,"name":"variant manager create tasks for variant","args":{"span_id":"148","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544318000,"dur":9000},{"pid":1,"tid":12,"id":149,"name":"variant manager create tasks for variant","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544327000,"dur":14000},{"pid":1,"tid":12,"id":151,"name":"app task manager create merge manifest task","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544342000,"dur":100},{"pid":1,"tid":12,"id":152,"name":"app task manager create generate res values task","args":{"span_id":"152","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544342000,"dur":1000},{"pid":1,"tid":12,"id":153,"name":"app task manager create create renderscript task","args":{"span_id":"153","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544343000,"dur":100},{"pid":1,"tid":12,"id":154,"name":"app task manager create merge resources task","args":{"span_id":"154","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544343000,"dur":100},{"pid":1,"tid":12,"id":155,"name":"app task manager create merge assets task","args":{"span_id":"155","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544343000,"dur":100},{"pid":1,"tid":12,"id":156,"name":"app task manager create build config task","args":{"span_id":"156","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544343000,"dur":100},{"pid":1,"tid":12,"id":157,"name":"app task manager create process res task","args":{"span_id":"157","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544343000,"dur":2000},{"pid":1,"tid":12,"id":158,"name":"app task manager create aidl task","args":{"span_id":"158","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544345000,"dur":100},{"pid":1,"tid":12,"id":159,"name":"app task manager create shader task","args":{"span_id":"159","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544345000,"dur":100},{"pid":1,"tid":12,"id":160,"name":"app task manager create ndk task","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544345000,"dur":100},{"pid":1,"tid":12,"id":161,"name":"app task manager create external native build task","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544345000,"dur":100},{"pid":1,"tid":12,"id":162,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"162","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544345000,"dur":1000},{"pid":1,"tid":12,"id":163,"name":"app task manager create compile task","args":{"span_id":"163","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544346000,"dur":5000},{"pid":1,"tid":12,"id":164,"name":"app task manager create packaging task","args":{"span_id":"164","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544351000,"dur":2000},{"pid":1,"tid":12,"id":165,"name":"app task manager create lint task","args":{"span_id":"165","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544353000,"dur":100},{"pid":1,"tid":12,"id":150,"name":"variant manager create tasks for variant","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544341000,"dur":12000},{"pid":1,"tid":12,"id":166,"name":"variant manager create tasks for variant","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544353000,"dur":5000},{"pid":1,"tid":12,"id":168,"name":"app task manager create merge manifest task","args":{"span_id":"168","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544359000,"dur":100},{"pid":1,"tid":12,"id":169,"name":"app task manager create generate res values task","args":{"span_id":"169","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544360000,"dur":100},{"pid":1,"tid":12,"id":170,"name":"app task manager create create renderscript task","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544360000,"dur":100},{"pid":1,"tid":12,"id":171,"name":"app task manager create merge resources task","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544360000,"dur":100},{"pid":1,"tid":12,"id":172,"name":"app task manager create merge assets task","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544360000,"dur":100},{"pid":1,"tid":12,"id":173,"name":"app task manager create build config task","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544360000,"dur":100},{"pid":1,"tid":12,"id":174,"name":"app task manager create process res task","args":{"span_id":"174","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544360000,"dur":2000},{"pid":1,"tid":12,"id":175,"name":"app task manager create aidl task","args":{"span_id":"175","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544362000,"dur":100},{"pid":1,"tid":12,"id":176,"name":"app task manager create shader task","args":{"span_id":"176","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544362000,"dur":100},{"pid":1,"tid":12,"id":177,"name":"app task manager create ndk task","args":{"span_id":"177","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544362000,"dur":100},{"pid":1,"tid":12,"id":178,"name":"app task manager create external native build task","args":{"span_id":"178","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544362000,"dur":100},{"pid":1,"tid":12,"id":179,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"179","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544362000,"dur":1000},{"pid":1,"tid":12,"id":180,"name":"app task manager create compile task","args":{"span_id":"180","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544363000,"dur":3000},{"pid":1,"tid":12,"id":181,"name":"app task manager create packaging task","args":{"span_id":"181","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544366000,"dur":1000},{"pid":1,"tid":12,"id":182,"name":"app task manager create lint task","args":{"span_id":"182","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544367000,"dur":1000},{"pid":1,"tid":12,"id":167,"name":"variant manager create tasks for variant","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544358000,"dur":10000},{"pid":1,"tid":12,"id":183,"name":"variant manager create tasks for variant","args":{"span_id":"183","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544368000,"dur":5000},{"pid":1,"tid":12,"id":184,"name":"variant manager create tasks for variant","args":{"span_id":"184","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544373000,"dur":12000},{"pid":1,"tid":12,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544015000,"dur":378000},{"pid":1,"tid":12,"id":185,"name":"variant manager external native config values","args":{"span_id":"185","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544394000,"dur":100},{"pid":1,"tid":12,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433543291000,"dur":1103000},{"pid":1,"tid":12,"id":186,"name":"base plugin project configure","args":{"span_id":"186","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544406000,"dur":5000},{"pid":1,"tid":12,"id":187,"name":"base plugin project base extension creation","args":{"span_id":"187","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544411000,"dur":8000},{"pid":1,"tid":12,"id":189,"name":"task manager create tasks","args":{"span_id":"189","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544419000,"dur":1000},{"pid":1,"tid":12,"id":188,"name":"base plugin project tasks creation","args":{"span_id":"188","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544419000,"dur":1000},{"pid":1,"tid":12,"id":192,"name":"variant manager create variants","args":{"span_id":"192","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544432000,"dur":6000},{"pid":1,"tid":12,"id":193,"name":"variant manager create tests tasks","args":{"span_id":"193","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544438000,"dur":100},{"pid":1,"tid":12,"id":195,"name":"lib task manager create generate res values task","args":{"span_id":"195","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544439000,"dur":100},{"pid":1,"tid":12,"id":196,"name":"lib task manager create merge manifest task","args":{"span_id":"196","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544439000,"dur":2000},{"pid":1,"tid":12,"id":197,"name":"lib task manager create create renderscript task","args":{"span_id":"197","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544441000,"dur":100},{"pid":1,"tid":12,"id":198,"name":"lib task manager create merge resources task","args":{"span_id":"198","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544441000,"dur":1000},{"pid":1,"tid":12,"id":199,"name":"lib task manager create merge assets task","args":{"span_id":"199","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544442000,"dur":100},{"pid":1,"tid":12,"id":200,"name":"lib task manager create build config task","args":{"span_id":"200","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544442000,"dur":100},{"pid":1,"tid":12,"id":201,"name":"lib task manager create process res task","args":{"span_id":"201","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544442000,"dur":4000},{"pid":1,"tid":12,"id":202,"name":"lib task manager create aidl task","args":{"span_id":"202","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544446000,"dur":100},{"pid":1,"tid":12,"id":203,"name":"lib task manager create shader task","args":{"span_id":"203","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544446000,"dur":100},{"pid":1,"tid":12,"id":204,"name":"lib task manager create compile task","args":{"span_id":"204","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544446000,"dur":1000},{"pid":1,"tid":12,"id":205,"name":"lib task manager create ndk task","args":{"span_id":"205","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544447000,"dur":100},{"pid":1,"tid":12,"id":206,"name":"lib task manager create external native build task","args":{"span_id":"206","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544447000,"dur":100},{"pid":1,"tid":12,"id":207,"name":"lib task manager create packaging task","args":{"span_id":"207","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544448000,"dur":100},{"pid":1,"tid":12,"id":208,"name":"lib task manager create merge proguard file task","args":{"span_id":"208","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544448000,"dur":1000},{"pid":1,"tid":12,"id":209,"name":"lib task manager create post compilation task","args":{"span_id":"209","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544454000,"dur":7000},{"pid":1,"tid":12,"id":210,"name":"lib task manager create lint task","args":{"span_id":"210","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544461000,"dur":100},{"pid":1,"tid":12,"id":194,"name":"variant manager create tasks for variant","args":{"span_id":"194","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544438000,"dur":23000},{"pid":1,"tid":12,"id":211,"name":"variant manager create tasks for variant","args":{"span_id":"211","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544461000,"dur":21000},{"pid":1,"tid":12,"id":213,"name":"lib task manager create generate res values task","args":{"span_id":"213","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544485000,"dur":100},{"pid":1,"tid":12,"id":214,"name":"lib task manager create merge manifest task","args":{"span_id":"214","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544485000,"dur":1000},{"pid":1,"tid":12,"id":215,"name":"lib task manager create create renderscript task","args":{"span_id":"215","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544486000,"dur":100},{"pid":1,"tid":12,"id":216,"name":"lib task manager create merge resources task","args":{"span_id":"216","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544486000,"dur":100},{"pid":1,"tid":12,"id":217,"name":"lib task manager create merge assets task","args":{"span_id":"217","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544487000,"dur":100},{"pid":1,"tid":12,"id":218,"name":"lib task manager create build config task","args":{"span_id":"218","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544487000,"dur":100},{"pid":1,"tid":12,"id":219,"name":"lib task manager create process res task","args":{"span_id":"219","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544487000,"dur":4000},{"pid":1,"tid":12,"id":220,"name":"lib task manager create aidl task","args":{"span_id":"220","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544491000,"dur":100},{"pid":1,"tid":12,"id":221,"name":"lib task manager create shader task","args":{"span_id":"221","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544491000,"dur":1000},{"pid":1,"tid":12,"id":222,"name":"lib task manager create compile task","args":{"span_id":"222","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544492000,"dur":1000},{"pid":1,"tid":12,"id":223,"name":"lib task manager create ndk task","args":{"span_id":"223","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544493000,"dur":100},{"pid":1,"tid":12,"id":224,"name":"lib task manager create external native build task","args":{"span_id":"224","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544493000,"dur":100},{"pid":1,"tid":12,"id":225,"name":"lib task manager create packaging task","args":{"span_id":"225","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544494000,"dur":1000},{"pid":1,"tid":12,"id":226,"name":"lib task manager create merge proguard file task","args":{"span_id":"226","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544495000,"dur":1000},{"pid":1,"tid":12,"id":227,"name":"lib task manager create post compilation task","args":{"span_id":"227","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544496000,"dur":3000},{"pid":1,"tid":12,"id":228,"name":"lib task manager create lint task","args":{"span_id":"228","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544501000,"dur":1000},{"pid":1,"tid":12,"id":212,"name":"variant manager create tasks for variant","args":{"span_id":"212","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544482000,"dur":20000},{"pid":1,"tid":12,"id":229,"name":"variant manager create tasks for variant","args":{"span_id":"229","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544502000,"dur":4000},{"pid":1,"tid":12,"id":230,"name":"variant manager create tasks for variant","args":{"span_id":"230","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544506000,"dur":9000},{"pid":1,"tid":12,"id":191,"name":"variant manager create android tasks","args":{"span_id":"191","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544432000,"dur":84000},{"pid":1,"tid":12,"id":231,"name":"variant manager external native config values","args":{"span_id":"231","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544517000,"dur":100},{"pid":1,"tid":12,"id":190,"name":"base plugin create android tasks","args":{"span_id":"190","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544430000,"dur":87000},{"pid":1,"tid":12,"id":232,"name":"base plugin project configure","args":{"span_id":"232","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544542000,"dur":8000},{"pid":1,"tid":12,"id":233,"name":"base plugin project base extension creation","args":{"span_id":"233","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544550000,"dur":7000},{"pid":1,"tid":12,"id":235,"name":"task manager create tasks","args":{"span_id":"235","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544557000,"dur":1000},{"pid":1,"tid":12,"id":234,"name":"base plugin project tasks creation","args":{"span_id":"234","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544557000,"dur":1000},{"pid":1,"tid":12,"id":238,"name":"variant manager create variants","args":{"span_id":"238","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544561000,"dur":4000},{"pid":1,"tid":12,"id":239,"name":"variant manager create tests tasks","args":{"span_id":"239","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544565000,"dur":100},{"pid":1,"tid":12,"id":241,"name":"lib task manager create generate res values task","args":{"span_id":"241","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544567000,"dur":100},{"pid":1,"tid":12,"id":242,"name":"lib task manager create merge manifest task","args":{"span_id":"242","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544567000,"dur":100},{"pid":1,"tid":12,"id":243,"name":"lib task manager create create renderscript task","args":{"span_id":"243","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544567000,"dur":100},{"pid":1,"tid":12,"id":244,"name":"lib task manager create merge resources task","args":{"span_id":"244","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544567000,"dur":1000},{"pid":1,"tid":12,"id":245,"name":"lib task manager create merge assets task","args":{"span_id":"245","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544568000,"dur":100},{"pid":1,"tid":12,"id":246,"name":"lib task manager create build config task","args":{"span_id":"246","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544568000,"dur":100},{"pid":1,"tid":12,"id":247,"name":"lib task manager create process res task","args":{"span_id":"247","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544568000,"dur":4000},{"pid":1,"tid":12,"id":248,"name":"lib task manager create aidl task","args":{"span_id":"248","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544572000,"dur":1000},{"pid":1,"tid":12,"id":249,"name":"lib task manager create shader task","args":{"span_id":"249","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544573000,"dur":100},{"pid":1,"tid":12,"id":250,"name":"lib task manager create compile task","args":{"span_id":"250","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544573000,"dur":1000},{"pid":1,"tid":12,"id":251,"name":"lib task manager create ndk task","args":{"span_id":"251","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544574000,"dur":100},{"pid":1,"tid":12,"id":252,"name":"lib task manager create external native build task","args":{"span_id":"252","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544574000,"dur":100},{"pid":1,"tid":12,"id":253,"name":"lib task manager create packaging task","args":{"span_id":"253","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544574000,"dur":1000},{"pid":1,"tid":12,"id":254,"name":"lib task manager create merge proguard file task","args":{"span_id":"254","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544575000,"dur":100},{"pid":1,"tid":12,"id":255,"name":"lib task manager create post compilation task","args":{"span_id":"255","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544575000,"dur":2000},{"pid":1,"tid":12,"id":256,"name":"lib task manager create lint task","args":{"span_id":"256","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544577000,"dur":100},{"pid":1,"tid":12,"id":240,"name":"variant manager create tasks for variant","args":{"span_id":"240","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544565000,"dur":12000},{"pid":1,"tid":12,"id":257,"name":"variant manager create tasks for variant","args":{"span_id":"257","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544577000,"dur":6000},{"pid":1,"tid":12,"id":259,"name":"lib task manager create generate res values task","args":{"span_id":"259","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544589000,"dur":100},{"pid":1,"tid":12,"id":260,"name":"lib task manager create merge manifest task","args":{"span_id":"260","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544589000,"dur":1000},{"pid":1,"tid":12,"id":261,"name":"lib task manager create create renderscript task","args":{"span_id":"261","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544590000,"dur":100},{"pid":1,"tid":12,"id":262,"name":"lib task manager create merge resources task","args":{"span_id":"262","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544590000,"dur":1000},{"pid":1,"tid":12,"id":263,"name":"lib task manager create merge assets task","args":{"span_id":"263","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544591000,"dur":2000},{"pid":1,"tid":12,"id":264,"name":"lib task manager create build config task","args":{"span_id":"264","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544593000,"dur":1000},{"pid":1,"tid":12,"id":265,"name":"lib task manager create process res task","args":{"span_id":"265","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544594000,"dur":2000},{"pid":1,"tid":12,"id":266,"name":"lib task manager create aidl task","args":{"span_id":"266","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544596000,"dur":100},{"pid":1,"tid":12,"id":267,"name":"lib task manager create shader task","args":{"span_id":"267","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544596000,"dur":100},{"pid":1,"tid":12,"id":268,"name":"lib task manager create compile task","args":{"span_id":"268","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544596000,"dur":1000},{"pid":1,"tid":12,"id":269,"name":"lib task manager create ndk task","args":{"span_id":"269","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544597000,"dur":100},{"pid":1,"tid":12,"id":270,"name":"lib task manager create external native build task","args":{"span_id":"270","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544597000,"dur":100},{"pid":1,"tid":12,"id":271,"name":"lib task manager create packaging task","args":{"span_id":"271","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544599000,"dur":1000},{"pid":1,"tid":12,"id":272,"name":"lib task manager create merge proguard file task","args":{"span_id":"272","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544600000,"dur":1000},{"pid":1,"tid":12,"id":273,"name":"lib task manager create post compilation task","args":{"span_id":"273","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544603000,"dur":3000},{"pid":1,"tid":12,"id":274,"name":"lib task manager create lint task","args":{"span_id":"274","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544607000,"dur":100},{"pid":1,"tid":12,"id":258,"name":"variant manager create tasks for variant","args":{"span_id":"258","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433544583000,"dur":24000},{"pid":1,"tid":12,"id":275,"name":"variant manager create tasks for variant","args":{"span_id":"275","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544607000,"dur":4000},{"pid":1,"tid":12,"id":276,"name":"variant manager create tasks for variant","args":{"span_id":"276","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544611000,"dur":11000},{"pid":1,"tid":12,"id":237,"name":"variant manager create android tasks","args":{"span_id":"237","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544561000,"dur":62000},{"pid":1,"tid":12,"id":277,"name":"variant manager external native config values","args":{"span_id":"277","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544623000,"dur":100},{"pid":1,"tid":12,"id":236,"name":"base plugin create android tasks","args":{"span_id":"236","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433544560000,"dur":63000},{"pid":1,"tid":0,"id":278,"name":"task: delete","args":{"span_id":"278","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433544748000,"dur":48000},{"pid":1,"tid":0,"id":279,"name":"task: delete","args":{"span_id":"279","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433544798000,"dur":3904000},{"pid":1,"tid":0,"id":280,"name":"task: delete","args":{"span_id":"280","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433548706000,"dur":302000},{"pid":1,"tid":0,"id":281,"name":"task: delete","args":{"span_id":"281","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549009000,"dur":104000},{"pid":1,"tid":0,"id":282,"name":"task: unknown task type","args":{"span_id":"282","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433549114000,"dur":1000},{"pid":1,"tid":0,"id":283,"name":"task: unknown task type","args":{"span_id":"283","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433549115000,"dur":100},{"pid":1,"tid":0,"id":284,"name":"task: unknown task type","args":{"span_id":"284","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433549117000,"dur":100},{"pid":1,"tid":0,"id":285,"name":"task: unknown task type","args":{"span_id":"285","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433549117000,"dur":100},{"pid":1,"tid":0,"id":286,"name":"task: aidl compile","args":{"span_id":"286","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549120000,"dur":124000},{"pid":1,"tid":0,"id":287,"name":"task: aidl compile","args":{"span_id":"287","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549245000,"dur":226000},{"pid":1,"tid":0,"id":288,"name":"task: unknown task type","args":{"span_id":"288","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549471000,"dur":1000},{"pid":1,"tid":0,"id":289,"name":"task: renderscript compile","args":{"span_id":"289","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549474000,"dur":22000},{"pid":1,"tid":0,"id":290,"name":"task: check manifest","args":{"span_id":"290","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549496000,"dur":3000},{"pid":1,"tid":0,"id":291,"name":"task: generate build config","args":{"span_id":"291","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549500000,"dur":6000},{"pid":1,"tid":0,"id":292,"name":"task: prepare lint jar","args":{"span_id":"292","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433549507000,"dur":3000},{"pid":1,"tid":0,"id":293,"name":"task: generate res values","args":{"span_id":"293","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549517000,"dur":4000},{"pid":1,"tid":0,"id":294,"name":"task: unknown task type","args":{"span_id":"294","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549523000,"dur":100},{"pid":1,"tid":0,"id":295,"name":"task: merge resources","args":{"span_id":"295","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549529000,"dur":317000},{"pid":1,"tid":0,"id":297,"name":"task: process manifest","args":{"span_id":"297","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549867000,"dur":40000},{"pid":1,"tid":0,"id":298,"name":"task: renderscript compile","args":{"span_id":"298","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549909000,"dur":16000},{"pid":1,"tid":0,"id":299,"name":"task: generate res values","args":{"span_id":"299","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549926000,"dur":2000},{"pid":1,"tid":0,"id":300,"name":"task: unknown task type","args":{"span_id":"300","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549929000,"dur":100},{"pid":1,"tid":0,"id":301,"name":"task: merge resources","args":{"span_id":"301","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549930000,"dur":22000},{"pid":1,"tid":0,"id":303,"name":"task: check manifest","args":{"span_id":"303","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549976000,"dur":13000},{"pid":1,"tid":0,"id":304,"name":"task: process manifest","args":{"span_id":"304","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549991000,"dur":31000},{"pid":1,"tid":0,"id":305,"name":"task: unknown task type","args":{"span_id":"305","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433550024000,"dur":100},{"pid":1,"tid":0,"id":306,"name":"task: app pre build","args":{"span_id":"306","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550025000,"dur":75000},{"pid":1,"tid":0,"id":307,"name":"task: aidl compile","args":{"span_id":"307","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550102000,"dur":25000},{"pid":1,"tid":0,"id":308,"name":"task: unknown task type","args":{"span_id":"308","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550128000,"dur":1000},{"pid":1,"tid":0,"id":309,"name":"task: renderscript compile","args":{"span_id":"309","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550132000,"dur":30000},{"pid":1,"tid":0,"id":310,"name":"task: check manifest","args":{"span_id":"310","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550163000,"dur":4000},{"pid":1,"tid":0,"id":311,"name":"task: generate build config","args":{"span_id":"311","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550168000,"dur":8000},{"pid":1,"tid":0,"id":312,"name":"task: prepare lint jar","args":{"span_id":"312","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433550177000,"dur":1000},{"pid":1,"tid":0,"id":313,"name":"task: generate res values","args":{"span_id":"313","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550179000,"dur":2000},{"pid":1,"tid":0,"id":314,"name":"task: unknown task type","args":{"span_id":"314","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550182000,"dur":100},{"pid":1,"tid":0,"id":315,"name":"task: merge resources","args":{"span_id":"315","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433550184000,"dur":2444000},{"pid":1,"tid":0,"id":316,"name":"task: compatible screens manifest","args":{"span_id":"316","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433552629000,"dur":9000},{"pid":1,"tid":0,"id":317,"name":"task: merge manifests","args":{"span_id":"317","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433552640000,"dur":116000},{"pid":1,"tid":0,"id":318,"name":"task: splits discovery","args":{"span_id":"318","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433552758000,"dur":10000},{"pid":1,"tid":0,"id":319,"name":"task: generate build config","args":{"span_id":"319","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433552770000,"dur":4000},{"pid":1,"tid":0,"id":320,"name":"task: prepare lint jar","args":{"span_id":"320","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433552775000,"dur":100},{"pid":1,"tid":0,"id":296,"name":"task: platform attr extractor","args":{"span_id":"296","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549847000,"dur":2930000},{"pid":1,"tid":0,"id":302,"name":"task: platform attr extractor","args":{"span_id":"302","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433549954000,"dur":2824000},{"pid":1,"tid":0,"id":321,"name":"task: process android resources","args":{"span_id":"321","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433552780000,"dur":74000},{"pid":1,"tid":0,"id":322,"name":"task: process android resources","args":{"span_id":"322","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433552856000,"dur":413000},{"pid":1,"tid":0,"id":323,"name":"task: unknown task type","args":{"span_id":"323","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433553269000,"dur":100},{"pid":1,"tid":0,"id":324,"name":"task: process android resources","args":{"span_id":"324","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: true\n"},"ph":"X","ts":1546433553272000,"dur":2305000},{"pid":1,"tid":12,"id":325,"name":"base plugin build finished","args":{"span_id":"325","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433555585000,"dur":1000},{"pid":1,"tid":12,"id":326,"name":"base plugin build finished","args":{"span_id":"326","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433555586000,"dur":100},{"pid":1,"tid":12,"id":327,"name":"base plugin build finished","args":{"span_id":"327","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433555586000,"dur":100}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-52-35-594.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-52-35-594.rawproto deleted file mode 100644 index 61a6184a6a7d55f896c6631ec8239023f2127083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12633 zcmd7Yd3;sH6$kJ)^FkOxfXk9(TpFHQ>y;LoLXb{=z7C|tq28FPQ*mKW0bMM^Le99yL^go#I%(?UKZ)Wmx zb6Z6_cF4?9H|O<;-O@dF$JLE9Gdg5ucF4Y=WoCz*4jFf6cFJnsr{JN2yhjVVCS`T% z;Qc>8BePpkQPu25cTCBl{Y(1l*^Dk_vyW@I8C#dcFU| znPWxmFU?U^wR;8$r)1yjy>!`l5xclu%cQ2=y2rZr$a}n?*L?*}L`T}SN=k;NoAdfS z*!_uuf=9eIDDhGMuc^ewY5SK6r*hc5-g?*s5sRIBiHTFW#LQ#;-x1Eq+C_1fsGMeI zvHjyp;mjPpIPMa!P3ID2;}&c=zY-Py7bTWAd=@KAiK4-4&+}d^o58oUXwZ?Z!l@n? zei851S)uvhR!z|`i#663OaEXn_<1ew+l-Rj! zIm}|?w)jh|Z+M9e~CrbNkCA0B`s zr>3&E9s{RV93}Re62;~74nm3X@5WuCy5S}En-W#CR-flAistd{tQ@obJWEV7C03Ph zJ|vv774hGT^`^whvO|aAc2;eU`*v#UJ z6ptBt^!!RJYV0Y{t~+zUSe;! z#L4~}c1qGtE@ z-nult63?0v!}nHtv#8h>cZmTFFEJ=wV&K~NXYpK}61(FsvE7s?Il5v2?6U>%vnbBn zd3-%5QncjQ+wc>yWM|wZY8zhS)K0T5UfK^|`KnHT)>~J^w>k&!;u0l$Hti5j(RMCz z`8lr6exkLK`VjtF6T8usIU+aGE!k_0>P08LUv^@bxKY!Zq8d2~dMmXzaT85@Yh|@2 znAQ}foW^>~S*&u6n;f(^f%c)_V0)6=)U>CnrcRQcNbODC>c#-Vn@p-o2AD-4-2E0b z1DH*a;2yA`Ilz2^sC&?Y761zgqK?J66~Ia};&TgH1FSM| z(t?QArR- zF+r}|#N721bs@Cxr1s|6-jvd~*ttkon?e|qB=`=%eu4CJz06{S^!~hPM zQWz7%B>)EvU`z~`1|TUWhRXmBn-Lfj!*>ISx)>9~^TP)i^vCWdwZC(Jc4CWI7q5yY{Npe4q^?caxX9*}_T$zB>M>IcyN z74>h8?ae5q4o-VLtjIez;IRzG7bW;1z;FVNk0HYbjE^BR0FI9#3*ZG)3gctA$_9*& zp<@6XA44aAmrN;)k0ILzjE|wS4HzFojtv+eLze(JK8C9SM$pA2?J|ZR0gN($yNuz- z0L5my7#~84Y7cP?B}l?JxcwSv=K+b>-kj37&bd}kGKDav1cF=}@GxY!J^(?7A;S#- zC8iV}h73Qk0b^qLsSOwt!_NW`w96Q71ei?M5H7~V@N7O(1IEPA zH2{u@;U<8obPbM);a33D%&agbhMNJVn^|E@2r24Xh+`sw!Z^77*U-)b8ew}2FO3v+ z3$)Ln{!Ovnp_G2(bkk+jE@_uFBDfWx+*}#sW9V)J?lOkk0^nW7@LPZiQwrl__?-a3sz#4N6j1M72b%QuwAxOqJxcwez=K&O7OG+c($yg&67&GrWB_Ag zxEJ6Jb7_o;p}+>*WekM@2>Qywa38>%rWD4+&@+H2?J|b@0p2zvaF;PW5P+bcWeg7j zykkb-E@ODe28@Z}VH+?ehF$?gDJF*A09(y9FeZja0NyizF(IU=JcwfhK{Jer+y4yh zJb+?q<)x9L`at_G>QB3@HKp{J^QhiuE`aehCisgD7$3vq0q`No@C3kTrWD4<@T3j6 z%NYJ@1IEYjQ~-QPGW-po+FS$UWB7Xj93R6!0QQ>^7$3twZNT^#{$&HkhmfXnYi1alTZ*TNK$QdNI1 ztz#tgt%PBO2Rx(+?$8w4SR*|c&=}h?!-V-VO|XgcWtxaI#!LhAWttQw%$KPoOt?LnCWi_0Wtw6W ze~)2;=Ui|P$I>)-k21mIE1*e4yh)j+Ax$=u$9$1e)hI8mktDQD8K!%{L+GSUqpW5M zXNJ%-OffuDlZa*^%`}ADlxcRDFh(YLTm=RFQ5YlB+%RE`O!LBoF*41!iDP7f$3bwd z*=B|qBU5RZFh-_@VZs=h7KI68WLj(!$H=q%#o(KLg@FYS;2!NZcbCng|kfPJtP7i9r*+7<^nGvzR2d=R45cAErc%mmLyVbpXp3NvQf879n_ zX&2HAGYT_ig1@grL7y;VCip{dK%6nt2S{^FLCl!xLz{$)88dx^G?zwk#!Me0%`*it zW2UMwVa80KAk8-gF=M9PNDB;M#!P#VN{OPBG1I3=OU)?E7%5G?he=K$YJ*9#>_vHn z#QUl!bMbfWG_?<jG$ zUw(77&>vB61<$>s=KR_(^ge2C4Cfa&r>TR&IUw|567T%-2iVOCra4U=5zb+ukJ5ky zIKTW-pQ9Wn@y;(6t>Dj}HE@0zfwdhq=NJ4D%_ca%eEKp>u(o|VW)q%YJ{?CoX|4rp z+o#$v!P@regiW}%eL9JBh6)N7*0xWlkiIt8g0=0_X`66u`}7skSu+aOwohlm1Z&%; zuWb_E`Q_7Dq;E_?Sld2*W0UmOwogUUyYqdY<^vJdHdC5{zj#B&oTT?t)|bB06CUI} z){Exy`SrAP`bqt~DTf*JF6wU+o?p>ire~0bno*cB)3Y{l#!Lf{hS4bLV#Z7ZkzODY zE@sR$2?>5M0kGrpX)`WNoE?DF^)=8{V>S^L>iN1c?pFFdFNNuoL?hQrqUSi zc}3KmU+|{JA^%jk7S1pKR2V5eSzxBn(?}Zy%{8=UuY>c82c)Y}QqRSA31b;<^PGg- zNY^CQ(-Au2y;<5%v{j=ezib#=l@2}Ni(B0u#Zph1itBp5gdT7-hI^!|F;Z{AR|R7| zp#xmIZilf_m*dNC@V5k0Ap);D!aJqjEYj6Dsp&O8nAW#;7%w%wfrlOF5}^tc{#S>I zQm>*p{2eDLV3P1kXK*JbK?QuhF1DLyS*J(3Dv_Grp2Lq}PXcddx|$5P3g5(vrQ*l% zDr5)ONLN#&rZ?YWQNM$-J4}^&8C6L1J7~MZ%Tm)@Yh1y**H75Da+=hesX~HZ;X=E@ zbgAieu{!tKUlKE<-bEFbQ{djmaP1Paq@IJXNX10KhUq+WqIse_j{%^~zLUzK_%bx?kX(2^>X`jcP|^f5zA>NTnNPzNt8 zxW3~B9`2&J`5>f@{NlxgC3fLFN9_DomHr7l{79Uk*L zTw!-uA$2WvNb)<}Zg*HIb-%S(!MjtmVnR1!mDKe9i?!yg8_`zHlzKF+xi4sgd%N%9 z;2Le!e7FX!h=H^$>-0!htEC=7v*_y2;wrnu8pw+}Ob8AMt4F$83-=0NEU9k?zb^Gj z>d?29e=kf4(NDBd>!j|BZ-u~7*2qiD`@O%7S`X8w<_I+V--0)Un&IHe#8vy*ZhM Q85xD0v$C`Evhwr)1E%je0{{R3 diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-53-15-453.json b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-53-15-453.json deleted file mode 100644 index e5b6469..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-53-15-453.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1546433590458000,"args":{"JVM stats":"heap_memory_usage: 469224968\nnon_heap_memory_usage: 234688920\nloaded_class_count: 20162\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591670000,"args":{"JVM stats":"heap_memory_usage: 495681776\nnon_heap_memory_usage: 235575248\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591692000,"args":{"JVM stats":"heap_memory_usage: 495977760\nnon_heap_memory_usage: 235599184\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591699000,"args":{"JVM stats":"heap_memory_usage: 495977760\nnon_heap_memory_usage: 235610160\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591703000,"args":{"JVM stats":"heap_memory_usage: 496273776\nnon_heap_memory_usage: 235610544\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591715000,"args":{"JVM stats":"heap_memory_usage: 496569792\nnon_heap_memory_usage: 235611824\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591719000,"args":{"JVM stats":"heap_memory_usage: 496569792\nnon_heap_memory_usage: 235608304\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591719001,"args":{"JVM stats":"heap_memory_usage: 496569792\nnon_heap_memory_usage: 235608304\nloaded_class_count: 20164\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591778000,"args":{"JVM stats":"heap_memory_usage: 502788616\nnon_heap_memory_usage: 235581032\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591789000,"args":{"JVM stats":"heap_memory_usage: 503380608\nnon_heap_memory_usage: 235579752\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591794000,"args":{"JVM stats":"heap_memory_usage: 503380608\nnon_heap_memory_usage: 235578088\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591795000,"args":{"JVM stats":"heap_memory_usage: 503380608\nnon_heap_memory_usage: 235578088\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433591802000,"args":{"JVM stats":"heap_memory_usage: 503677008\nnon_heap_memory_usage: 235582248\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592543000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235467560\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 359\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592544000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235467560\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592545000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235472936\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592545001,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235473896\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592548000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235467752\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592553000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235455424\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592554000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235458048\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592555000,"args":{"JVM stats":"heap_memory_usage: 207514608\nnon_heap_memory_usage: 235458048\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592557000,"args":{"JVM stats":"heap_memory_usage: 207728024\nnon_heap_memory_usage: 235458048\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592560000,"args":{"JVM stats":"heap_memory_usage: 207728024\nnon_heap_memory_usage: 235453760\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592592000,"args":{"JVM stats":"heap_memory_usage: 210748208\nnon_heap_memory_usage: 235472960\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592604000,"args":{"JVM stats":"heap_memory_usage: 210748208\nnon_heap_memory_usage: 235472576\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592606000,"args":{"JVM stats":"heap_memory_usage: 210748208\nnon_heap_memory_usage: 235468960\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592773000,"args":{"JVM stats":"heap_memory_usage: 223403032\nnon_heap_memory_usage: 235437096\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592775000,"args":{"JVM stats":"heap_memory_usage: 223403032\nnon_heap_memory_usage: 235516200\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592777000,"args":{"JVM stats":"heap_memory_usage: 223403032\nnon_heap_memory_usage: 235516200\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592809000,"args":{"JVM stats":"heap_memory_usage: 224088128\nnon_heap_memory_usage: 235512552\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592812000,"args":{"JVM stats":"heap_memory_usage: 224088128\nnon_heap_memory_usage: 235512552\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592816000,"args":{"JVM stats":"heap_memory_usage: 224088128\nnon_heap_memory_usage: 235512552\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592834000,"args":{"JVM stats":"heap_memory_usage: 226623624\nnon_heap_memory_usage: 235521136\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592837000,"args":{"JVM stats":"heap_memory_usage: 226623624\nnon_heap_memory_usage: 235521136\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592838000,"args":{"JVM stats":"heap_memory_usage: 226623624\nnon_heap_memory_usage: 235521136\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592857000,"args":{"JVM stats":"heap_memory_usage: 227097032\nnon_heap_memory_usage: 235521136\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592942000,"args":{"JVM stats":"heap_memory_usage: 230453064\nnon_heap_memory_usage: 235525424\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592948000,"args":{"JVM stats":"heap_memory_usage: 230610848\nnon_heap_memory_usage: 235525424\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592948001,"args":{"JVM stats":"heap_memory_usage: 230610848\nnon_heap_memory_usage: 235525424\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433592953000,"args":{"JVM stats":"heap_memory_usage: 230768616\nnon_heap_memory_usage: 235525424\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433593189000,"args":{"JVM stats":"heap_memory_usage: 236336632\nnon_heap_memory_usage: 235525424\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433593190000,"args":{"JVM stats":"heap_memory_usage: 236494416\nnon_heap_memory_usage: 235525648\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433593192000,"args":{"JVM stats":"heap_memory_usage: 236494416\nnon_heap_memory_usage: 235525648\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433593194000,"args":{"JVM stats":"heap_memory_usage: 236494416\nnon_heap_memory_usage: 235525648\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433593362000,"args":{"JVM stats":"heap_memory_usage: 245751864\nnon_heap_memory_usage: 235602256\nloaded_class_count: 20164\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433594184000,"args":{"JVM stats":"heap_memory_usage: 312005848\nnon_heap_memory_usage: 235769024\nloaded_class_count: 20165\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433595417000,"args":{"JVM stats":"heap_memory_usage: 322381440\nnon_heap_memory_usage: 235486104\nloaded_class_count: 20171\nthread_count: 44\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433595424000,"args":{"JVM stats":"heap_memory_usage: 323850400\nnon_heap_memory_usage: 235472056\nloaded_class_count: 20171\nthread_count: 44\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433595454000,"args":{"JVM stats":"heap_memory_usage: 326258856\nnon_heap_memory_usage: 235454760\nloaded_class_count: 20171\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":12,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590479000,"dur":47000},{"pid":1,"tid":12,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590526000,"dur":15000},{"pid":1,"tid":12,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590541000,"dur":31000},{"pid":1,"tid":12,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590541000,"dur":31000},{"pid":1,"tid":12,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590631000,"dur":17000},{"pid":1,"tid":12,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590648000,"dur":3000},{"pid":1,"tid":12,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590660000,"dur":3000},{"pid":1,"tid":12,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590664000,"dur":1000},{"pid":1,"tid":12,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590665000,"dur":5000},{"pid":1,"tid":12,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590670000,"dur":3000},{"pid":1,"tid":12,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590673000,"dur":2000},{"pid":1,"tid":12,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590675000,"dur":100},{"pid":1,"tid":12,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590675000,"dur":24000},{"pid":1,"tid":12,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590699000,"dur":1000},{"pid":1,"tid":12,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590700000,"dur":1000},{"pid":1,"tid":12,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590701000,"dur":1000},{"pid":1,"tid":12,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590702000,"dur":100},{"pid":1,"tid":12,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590702000,"dur":32000},{"pid":1,"tid":12,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590734000,"dur":26000},{"pid":1,"tid":12,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590760000,"dur":9000},{"pid":1,"tid":12,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590769000,"dur":100},{"pid":1,"tid":12,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433590651000,"dur":118000},{"pid":1,"tid":12,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590769000,"dur":16000},{"pid":1,"tid":12,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590785000,"dur":92000},{"pid":1,"tid":12,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590626000,"dur":340000},{"pid":1,"tid":12,"id":28,"name":"variant manager external native config values","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590967000,"dur":1000},{"pid":1,"tid":12,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433590607000,"dur":361000},{"pid":1,"tid":12,"id":29,"name":"base plugin project configure","args":{"span_id":"29","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591000000,"dur":11000},{"pid":1,"tid":12,"id":30,"name":"base plugin project base extension creation","args":{"span_id":"30","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591011000,"dur":15000},{"pid":1,"tid":12,"id":32,"name":"task manager create tasks","args":{"span_id":"32","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591026000,"dur":7000},{"pid":1,"tid":12,"id":31,"name":"base plugin project tasks creation","args":{"span_id":"31","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591026000,"dur":7000},{"pid":1,"tid":12,"id":35,"name":"variant manager create variants","args":{"span_id":"35","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591171000,"dur":8000},{"pid":1,"tid":12,"id":36,"name":"variant manager create tests tasks","args":{"span_id":"36","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591179000,"dur":3000},{"pid":1,"tid":12,"id":38,"name":"lib task manager create generate res values task","args":{"span_id":"38","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591187000,"dur":100},{"pid":1,"tid":12,"id":39,"name":"lib task manager create merge manifest task","args":{"span_id":"39","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591187000,"dur":1000},{"pid":1,"tid":12,"id":40,"name":"lib task manager create create renderscript task","args":{"span_id":"40","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591188000,"dur":1000},{"pid":1,"tid":12,"id":41,"name":"lib task manager create merge resources task","args":{"span_id":"41","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591189000,"dur":1000},{"pid":1,"tid":12,"id":42,"name":"lib task manager create merge assets task","args":{"span_id":"42","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591190000,"dur":100},{"pid":1,"tid":12,"id":43,"name":"lib task manager create build config task","args":{"span_id":"43","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591190000,"dur":100},{"pid":1,"tid":12,"id":44,"name":"lib task manager create process res task","args":{"span_id":"44","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591191000,"dur":14000},{"pid":1,"tid":12,"id":45,"name":"lib task manager create aidl task","args":{"span_id":"45","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591205000,"dur":100},{"pid":1,"tid":12,"id":46,"name":"lib task manager create shader task","args":{"span_id":"46","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591205000,"dur":1000},{"pid":1,"tid":12,"id":47,"name":"lib task manager create compile task","args":{"span_id":"47","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591206000,"dur":1000},{"pid":1,"tid":12,"id":48,"name":"lib task manager create ndk task","args":{"span_id":"48","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591207000,"dur":100},{"pid":1,"tid":12,"id":49,"name":"lib task manager create external native build task","args":{"span_id":"49","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591207000,"dur":100},{"pid":1,"tid":12,"id":50,"name":"lib task manager create packaging task","args":{"span_id":"50","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591208000,"dur":1000},{"pid":1,"tid":12,"id":51,"name":"lib task manager create merge proguard file task","args":{"span_id":"51","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591209000,"dur":100},{"pid":1,"tid":12,"id":52,"name":"lib task manager create post compilation task","args":{"span_id":"52","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591212000,"dur":5000},{"pid":1,"tid":12,"id":53,"name":"lib task manager create lint task","args":{"span_id":"53","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591218000,"dur":100},{"pid":1,"tid":12,"id":37,"name":"variant manager create tasks for variant","args":{"span_id":"37","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591182000,"dur":36000},{"pid":1,"tid":12,"id":54,"name":"variant manager create tasks for variant","args":{"span_id":"54","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591218000,"dur":5000},{"pid":1,"tid":12,"id":56,"name":"lib task manager create generate res values task","args":{"span_id":"56","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591224000,"dur":1000},{"pid":1,"tid":12,"id":57,"name":"lib task manager create merge manifest task","args":{"span_id":"57","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591225000,"dur":1000},{"pid":1,"tid":12,"id":58,"name":"lib task manager create create renderscript task","args":{"span_id":"58","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591226000,"dur":100},{"pid":1,"tid":12,"id":59,"name":"lib task manager create merge resources task","args":{"span_id":"59","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591226000,"dur":1000},{"pid":1,"tid":12,"id":60,"name":"lib task manager create merge assets task","args":{"span_id":"60","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591227000,"dur":1000},{"pid":1,"tid":12,"id":61,"name":"lib task manager create build config task","args":{"span_id":"61","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591228000,"dur":100},{"pid":1,"tid":12,"id":62,"name":"lib task manager create process res task","args":{"span_id":"62","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591228000,"dur":18000},{"pid":1,"tid":12,"id":63,"name":"lib task manager create aidl task","args":{"span_id":"63","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591246000,"dur":5000},{"pid":1,"tid":12,"id":64,"name":"lib task manager create shader task","args":{"span_id":"64","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591251000,"dur":1000},{"pid":1,"tid":12,"id":65,"name":"lib task manager create compile task","args":{"span_id":"65","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591252000,"dur":3000},{"pid":1,"tid":12,"id":66,"name":"lib task manager create ndk task","args":{"span_id":"66","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591255000,"dur":100},{"pid":1,"tid":12,"id":67,"name":"lib task manager create external native build task","args":{"span_id":"67","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591255000,"dur":100},{"pid":1,"tid":12,"id":68,"name":"lib task manager create packaging task","args":{"span_id":"68","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591256000,"dur":1000},{"pid":1,"tid":12,"id":69,"name":"lib task manager create merge proguard file task","args":{"span_id":"69","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591257000,"dur":2000},{"pid":1,"tid":12,"id":70,"name":"lib task manager create post compilation task","args":{"span_id":"70","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591259000,"dur":3000},{"pid":1,"tid":12,"id":71,"name":"lib task manager create lint task","args":{"span_id":"71","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591263000,"dur":100},{"pid":1,"tid":12,"id":55,"name":"variant manager create tasks for variant","args":{"span_id":"55","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591223000,"dur":40000},{"pid":1,"tid":12,"id":72,"name":"variant manager create tasks for variant","args":{"span_id":"72","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591263000,"dur":16000},{"pid":1,"tid":12,"id":73,"name":"variant manager create tasks for variant","args":{"span_id":"73","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591279000,"dur":38000},{"pid":1,"tid":12,"id":34,"name":"variant manager create android tasks","args":{"span_id":"34","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591171000,"dur":147000},{"pid":1,"tid":12,"id":74,"name":"variant manager external native config values","args":{"span_id":"74","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591319000,"dur":100},{"pid":1,"tid":12,"id":33,"name":"base plugin create android tasks","args":{"span_id":"33","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591169000,"dur":150000},{"pid":1,"tid":12,"id":75,"name":"base plugin project configure","args":{"span_id":"75","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591354000,"dur":20000},{"pid":1,"tid":12,"id":76,"name":"base plugin project base extension creation","args":{"span_id":"76","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591374000,"dur":17000},{"pid":1,"tid":12,"id":78,"name":"task manager create tasks","args":{"span_id":"78","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591391000,"dur":2000},{"pid":1,"tid":12,"id":77,"name":"base plugin project tasks creation","args":{"span_id":"77","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591391000,"dur":2000},{"pid":1,"tid":12,"id":81,"name":"variant manager create variants","args":{"span_id":"81","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591402000,"dur":8000},{"pid":1,"tid":12,"id":82,"name":"variant manager create tests tasks","args":{"span_id":"82","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591410000,"dur":1000},{"pid":1,"tid":12,"id":84,"name":"lib task manager create generate res values task","args":{"span_id":"84","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591411000,"dur":1000},{"pid":1,"tid":12,"id":85,"name":"lib task manager create merge manifest task","args":{"span_id":"85","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591412000,"dur":100},{"pid":1,"tid":12,"id":86,"name":"lib task manager create create renderscript task","args":{"span_id":"86","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591412000,"dur":1000},{"pid":1,"tid":12,"id":87,"name":"lib task manager create merge resources task","args":{"span_id":"87","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591413000,"dur":1000},{"pid":1,"tid":12,"id":88,"name":"lib task manager create merge assets task","args":{"span_id":"88","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591414000,"dur":100},{"pid":1,"tid":12,"id":89,"name":"lib task manager create build config task","args":{"span_id":"89","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591414000,"dur":100},{"pid":1,"tid":12,"id":90,"name":"lib task manager create process res task","args":{"span_id":"90","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591414000,"dur":5000},{"pid":1,"tid":12,"id":91,"name":"lib task manager create aidl task","args":{"span_id":"91","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591419000,"dur":100},{"pid":1,"tid":12,"id":92,"name":"lib task manager create shader task","args":{"span_id":"92","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591419000,"dur":2000},{"pid":1,"tid":12,"id":93,"name":"lib task manager create compile task","args":{"span_id":"93","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591421000,"dur":1000},{"pid":1,"tid":12,"id":94,"name":"lib task manager create ndk task","args":{"span_id":"94","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591422000,"dur":100},{"pid":1,"tid":12,"id":95,"name":"lib task manager create external native build task","args":{"span_id":"95","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591422000,"dur":100},{"pid":1,"tid":12,"id":96,"name":"lib task manager create packaging task","args":{"span_id":"96","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591423000,"dur":1000},{"pid":1,"tid":12,"id":97,"name":"lib task manager create merge proguard file task","args":{"span_id":"97","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591424000,"dur":100},{"pid":1,"tid":12,"id":98,"name":"lib task manager create post compilation task","args":{"span_id":"98","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591425000,"dur":2000},{"pid":1,"tid":12,"id":99,"name":"lib task manager create lint task","args":{"span_id":"99","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591427000,"dur":1000},{"pid":1,"tid":12,"id":83,"name":"variant manager create tasks for variant","args":{"span_id":"83","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591411000,"dur":17000},{"pid":1,"tid":12,"id":100,"name":"variant manager create tasks for variant","args":{"span_id":"100","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591428000,"dur":12000},{"pid":1,"tid":12,"id":102,"name":"lib task manager create generate res values task","args":{"span_id":"102","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591441000,"dur":1000},{"pid":1,"tid":12,"id":103,"name":"lib task manager create merge manifest task","args":{"span_id":"103","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591442000,"dur":100},{"pid":1,"tid":12,"id":104,"name":"lib task manager create create renderscript task","args":{"span_id":"104","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591442000,"dur":100},{"pid":1,"tid":12,"id":105,"name":"lib task manager create merge resources task","args":{"span_id":"105","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591442000,"dur":2000},{"pid":1,"tid":12,"id":106,"name":"lib task manager create merge assets task","args":{"span_id":"106","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591444000,"dur":100},{"pid":1,"tid":12,"id":107,"name":"lib task manager create build config task","args":{"span_id":"107","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591444000,"dur":1000},{"pid":1,"tid":12,"id":108,"name":"lib task manager create process res task","args":{"span_id":"108","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591445000,"dur":1000},{"pid":1,"tid":12,"id":109,"name":"lib task manager create aidl task","args":{"span_id":"109","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591446000,"dur":1000},{"pid":1,"tid":12,"id":110,"name":"lib task manager create shader task","args":{"span_id":"110","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591447000,"dur":100},{"pid":1,"tid":12,"id":111,"name":"lib task manager create compile task","args":{"span_id":"111","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591447000,"dur":2000},{"pid":1,"tid":12,"id":112,"name":"lib task manager create ndk task","args":{"span_id":"112","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591449000,"dur":100},{"pid":1,"tid":12,"id":113,"name":"lib task manager create external native build task","args":{"span_id":"113","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591450000,"dur":100},{"pid":1,"tid":12,"id":114,"name":"lib task manager create packaging task","args":{"span_id":"114","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591451000,"dur":1000},{"pid":1,"tid":12,"id":115,"name":"lib task manager create merge proguard file task","args":{"span_id":"115","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591452000,"dur":100},{"pid":1,"tid":12,"id":116,"name":"lib task manager create post compilation task","args":{"span_id":"116","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591453000,"dur":2000},{"pid":1,"tid":12,"id":117,"name":"lib task manager create lint task","args":{"span_id":"117","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591455000,"dur":100},{"pid":1,"tid":12,"id":101,"name":"variant manager create tasks for variant","args":{"span_id":"101","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433591441000,"dur":14000},{"pid":1,"tid":12,"id":118,"name":"variant manager create tasks for variant","args":{"span_id":"118","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591455000,"dur":5000},{"pid":1,"tid":12,"id":119,"name":"variant manager create tasks for variant","args":{"span_id":"119","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591460000,"dur":29000},{"pid":1,"tid":12,"id":80,"name":"variant manager create android tasks","args":{"span_id":"80","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591401000,"dur":89000},{"pid":1,"tid":12,"id":120,"name":"variant manager external native config values","args":{"span_id":"120","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591490000,"dur":100},{"pid":1,"tid":12,"id":79,"name":"base plugin create android tasks","args":{"span_id":"79","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433591399000,"dur":91000},{"pid":1,"tid":0,"id":121,"name":"task: build info loader","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 7\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591667000,"dur":3000},{"pid":1,"tid":0,"id":122,"name":"task: merge source set folders","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591672000,"dur":20000},{"pid":1,"tid":0,"id":123,"name":"task: shader compile","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591693000,"dur":5000},{"pid":1,"tid":0,"id":124,"name":"task: unknown task type","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591701000,"dur":1000},{"pid":1,"tid":0,"id":125,"name":"task: merge source set folders","args":{"span_id":"125","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591703000,"dur":12000},{"pid":1,"tid":0,"id":126,"name":"task: shader compile","args":{"span_id":"126","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591716000,"dur":2000},{"pid":1,"tid":0,"id":127,"name":"task: unknown task type","args":{"span_id":"127","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591719000,"dur":100},{"pid":1,"tid":0,"id":128,"name":"task: merge source set folders","args":{"span_id":"128","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591720000,"dur":58000},{"pid":1,"tid":0,"id":129,"name":"task: merge source set folders","args":{"span_id":"129","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591783000,"dur":6000},{"pid":1,"tid":0,"id":130,"name":"task: shader compile","args":{"span_id":"130","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591790000,"dur":4000},{"pid":1,"tid":0,"id":131,"name":"task: unknown task type","args":{"span_id":"131","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591794000,"dur":100},{"pid":1,"tid":0,"id":132,"name":"task: merge source set folders","args":{"span_id":"132","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591795000,"dur":7000},{"pid":1,"tid":0,"id":133,"name":"task: merge source set folders","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433591805000,"dur":738000},{"pid":1,"tid":0,"id":134,"name":"task: unknown task type","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592543000,"dur":1000},{"pid":1,"tid":0,"id":135,"name":"task: unknown task type","args":{"span_id":"135","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592544000,"dur":100},{"pid":1,"tid":0,"id":136,"name":"task: unknown task type","args":{"span_id":"136","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592545000,"dur":100},{"pid":1,"tid":0,"id":137,"name":"task: check manifest","args":{"span_id":"137","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592546000,"dur":2000},{"pid":1,"tid":0,"id":138,"name":"task: process manifest","args":{"span_id":"138","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592550000,"dur":3000},{"pid":1,"tid":0,"id":139,"name":"task: unknown task type","args":{"span_id":"139","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592553000,"dur":1000},{"pid":1,"tid":0,"id":140,"name":"task: unknown task type","args":{"span_id":"140","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592554000,"dur":100},{"pid":1,"tid":0,"id":141,"name":"task: check manifest","args":{"span_id":"141","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592555000,"dur":1000},{"pid":1,"tid":0,"id":142,"name":"task: process manifest","args":{"span_id":"142","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592557000,"dur":3000},{"pid":1,"tid":0,"id":143,"name":"task: app pre build","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592561000,"dur":31000},{"pid":1,"tid":0,"id":144,"name":"task: check manifest","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592603000,"dur":1000},{"pid":1,"tid":0,"id":145,"name":"task: compatible screens manifest","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592604000,"dur":2000},{"pid":1,"tid":0,"id":146,"name":"task: merge manifests","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433592607000,"dur":165000},{"pid":1,"tid":0,"id":147,"name":"task: unknown task type","args":{"span_id":"147","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433592774000,"dur":1000},{"pid":1,"tid":0,"id":148,"name":"task: unknown task type","args":{"span_id":"148","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433592776000,"dur":1000},{"pid":1,"tid":0,"id":149,"name":"task: renderscript compile","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592778000,"dur":31000},{"pid":1,"tid":0,"id":150,"name":"task: generate res values","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592812000,"dur":100},{"pid":1,"tid":0,"id":151,"name":"task: unknown task type","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592815000,"dur":1000},{"pid":1,"tid":0,"id":152,"name":"task: renderscript compile","args":{"span_id":"152","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592817000,"dur":17000},{"pid":1,"tid":0,"id":153,"name":"task: generate res values","args":{"span_id":"153","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592835000,"dur":2000},{"pid":1,"tid":0,"id":154,"name":"task: unknown task type","args":{"span_id":"154","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592837000,"dur":1000},{"pid":1,"tid":0,"id":155,"name":"task: merge resources","args":{"span_id":"155","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592839000,"dur":18000},{"pid":1,"tid":0,"id":156,"name":"task: renderscript compile","args":{"span_id":"156","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592858000,"dur":84000},{"pid":1,"tid":0,"id":157,"name":"task: generate res values","args":{"span_id":"157","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592946000,"dur":1000},{"pid":1,"tid":0,"id":158,"name":"task: unknown task type","args":{"span_id":"158","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592948000,"dur":100},{"pid":1,"tid":0,"id":159,"name":"task: merge resources","args":{"span_id":"159","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592950000,"dur":3000},{"pid":1,"tid":0,"id":160,"name":"task: merge resources","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433592953000,"dur":235000},{"pid":1,"tid":0,"id":161,"name":"task: splits discovery","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433593189000,"dur":1000},{"pid":1,"tid":0,"id":162,"name":"task: platform attr extractor","args":{"span_id":"162","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433593191000,"dur":1000},{"pid":1,"tid":0,"id":163,"name":"task: platform attr extractor","args":{"span_id":"163","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433593193000,"dur":1000},{"pid":1,"tid":0,"id":164,"name":"task: process android resources","args":{"span_id":"164","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433593195000,"dur":167000},{"pid":1,"tid":0,"id":165,"name":"task: process android resources","args":{"span_id":"165","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433593369000,"dur":815000},{"pid":1,"tid":0,"id":166,"name":"task: process android resources","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: true\n"},"ph":"X","ts":1546433594186000,"dur":1231000},{"pid":1,"tid":0,"id":167,"name":"task: build info writer","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 70\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433595422000,"dur":2000},{"pid":1,"tid":12,"id":168,"name":"base plugin build finished","args":{"span_id":"168","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433595435000,"dur":100},{"pid":1,"tid":12,"id":169,"name":"base plugin build finished","args":{"span_id":"169","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433595435000,"dur":100},{"pid":1,"tid":12,"id":170,"name":"base plugin build finished","args":{"span_id":"170","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433595436000,"dur":100}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-53-15-453.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-53-15-453.rawproto deleted file mode 100644 index 5d51c0305ba49c604ff5c6321528f2f521ffe431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8167 zcmc(kYjjlA702h?$&f=x;U;9#BQ28=A6!A=%s^hWwb54F(o#}mD^yxd!i)J!{N;A`%}W1xtXEI!da0~v!m0a zMNdb^B}K9_&HopN!Ugg82U~m-=MI0|Gu1PD67{C~MrXoGrUl7}evxeWcVz4>l;|Yr zF+3qpE-BXNz-byC@*Ig10!Y(6pNhsM70sM7d)AXvMn$q8GNrYiNDsQXw2it+-%E*< zCO4_t16AK_{qy&+U2Qim#77OwrIq!~%|u_Z?!qkg)+!RbZA41afP%tcVM)=P=*%ag zx`%m2q$VXpXnfJ^rwX5qMoY~YNL)HEBs$7oJ5BWc+qaamKZAtPbBUL`gha!OO{PTq zR@V|$PKg~&+gwZ3NQsW62cU`_Z@ZURCncKdj++wix|i7Gl<4^FXCl!etEfEQe2(a? zM}?^)dv59(DG|R|(E$<%+)JGACb8SSL|5M>u1bmh@oIRG#uM(VXucxfkwaICL17&> z=SX;^9B&z6C$&#~&GOj?D3L=ux=Hl#Ma^d)Iu#bLmqqkap|!@n!f{6pttYL6=y45g z4uz)q?iJb{3h{dP3a9$4a7HSuI5Mw9?@bLI4uz(xuex?~@m1cGIdsRoKTXk_deIN{ zPKAZ;`(d?1p`p{g7rU>Cr&zJ`?P+@B<+ZNQ;jd1GmW{3z-s!VKn^b6OI5SOe-R-`H z(|uOx=(9rk|AZHnWtG$Qj>=80Px6I6E6nS&LakKT)3v^LPjS{#_)q5yea9B}=WszP zG;F{2St(qRHMHKCJF{0$@!#vBA13pAb|F!_SV+X*Jz5K&`X9lx z{yRwA-Sbbn1}V|7_VtxS-?_lO#2=+Ze&s6;@FHU)eRzybt5qg??50W6YIrxY*|*e1bc1*8G^jRc(v@B?^FZhl1p={5)& zA1UDT0QTaFAx4J+7=Ts;{f#aK+ybCe?s3TiewqY!TthqN82#m``{@vfiv>E5Yo;51 z`UQxWo#r-8=5a5&l&JS(EvR!)GpO{{PrnG@jWc`!F{a9R8tupSVS1ZpnDvO(8_Eu2 z@&IT^O-2Lk7)H&86j477>KW`j#uK3-t!yQlAftYIn?8(Hoa2R1Xh=)tc8I@(akC*s zJe}UD-@&Rd?lJx`2!LqF;Wi+~egzl+mf;Fw98kbr0G3Peo&rVysFr&iRKQ3T{8IsU z1E|3j1C4(vU=)B2QtFTbGHpPN76se`V56++umVB=Hc6@X6%bazF$F{bG)k!>3K$Jw zvy?ijfH45JA@CXhRzMbj-^mppTEI{50G}2ixE(rA*x{$y5El!4JT5viSI=QPF`uA+ zyoJ+g9)RCV!2J_oEP!2dYwn)_U$Ox)xPJnC8NeT;6!%YnuK;*cN^$=LxYq`$=$`;z z1+W)a_zdo!0QmsklY4Og1h@~tK?Gid`zOHt01nB`xqkwDO$FRP0lp64u-t?DC%^*$ z-bbJr+&=*x1aL%d&ixbM8vvT+=G;FH{4@uAdIN#MeG>6+LR>5`Cykb$fRpB15I=|c zck;LoC(SVZR{0)R5tuaAi#!fMO$UF$JuqoRJdNJU%21}7z@!o3!Svf~7bd5{r18p0 z^BuMqqbV?HMAT2etB+^R7}sFZSlLQ6K}P-bdwKzD$82-bSSk-e{5-}9Od1hSrw{9e ztV_mW(s<>h`96RP2t4MbvA_>(z$c9b9szJsN1TKwnPeX z|HQlS1c0Rognt4|RRK&IZ@vIe+CVcWjRmFwSSF>oe`3W`HXsJ~Pk`wFmdmQRe*(+^ zP%Q!XPk@;KYUCc=KLKXhKr<(eRaGf~TDgMzCszCfz)A_Ye*(+~P$xI%{t56jfO@%t z`zOFp0jxqG{1f0A0Bht5?jHw!8U>$(9|O5hB0dM=VuAUS!Ye1uvk+g8LPL3+PZ~ch z&?m4q?6pZSXsq}6If%a{H=ZivgXsiz60;wLIU}-%(x0&|eytz$8UxMmt8qy*Q76n} z{=uW145iPr%gEC#ewWIB&KB}p)1c4dIV%4JTaKJ??g4#|`S%2=|4W9q@xf%^@KY1G zL;qK7J+9X*?$G}=!+UhlGuL<1570PajVLhI5>Pe>&@#A+#e{y40B@7Cf&eWi>?|fE zSP4oA0a`&A-e2|@-b#Xd$QBS7a7hF8l$=Q+Y( zgG`?SbUqOm$K4LXN~k2_UifAS3kYlBSB*jYs3}-wDZEJ72~0411-%-hCcH!#UfS{^ z?SrrsUM39hWV@Y|m9UU7ymA!^rWuYJ77>Ows=Qy(Ek_Nn5Y~xBW@WO|jqhQ1C4uMWZY?8h zkDZ{Nlt@@k*xxY0evE9phybl73@-xtQDT)t)Px$s&e>bQZ!n@Ot+QSMCxr2))6)z6;iD&47JF5!d7C!!;pY>I%-%2?-nMQM~w-N z8dejAS7&l zCu9aOhr}krR`Y8arL`ZlH%X(7gl)wHkKvQQ_NLLzjcY218_N0tN;K2 diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-54-49-885.json b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-54-49-885.json deleted file mode 100644 index f800400..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-54-49-885.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1546433648964000,"args":{"JVM stats":"heap_memory_usage: 341604480\nnon_heap_memory_usage: 235664952\nloaded_class_count: 20172\nthread_count: 35\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649383000,"args":{"JVM stats":"heap_memory_usage: 368875128\nnon_heap_memory_usage: 236385256\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649388000,"args":{"JVM stats":"heap_memory_usage: 369137016\nnon_heap_memory_usage: 236390632\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649390000,"args":{"JVM stats":"heap_memory_usage: 369137016\nnon_heap_memory_usage: 236386664\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649391000,"args":{"JVM stats":"heap_memory_usage: 369137016\nnon_heap_memory_usage: 236386664\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649394000,"args":{"JVM stats":"heap_memory_usage: 369137016\nnon_heap_memory_usage: 236386664\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649397000,"args":{"JVM stats":"heap_memory_usage: 369398752\nnon_heap_memory_usage: 236398056\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649398000,"args":{"JVM stats":"heap_memory_usage: 369398752\nnon_heap_memory_usage: 236398056\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649403000,"args":{"JVM stats":"heap_memory_usage: 369398752\nnon_heap_memory_usage: 236403496\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649405000,"args":{"JVM stats":"heap_memory_usage: 369398752\nnon_heap_memory_usage: 236404200\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649407000,"args":{"JVM stats":"heap_memory_usage: 369660520\nnon_heap_memory_usage: 236404200\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649408000,"args":{"JVM stats":"heap_memory_usage: 369660520\nnon_heap_memory_usage: 236404200\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649411000,"args":{"JVM stats":"heap_memory_usage: 369660520\nnon_heap_memory_usage: 236408680\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649593000,"args":{"JVM stats":"heap_memory_usage: 384094704\nnon_heap_memory_usage: 236515016\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649594000,"args":{"JVM stats":"heap_memory_usage: 384094704\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649594001,"args":{"JVM stats":"heap_memory_usage: 384094704\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649594000,"args":{"JVM stats":"heap_memory_usage: 384094704\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649595000,"args":{"JVM stats":"heap_memory_usage: 384094704\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649598000,"args":{"JVM stats":"heap_memory_usage: 384356440\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649598001,"args":{"JVM stats":"heap_memory_usage: 384356440\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649599000,"args":{"JVM stats":"heap_memory_usage: 384356440\nnon_heap_memory_usage: 236516360\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649601000,"args":{"JVM stats":"heap_memory_usage: 384356440\nnon_heap_memory_usage: 236527752\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649605000,"args":{"JVM stats":"heap_memory_usage: 384356440\nnon_heap_memory_usage: 236516936\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649632000,"args":{"JVM stats":"heap_memory_usage: 387238112\nnon_heap_memory_usage: 236524872\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649633000,"args":{"JVM stats":"heap_memory_usage: 387238112\nnon_heap_memory_usage: 236524872\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649635000,"args":{"JVM stats":"heap_memory_usage: 387238112\nnon_heap_memory_usage: 236524872\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649647000,"args":{"JVM stats":"heap_memory_usage: 388023416\nnon_heap_memory_usage: 236540648\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649648000,"args":{"JVM stats":"heap_memory_usage: 388023416\nnon_heap_memory_usage: 236545576\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649649000,"args":{"JVM stats":"heap_memory_usage: 388023416\nnon_heap_memory_usage: 236547000\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649661000,"args":{"JVM stats":"heap_memory_usage: 389070520\nnon_heap_memory_usage: 236569336\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649662000,"args":{"JVM stats":"heap_memory_usage: 389332280\nnon_heap_memory_usage: 236579896\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649663000,"args":{"JVM stats":"heap_memory_usage: 389334536\nnon_heap_memory_usage: 236579896\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649694000,"args":{"JVM stats":"heap_memory_usage: 391167928\nnon_heap_memory_usage: 236611112\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649696000,"args":{"JVM stats":"heap_memory_usage: 391167928\nnon_heap_memory_usage: 236611112\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649696001,"args":{"JVM stats":"heap_memory_usage: 391167928\nnon_heap_memory_usage: 236611112\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649710000,"args":{"JVM stats":"heap_memory_usage: 391691704\nnon_heap_memory_usage: 236617832\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649775000,"args":{"JVM stats":"heap_memory_usage: 394842520\nnon_heap_memory_usage: 236643368\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649776000,"args":{"JVM stats":"heap_memory_usage: 394842520\nnon_heap_memory_usage: 236637992\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649777000,"args":{"JVM stats":"heap_memory_usage: 394842520\nnon_heap_memory_usage: 236637992\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433649779000,"args":{"JVM stats":"heap_memory_usage: 395104256\nnon_heap_memory_usage: 236637992\nloaded_class_count: 20191\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433650491000,"args":{"JVM stats":"heap_memory_usage: 434149928\nnon_heap_memory_usage: 237191432\nloaded_class_count: 20193\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433650495000,"args":{"JVM stats":"heap_memory_usage: 434149928\nnon_heap_memory_usage: 237191432\nloaded_class_count: 20193\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433650503000,"args":{"JVM stats":"heap_memory_usage: 434411696\nnon_heap_memory_usage: 237191432\nloaded_class_count: 20193\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433650505000,"args":{"JVM stats":"heap_memory_usage: 434411696\nnon_heap_memory_usage: 237191432\nloaded_class_count: 20193\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433650521000,"args":{"JVM stats":"heap_memory_usage: 435764368\nnon_heap_memory_usage: 237139248\nloaded_class_count: 20193\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433650640000,"args":{"JVM stats":"heap_memory_usage: 438661360\nnon_heap_memory_usage: 236870384\nloaded_class_count: 20193\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433652735000,"args":{"JVM stats":"heap_memory_usage: 479500384\nnon_heap_memory_usage: 237015912\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653310000,"args":{"JVM stats":"heap_memory_usage: 298852488\nnon_heap_memory_usage: 236986936\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 2\n gc_time: 221\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653322000,"args":{"JVM stats":"heap_memory_usage: 302225160\nnon_heap_memory_usage: 236986936\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653330000,"args":{"JVM stats":"heap_memory_usage: 302857752\nnon_heap_memory_usage: 236986936\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653338000,"args":{"JVM stats":"heap_memory_usage: 303779592\nnon_heap_memory_usage: 236988984\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653339000,"args":{"JVM stats":"heap_memory_usage: 303779592\nnon_heap_memory_usage: 236984696\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653341000,"args":{"JVM stats":"heap_memory_usage: 303916144\nnon_heap_memory_usage: 236980472\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653341001,"args":{"JVM stats":"heap_memory_usage: 303916144\nnon_heap_memory_usage: 236976504\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653342000,"args":{"JVM stats":"heap_memory_usage: 303916144\nnon_heap_memory_usage: 236978680\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653344000,"args":{"JVM stats":"heap_memory_usage: 304052736\nnon_heap_memory_usage: 236978680\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653344001,"args":{"JVM stats":"heap_memory_usage: 304052736\nnon_heap_memory_usage: 236978680\nloaded_class_count: 20193\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433653419000,"args":{"JVM stats":"heap_memory_usage: 307515272\nnon_heap_memory_usage: 236983264\nloaded_class_count: 20198\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433657430000,"args":{"JVM stats":"heap_memory_usage: 387719736\nnon_heap_memory_usage: 250195768\nloaded_class_count: 21496\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433657433000,"args":{"JVM stats":"heap_memory_usage: 387822608\nnon_heap_memory_usage: 250195768\nloaded_class_count: 21496\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433657434000,"args":{"JVM stats":"heap_memory_usage: 387822608\nnon_heap_memory_usage: 250195768\nloaded_class_count: 21496\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433657434001,"args":{"JVM stats":"heap_memory_usage: 387822608\nnon_heap_memory_usage: 250195768\nloaded_class_count: 21496\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433657458000,"args":{"JVM stats":"heap_memory_usage: 388344528\nnon_heap_memory_usage: 250197176\nloaded_class_count: 21496\nthread_count: 38\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433658191000,"args":{"JVM stats":"heap_memory_usage: 425307528\nnon_heap_memory_usage: 250140288\nloaded_class_count: 21497\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433658193000,"args":{"JVM stats":"heap_memory_usage: 426099880\nnon_heap_memory_usage: 250140288\nloaded_class_count: 21497\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433658219000,"args":{"JVM stats":"heap_memory_usage: 427498264\nnon_heap_memory_usage: 250147064\nloaded_class_count: 21497\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433658344000,"args":{"JVM stats":"heap_memory_usage: 432207088\nnon_heap_memory_usage: 250170488\nloaded_class_count: 21497\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433665326000,"args":{"JVM stats":"heap_memory_usage: 402229624\nnon_heap_memory_usage: 255285448\nloaded_class_count: 21847\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 428\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433665328000,"args":{"JVM stats":"heap_memory_usage: 406231240\nnon_heap_memory_usage: 255285448\nloaded_class_count: 21847\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433665413000,"args":{"JVM stats":"heap_memory_usage: 411884720\nnon_heap_memory_usage: 255285448\nloaded_class_count: 21847\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433665520000,"args":{"JVM stats":"heap_memory_usage: 415232856\nnon_heap_memory_usage: 255285448\nloaded_class_count: 21847\nthread_count: 41\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433670337000,"args":{"JVM stats":"heap_memory_usage: 410532160\nnon_heap_memory_usage: 256890880\nloaded_class_count: 21973\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 240\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433670345000,"args":{"JVM stats":"heap_memory_usage: 414694128\nnon_heap_memory_usage: 256890880\nloaded_class_count: 21973\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433670429000,"args":{"JVM stats":"heap_memory_usage: 421264408\nnon_heap_memory_usage: 256936032\nloaded_class_count: 21974\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671147000,"args":{"JVM stats":"heap_memory_usage: 451259576\nnon_heap_memory_usage: 256315776\nloaded_class_count: 21975\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671163000,"args":{"JVM stats":"heap_memory_usage: 454659112\nnon_heap_memory_usage: 256315776\nloaded_class_count: 21975\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671166000,"args":{"JVM stats":"heap_memory_usage: 454659112\nnon_heap_memory_usage: 256315808\nloaded_class_count: 21975\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671175000,"args":{"JVM stats":"heap_memory_usage: 454667336\nnon_heap_memory_usage: 256325856\nloaded_class_count: 21975\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671176000,"args":{"JVM stats":"heap_memory_usage: 454775240\nnon_heap_memory_usage: 256325856\nloaded_class_count: 21975\nthread_count: 40\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671235000,"args":{"JVM stats":"heap_memory_usage: 457072384\nnon_heap_memory_usage: 256382176\nloaded_class_count: 21975\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671268000,"args":{"JVM stats":"heap_memory_usage: 457373232\nnon_heap_memory_usage: 256471440\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671296000,"args":{"JVM stats":"heap_memory_usage: 457429216\nnon_heap_memory_usage: 256471440\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671298000,"args":{"JVM stats":"heap_memory_usage: 457537096\nnon_heap_memory_usage: 256471440\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671303000,"args":{"JVM stats":"heap_memory_usage: 457537096\nnon_heap_memory_usage: 256471440\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671312000,"args":{"JVM stats":"heap_memory_usage: 457644952\nnon_heap_memory_usage: 256472368\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671317000,"args":{"JVM stats":"heap_memory_usage: 457765184\nnon_heap_memory_usage: 256477808\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671954000,"args":{"JVM stats":"heap_memory_usage: 559329272\nnon_heap_memory_usage: 256687360\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433671956000,"args":{"JVM stats":"heap_memory_usage: 559428984\nnon_heap_memory_usage: 256687360\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433672811000,"args":{"JVM stats":"heap_memory_usage: 350236808\nnon_heap_memory_usage: 257005640\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 91\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433672818000,"args":{"JVM stats":"heap_memory_usage: 353846464\nnon_heap_memory_usage: 257022776\nloaded_class_count: 21976\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674134000,"args":{"JVM stats":"heap_memory_usage: 276473664\nnon_heap_memory_usage: 258085360\nloaded_class_count: 21990\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 61\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674140000,"args":{"JVM stats":"heap_memory_usage: 280469544\nnon_heap_memory_usage: 258086256\nloaded_class_count: 21990\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674141000,"args":{"JVM stats":"heap_memory_usage: 280701608\nnon_heap_memory_usage: 258086256\nloaded_class_count: 21990\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674142000,"args":{"JVM stats":"heap_memory_usage: 280904784\nnon_heap_memory_usage: 258086256\nloaded_class_count: 21990\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674162000,"args":{"JVM stats":"heap_memory_usage: 280956664\nnon_heap_memory_usage: 258090744\nloaded_class_count: 21991\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674168000,"args":{"JVM stats":"heap_memory_usage: 281031592\nnon_heap_memory_usage: 258090776\nloaded_class_count: 21991\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433674864000,"args":{"JVM stats":"heap_memory_usage: 312220312\nnon_heap_memory_usage: 258285536\nloaded_class_count: 21991\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433683272000,"args":{"JVM stats":"heap_memory_usage: 341967848\nnon_heap_memory_usage: 259707984\nloaded_class_count: 21992\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 7\n gc_time: 531\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433686906000,"args":{"JVM stats":"heap_memory_usage: 393580304\nnon_heap_memory_usage: 260937520\nloaded_class_count: 21993\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 3\n gc_time: 487\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433687479000,"args":{"JVM stats":"heap_memory_usage: 486521296\nnon_heap_memory_usage: 261229408\nloaded_class_count: 21995\nthread_count: 45\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 77\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433687480000,"args":{"JVM stats":"heap_memory_usage: 488930160\nnon_heap_memory_usage: 261229408\nloaded_class_count: 21995\nthread_count: 45\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433688471000,"args":{"JVM stats":"heap_memory_usage: 564582424\nnon_heap_memory_usage: 261338504\nloaded_class_count: 21995\nthread_count: 46\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433689250000,"args":{"JVM stats":"heap_memory_usage: 449378072\nnon_heap_memory_usage: 261097784\nloaded_class_count: 21997\nthread_count: 51\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 76\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433689838000,"args":{"JVM stats":"heap_memory_usage: 406007512\nnon_heap_memory_usage: 259896896\nloaded_class_count: 21997\nthread_count: 45\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 3\n gc_time: 158\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433689843000,"args":{"JVM stats":"heap_memory_usage: 407092736\nnon_heap_memory_usage: 259904384\nloaded_class_count: 21997\nthread_count: 45\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433689844000,"args":{"JVM stats":"heap_memory_usage: 407092736\nnon_heap_memory_usage: 259904384\nloaded_class_count: 21997\nthread_count: 45\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433689844001,"args":{"JVM stats":"heap_memory_usage: 407092736\nnon_heap_memory_usage: 259904384\nloaded_class_count: 21997\nthread_count: 45\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433689886000,"args":{"JVM stats":"heap_memory_usage: 408978312\nnon_heap_memory_usage: 259941776\nloaded_class_count: 22010\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":12,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433648964000,"dur":9000},{"pid":1,"tid":12,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433648973000,"dur":9000},{"pid":1,"tid":12,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433648982000,"dur":2000},{"pid":1,"tid":12,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433648982000,"dur":2000},{"pid":1,"tid":12,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649016000,"dur":14000},{"pid":1,"tid":12,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649030000,"dur":4000},{"pid":1,"tid":12,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649037000,"dur":3000},{"pid":1,"tid":12,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649040000,"dur":100},{"pid":1,"tid":12,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649040000,"dur":1000},{"pid":1,"tid":12,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649041000,"dur":3000},{"pid":1,"tid":12,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649044000,"dur":1000},{"pid":1,"tid":12,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649045000,"dur":1000},{"pid":1,"tid":12,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649046000,"dur":6000},{"pid":1,"tid":12,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649052000,"dur":100},{"pid":1,"tid":12,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649052000,"dur":3000},{"pid":1,"tid":12,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649055000,"dur":5000},{"pid":1,"tid":12,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649061000,"dur":100},{"pid":1,"tid":12,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649061000,"dur":6000},{"pid":1,"tid":12,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649067000,"dur":24000},{"pid":1,"tid":12,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649091000,"dur":8000},{"pid":1,"tid":12,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649099000,"dur":1000},{"pid":1,"tid":12,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649034000,"dur":66000},{"pid":1,"tid":12,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649100000,"dur":6000},{"pid":1,"tid":12,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649106000,"dur":11000},{"pid":1,"tid":12,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649015000,"dur":104000},{"pid":1,"tid":12,"id":28,"name":"variant manager external native config values","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649120000,"dur":100},{"pid":1,"tid":12,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649011000,"dur":109000},{"pid":1,"tid":12,"id":29,"name":"base plugin project configure","args":{"span_id":"29","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649127000,"dur":6000},{"pid":1,"tid":12,"id":30,"name":"base plugin project base extension creation","args":{"span_id":"30","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649133000,"dur":11000},{"pid":1,"tid":12,"id":32,"name":"task manager create tasks","args":{"span_id":"32","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649144000,"dur":1000},{"pid":1,"tid":12,"id":31,"name":"base plugin project tasks creation","args":{"span_id":"31","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649144000,"dur":1000},{"pid":1,"tid":12,"id":35,"name":"variant manager create variants","args":{"span_id":"35","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649160000,"dur":4000},{"pid":1,"tid":12,"id":36,"name":"variant manager create tests tasks","args":{"span_id":"36","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649164000,"dur":100},{"pid":1,"tid":12,"id":38,"name":"lib task manager create generate res values task","args":{"span_id":"38","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649165000,"dur":100},{"pid":1,"tid":12,"id":39,"name":"lib task manager create merge manifest task","args":{"span_id":"39","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649165000,"dur":1000},{"pid":1,"tid":12,"id":40,"name":"lib task manager create create renderscript task","args":{"span_id":"40","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649166000,"dur":1000},{"pid":1,"tid":12,"id":41,"name":"lib task manager create merge resources task","args":{"span_id":"41","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649167000,"dur":100},{"pid":1,"tid":12,"id":42,"name":"lib task manager create merge assets task","args":{"span_id":"42","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649167000,"dur":100},{"pid":1,"tid":12,"id":43,"name":"lib task manager create build config task","args":{"span_id":"43","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649167000,"dur":100},{"pid":1,"tid":12,"id":44,"name":"lib task manager create process res task","args":{"span_id":"44","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649167000,"dur":4000},{"pid":1,"tid":12,"id":45,"name":"lib task manager create aidl task","args":{"span_id":"45","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649171000,"dur":1000},{"pid":1,"tid":12,"id":46,"name":"lib task manager create shader task","args":{"span_id":"46","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649172000,"dur":100},{"pid":1,"tid":12,"id":47,"name":"lib task manager create compile task","args":{"span_id":"47","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649172000,"dur":3000},{"pid":1,"tid":12,"id":48,"name":"lib task manager create ndk task","args":{"span_id":"48","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649175000,"dur":100},{"pid":1,"tid":12,"id":49,"name":"lib task manager create external native build task","args":{"span_id":"49","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649175000,"dur":100},{"pid":1,"tid":12,"id":50,"name":"lib task manager create packaging task","args":{"span_id":"50","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649175000,"dur":4000},{"pid":1,"tid":12,"id":51,"name":"lib task manager create merge proguard file task","args":{"span_id":"51","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649179000,"dur":100},{"pid":1,"tid":12,"id":52,"name":"lib task manager create post compilation task","args":{"span_id":"52","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649181000,"dur":7000},{"pid":1,"tid":12,"id":53,"name":"lib task manager create lint task","args":{"span_id":"53","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649189000,"dur":100},{"pid":1,"tid":12,"id":37,"name":"variant manager create tasks for variant","args":{"span_id":"37","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649164000,"dur":25000},{"pid":1,"tid":12,"id":54,"name":"variant manager create tasks for variant","args":{"span_id":"54","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649189000,"dur":3000},{"pid":1,"tid":12,"id":56,"name":"lib task manager create generate res values task","args":{"span_id":"56","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649193000,"dur":100},{"pid":1,"tid":12,"id":57,"name":"lib task manager create merge manifest task","args":{"span_id":"57","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649193000,"dur":2000},{"pid":1,"tid":12,"id":58,"name":"lib task manager create create renderscript task","args":{"span_id":"58","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649195000,"dur":100},{"pid":1,"tid":12,"id":59,"name":"lib task manager create merge resources task","args":{"span_id":"59","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649195000,"dur":2000},{"pid":1,"tid":12,"id":60,"name":"lib task manager create merge assets task","args":{"span_id":"60","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649197000,"dur":100},{"pid":1,"tid":12,"id":61,"name":"lib task manager create build config task","args":{"span_id":"61","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649197000,"dur":1000},{"pid":1,"tid":12,"id":62,"name":"lib task manager create process res task","args":{"span_id":"62","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649199000,"dur":2000},{"pid":1,"tid":12,"id":63,"name":"lib task manager create aidl task","args":{"span_id":"63","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649201000,"dur":1000},{"pid":1,"tid":12,"id":64,"name":"lib task manager create shader task","args":{"span_id":"64","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649202000,"dur":100},{"pid":1,"tid":12,"id":65,"name":"lib task manager create compile task","args":{"span_id":"65","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649202000,"dur":1000},{"pid":1,"tid":12,"id":66,"name":"lib task manager create ndk task","args":{"span_id":"66","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649203000,"dur":100},{"pid":1,"tid":12,"id":67,"name":"lib task manager create external native build task","args":{"span_id":"67","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649203000,"dur":100},{"pid":1,"tid":12,"id":68,"name":"lib task manager create packaging task","args":{"span_id":"68","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649204000,"dur":100},{"pid":1,"tid":12,"id":69,"name":"lib task manager create merge proguard file task","args":{"span_id":"69","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649204000,"dur":100},{"pid":1,"tid":12,"id":70,"name":"lib task manager create post compilation task","args":{"span_id":"70","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649205000,"dur":1000},{"pid":1,"tid":12,"id":71,"name":"lib task manager create lint task","args":{"span_id":"71","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649206000,"dur":100},{"pid":1,"tid":12,"id":55,"name":"variant manager create tasks for variant","args":{"span_id":"55","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649192000,"dur":14000},{"pid":1,"tid":12,"id":72,"name":"variant manager create tasks for variant","args":{"span_id":"72","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649206000,"dur":4000},{"pid":1,"tid":12,"id":73,"name":"variant manager create tasks for variant","args":{"span_id":"73","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649210000,"dur":10000},{"pid":1,"tid":12,"id":34,"name":"variant manager create android tasks","args":{"span_id":"34","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649160000,"dur":61000},{"pid":1,"tid":12,"id":74,"name":"variant manager external native config values","args":{"span_id":"74","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649221000,"dur":100},{"pid":1,"tid":12,"id":33,"name":"base plugin create android tasks","args":{"span_id":"33","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649159000,"dur":62000},{"pid":1,"tid":12,"id":75,"name":"base plugin project configure","args":{"span_id":"75","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649236000,"dur":5000},{"pid":1,"tid":12,"id":76,"name":"base plugin project base extension creation","args":{"span_id":"76","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649241000,"dur":5000},{"pid":1,"tid":12,"id":78,"name":"task manager create tasks","args":{"span_id":"78","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649246000,"dur":1000},{"pid":1,"tid":12,"id":77,"name":"base plugin project tasks creation","args":{"span_id":"77","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649246000,"dur":1000},{"pid":1,"tid":12,"id":81,"name":"variant manager create variants","args":{"span_id":"81","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649251000,"dur":4000},{"pid":1,"tid":12,"id":82,"name":"variant manager create tests tasks","args":{"span_id":"82","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649255000,"dur":1000},{"pid":1,"tid":12,"id":84,"name":"lib task manager create generate res values task","args":{"span_id":"84","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649256000,"dur":100},{"pid":1,"tid":12,"id":85,"name":"lib task manager create merge manifest task","args":{"span_id":"85","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649256000,"dur":1000},{"pid":1,"tid":12,"id":86,"name":"lib task manager create create renderscript task","args":{"span_id":"86","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649257000,"dur":100},{"pid":1,"tid":12,"id":87,"name":"lib task manager create merge resources task","args":{"span_id":"87","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649257000,"dur":100},{"pid":1,"tid":12,"id":88,"name":"lib task manager create merge assets task","args":{"span_id":"88","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649257000,"dur":1000},{"pid":1,"tid":12,"id":89,"name":"lib task manager create build config task","args":{"span_id":"89","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649258000,"dur":100},{"pid":1,"tid":12,"id":90,"name":"lib task manager create process res task","args":{"span_id":"90","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649258000,"dur":5000},{"pid":1,"tid":12,"id":91,"name":"lib task manager create aidl task","args":{"span_id":"91","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649263000,"dur":100},{"pid":1,"tid":12,"id":92,"name":"lib task manager create shader task","args":{"span_id":"92","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649263000,"dur":2000},{"pid":1,"tid":12,"id":93,"name":"lib task manager create compile task","args":{"span_id":"93","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649265000,"dur":1000},{"pid":1,"tid":12,"id":94,"name":"lib task manager create ndk task","args":{"span_id":"94","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649266000,"dur":100},{"pid":1,"tid":12,"id":95,"name":"lib task manager create external native build task","args":{"span_id":"95","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649266000,"dur":1000},{"pid":1,"tid":12,"id":96,"name":"lib task manager create packaging task","args":{"span_id":"96","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649267000,"dur":1000},{"pid":1,"tid":12,"id":97,"name":"lib task manager create merge proguard file task","args":{"span_id":"97","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649268000,"dur":100},{"pid":1,"tid":12,"id":98,"name":"lib task manager create post compilation task","args":{"span_id":"98","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649269000,"dur":2000},{"pid":1,"tid":12,"id":99,"name":"lib task manager create lint task","args":{"span_id":"99","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649271000,"dur":100},{"pid":1,"tid":12,"id":83,"name":"variant manager create tasks for variant","args":{"span_id":"83","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649256000,"dur":15000},{"pid":1,"tid":12,"id":100,"name":"variant manager create tasks for variant","args":{"span_id":"100","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649271000,"dur":4000},{"pid":1,"tid":12,"id":102,"name":"lib task manager create generate res values task","args":{"span_id":"102","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649275000,"dur":1000},{"pid":1,"tid":12,"id":103,"name":"lib task manager create merge manifest task","args":{"span_id":"103","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649276000,"dur":100},{"pid":1,"tid":12,"id":104,"name":"lib task manager create create renderscript task","args":{"span_id":"104","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649276000,"dur":1000},{"pid":1,"tid":12,"id":105,"name":"lib task manager create merge resources task","args":{"span_id":"105","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649277000,"dur":1000},{"pid":1,"tid":12,"id":106,"name":"lib task manager create merge assets task","args":{"span_id":"106","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649278000,"dur":100},{"pid":1,"tid":12,"id":107,"name":"lib task manager create build config task","args":{"span_id":"107","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649278000,"dur":100},{"pid":1,"tid":12,"id":108,"name":"lib task manager create process res task","args":{"span_id":"108","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649278000,"dur":3000},{"pid":1,"tid":12,"id":109,"name":"lib task manager create aidl task","args":{"span_id":"109","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649281000,"dur":100},{"pid":1,"tid":12,"id":110,"name":"lib task manager create shader task","args":{"span_id":"110","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649281000,"dur":100},{"pid":1,"tid":12,"id":111,"name":"lib task manager create compile task","args":{"span_id":"111","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649281000,"dur":1000},{"pid":1,"tid":12,"id":112,"name":"lib task manager create ndk task","args":{"span_id":"112","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649282000,"dur":100},{"pid":1,"tid":12,"id":113,"name":"lib task manager create external native build task","args":{"span_id":"113","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649282000,"dur":1000},{"pid":1,"tid":12,"id":114,"name":"lib task manager create packaging task","args":{"span_id":"114","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649283000,"dur":100},{"pid":1,"tid":12,"id":115,"name":"lib task manager create merge proguard file task","args":{"span_id":"115","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649283000,"dur":1000},{"pid":1,"tid":12,"id":116,"name":"lib task manager create post compilation task","args":{"span_id":"116","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649284000,"dur":2000},{"pid":1,"tid":12,"id":117,"name":"lib task manager create lint task","args":{"span_id":"117","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649287000,"dur":100},{"pid":1,"tid":12,"id":101,"name":"variant manager create tasks for variant","args":{"span_id":"101","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433649275000,"dur":12000},{"pid":1,"tid":12,"id":118,"name":"variant manager create tasks for variant","args":{"span_id":"118","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649287000,"dur":6000},{"pid":1,"tid":12,"id":119,"name":"variant manager create tasks for variant","args":{"span_id":"119","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649293000,"dur":13000},{"pid":1,"tid":12,"id":80,"name":"variant manager create android tasks","args":{"span_id":"80","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649251000,"dur":56000},{"pid":1,"tid":12,"id":120,"name":"variant manager external native config values","args":{"span_id":"120","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649307000,"dur":100},{"pid":1,"tid":12,"id":79,"name":"base plugin create android tasks","args":{"span_id":"79","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433649250000,"dur":57000},{"pid":1,"tid":0,"id":121,"name":"task: build info loader","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 7\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433649378000,"dur":5000},{"pid":1,"tid":0,"id":122,"name":"task: merge source set folders","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649384000,"dur":3000},{"pid":1,"tid":0,"id":123,"name":"task: shader compile","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649389000,"dur":1000},{"pid":1,"tid":0,"id":124,"name":"task: unknown task type","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649391000,"dur":100},{"pid":1,"tid":0,"id":125,"name":"task: merge source set folders","args":{"span_id":"125","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649392000,"dur":2000},{"pid":1,"tid":0,"id":126,"name":"task: shader compile","args":{"span_id":"126","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649396000,"dur":1000},{"pid":1,"tid":0,"id":127,"name":"task: unknown task type","args":{"span_id":"127","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649397000,"dur":1000},{"pid":1,"tid":0,"id":128,"name":"task: merge source set folders","args":{"span_id":"128","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649398000,"dur":5000},{"pid":1,"tid":0,"id":129,"name":"task: merge source set folders","args":{"span_id":"129","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649404000,"dur":1000},{"pid":1,"tid":0,"id":130,"name":"task: shader compile","args":{"span_id":"130","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649406000,"dur":1000},{"pid":1,"tid":0,"id":131,"name":"task: unknown task type","args":{"span_id":"131","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649408000,"dur":100},{"pid":1,"tid":0,"id":132,"name":"task: merge source set folders","args":{"span_id":"132","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649409000,"dur":2000},{"pid":1,"tid":0,"id":133,"name":"task: merge source set folders","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649412000,"dur":181000},{"pid":1,"tid":0,"id":134,"name":"task: unknown task type","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649593000,"dur":1000},{"pid":1,"tid":0,"id":135,"name":"task: unknown task type","args":{"span_id":"135","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649594000,"dur":100},{"pid":1,"tid":0,"id":136,"name":"task: unknown task type","args":{"span_id":"136","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649594000,"dur":100},{"pid":1,"tid":0,"id":137,"name":"task: check manifest","args":{"span_id":"137","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649595000,"dur":100},{"pid":1,"tid":0,"id":138,"name":"task: process manifest","args":{"span_id":"138","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649596000,"dur":1000},{"pid":1,"tid":0,"id":139,"name":"task: unknown task type","args":{"span_id":"139","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649598000,"dur":100},{"pid":1,"tid":0,"id":140,"name":"task: unknown task type","args":{"span_id":"140","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649599000,"dur":100},{"pid":1,"tid":0,"id":141,"name":"task: check manifest","args":{"span_id":"141","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649600000,"dur":1000},{"pid":1,"tid":0,"id":142,"name":"task: process manifest","args":{"span_id":"142","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649603000,"dur":2000},{"pid":1,"tid":0,"id":143,"name":"task: app pre build","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649605000,"dur":27000},{"pid":1,"tid":0,"id":144,"name":"task: check manifest","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649632000,"dur":1000},{"pid":1,"tid":0,"id":145,"name":"task: compatible screens manifest","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649634000,"dur":1000},{"pid":1,"tid":0,"id":146,"name":"task: merge manifests","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649636000,"dur":11000},{"pid":1,"tid":0,"id":147,"name":"task: unknown task type","args":{"span_id":"147","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433649647000,"dur":1000},{"pid":1,"tid":0,"id":148,"name":"task: unknown task type","args":{"span_id":"148","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433649648000,"dur":1000},{"pid":1,"tid":0,"id":149,"name":"task: renderscript compile","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649650000,"dur":11000},{"pid":1,"tid":0,"id":150,"name":"task: generate res values","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649661000,"dur":1000},{"pid":1,"tid":0,"id":151,"name":"task: unknown task type","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649662000,"dur":1000},{"pid":1,"tid":0,"id":152,"name":"task: renderscript compile","args":{"span_id":"152","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649664000,"dur":30000},{"pid":1,"tid":0,"id":153,"name":"task: generate res values","args":{"span_id":"153","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649695000,"dur":100},{"pid":1,"tid":0,"id":154,"name":"task: unknown task type","args":{"span_id":"154","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649696000,"dur":100},{"pid":1,"tid":0,"id":155,"name":"task: merge resources","args":{"span_id":"155","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649697000,"dur":13000},{"pid":1,"tid":0,"id":156,"name":"task: renderscript compile","args":{"span_id":"156","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649711000,"dur":64000},{"pid":1,"tid":0,"id":157,"name":"task: generate res values","args":{"span_id":"157","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649775000,"dur":1000},{"pid":1,"tid":0,"id":158,"name":"task: unknown task type","args":{"span_id":"158","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649776000,"dur":1000},{"pid":1,"tid":0,"id":159,"name":"task: merge resources","args":{"span_id":"159","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433649777000,"dur":2000},{"pid":1,"tid":0,"id":160,"name":"task: merge resources","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433649780000,"dur":711000},{"pid":1,"tid":0,"id":161,"name":"task: splits discovery","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433650494000,"dur":1000},{"pid":1,"tid":0,"id":162,"name":"task: platform attr extractor","args":{"span_id":"162","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433650502000,"dur":1000},{"pid":1,"tid":0,"id":163,"name":"task: platform attr extractor","args":{"span_id":"163","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433650504000,"dur":1000},{"pid":1,"tid":0,"id":164,"name":"task: process android resources","args":{"span_id":"164","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433650507000,"dur":14000},{"pid":1,"tid":0,"id":165,"name":"task: process android resources","args":{"span_id":"165","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433650522000,"dur":118000},{"pid":1,"tid":0,"id":166,"name":"task: process android resources","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433650641000,"dur":2094000},{"pid":1,"tid":0,"id":167,"name":"task: package application","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433652736000,"dur":574000},{"pid":1,"tid":0,"id":168,"name":"task: aidl compile","args":{"span_id":"168","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653316000,"dur":6000},{"pid":1,"tid":0,"id":169,"name":"task: aidl compile","args":{"span_id":"169","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653323000,"dur":7000},{"pid":1,"tid":0,"id":170,"name":"task: aidl compile","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653331000,"dur":7000},{"pid":1,"tid":0,"id":171,"name":"task: generate build config","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653338000,"dur":1000},{"pid":1,"tid":0,"id":172,"name":"task: prepare lint jar","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653340000,"dur":1000},{"pid":1,"tid":0,"id":173,"name":"task: unknown task type","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433653341000,"dur":100},{"pid":1,"tid":0,"id":174,"name":"task: generate build config","args":{"span_id":"174","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653341000,"dur":1000},{"pid":1,"tid":0,"id":175,"name":"task: prepare lint jar","args":{"span_id":"175","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653343000,"dur":1000},{"pid":1,"tid":0,"id":176,"name":"task: unknown task type","args":{"span_id":"176","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433653344000,"dur":100},{"pid":1,"tid":0,"id":177,"name":"task: unknown task type","args":{"span_id":"177","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433653345000,"dur":74000},{"pid":1,"tid":0,"id":178,"name":"task: unknown task type","args":{"span_id":"178","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433653424000,"dur":4006000},{"pid":1,"tid":0,"id":179,"name":"task: generate build config","args":{"span_id":"179","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433657431000,"dur":2000},{"pid":1,"tid":0,"id":180,"name":"task: prepare lint jar","args":{"span_id":"180","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433657433000,"dur":1000},{"pid":1,"tid":0,"id":181,"name":"task: unknown task type","args":{"span_id":"181","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433657434000,"dur":100},{"pid":1,"tid":0,"id":182,"name":"task: java pre compile","args":{"span_id":"182","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433657435000,"dur":23000},{"pid":1,"tid":0,"id":183,"name":"task: android java compile","args":{"span_id":"183","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433657462000,"dur":729000},{"pid":1,"tid":0,"id":184,"name":"task: unknown task type","args":{"span_id":"184","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433658191000,"dur":2000},{"pid":1,"tid":12,"id":186,"name":"transform prep: unknown transform type","args":{"span_id":"186","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: false\n"},"ph":"X","ts":1546433658197000,"dur":100},{"pid":1,"tid":12,"id":187,"name":"transform: unknown transform type","args":{"span_id":"187","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: false\n"},"ph":"X","ts":1546433658197000,"dur":14000},{"pid":1,"tid":0,"id":185,"name":"task: transform","args":{"span_id":"185","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433658195000,"dur":24000},{"pid":1,"tid":0,"id":188,"name":"task: java pre compile","args":{"span_id":"188","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433658220000,"dur":124000},{"pid":1,"tid":0,"id":189,"name":"task: android java compile","args":{"span_id":"189","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433658345000,"dur":6981000},{"pid":1,"tid":0,"id":190,"name":"task: unknown task type","args":{"span_id":"190","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433665327000,"dur":1000},{"pid":1,"tid":13,"id":192,"name":"transform prep: unknown transform type","args":{"span_id":"192","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: false\n"},"ph":"X","ts":1546433665333000,"dur":1000},{"pid":1,"tid":13,"id":193,"name":"transform: unknown transform type","args":{"span_id":"193","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: false\n"},"ph":"X","ts":1546433665334000,"dur":75000},{"pid":1,"tid":0,"id":191,"name":"task: transform","args":{"span_id":"191","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433665329000,"dur":84000},{"pid":1,"tid":0,"id":194,"name":"task: java pre compile","args":{"span_id":"194","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433665414000,"dur":105000},{"pid":1,"tid":0,"id":195,"name":"task: android java compile","args":{"span_id":"195","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433665520000,"dur":4817000},{"pid":1,"tid":0,"id":196,"name":"task: check manifest in instant run mode","args":{"span_id":"196","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 72\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433670338000,"dur":7000},{"pid":1,"tid":14,"id":198,"name":"transform prep: extract jars","args":{"span_id":"198","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 2\nis_incremental: false\n"},"ph":"X","ts":1546433670350000,"dur":100},{"pid":1,"tid":14,"id":199,"name":"transform: extract jars","args":{"span_id":"199","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 2\nis_incremental: false\n"},"ph":"X","ts":1546433670350000,"dur":57000},{"pid":1,"tid":0,"id":197,"name":"task: transform","args":{"span_id":"197","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433670346000,"dur":83000},{"pid":1,"tid":14,"id":201,"name":"transform prep: instant run verifier","args":{"span_id":"201","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 20\nis_incremental: false\n"},"ph":"X","ts":1546433670451000,"dur":1000},{"pid":1,"tid":14,"id":202,"name":"transform: instant run verifier","args":{"span_id":"202","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 20\nis_incremental: false\n"},"ph":"X","ts":1546433670452000,"dur":616000},{"pid":1,"tid":0,"id":200,"name":"task: transform","args":{"span_id":"200","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433670430000,"dur":717000},{"pid":1,"tid":0,"id":203,"name":"task: transform","args":{"span_id":"203","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433671147000,"dur":16000},{"pid":1,"tid":0,"id":204,"name":"task: ndk compile","args":{"span_id":"204","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671164000,"dur":2000},{"pid":1,"tid":0,"id":205,"name":"task: merge source set folders","args":{"span_id":"205","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671167000,"dur":8000},{"pid":1,"tid":0,"id":206,"name":"task: ndk compile","args":{"span_id":"206","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671176000,"dur":100},{"pid":1,"tid":0,"id":207,"name":"task: merge source set folders","args":{"span_id":"207","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671177000,"dur":58000},{"pid":1,"tid":13,"id":209,"name":"transform prep: merge java resources","args":{"span_id":"209","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671240000,"dur":1000},{"pid":1,"tid":13,"id":210,"name":"transform: merge java resources","args":{"span_id":"210","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671241000,"dur":14000},{"pid":1,"tid":0,"id":208,"name":"task: transform","args":{"span_id":"208","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671236000,"dur":32000},{"pid":1,"tid":12,"id":212,"name":"transform prep: library jni libs","args":{"span_id":"212","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 12\nis_incremental: false\n"},"ph":"X","ts":1546433671272000,"dur":100},{"pid":1,"tid":12,"id":213,"name":"transform: library jni libs","args":{"span_id":"213","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 12\nis_incremental: false\n"},"ph":"X","ts":1546433671272000,"dur":12000},{"pid":1,"tid":0,"id":211,"name":"task: transform","args":{"span_id":"211","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671269000,"dur":27000},{"pid":1,"tid":0,"id":214,"name":"task: ndk compile","args":{"span_id":"214","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671297000,"dur":1000},{"pid":1,"tid":0,"id":215,"name":"task: merge source set folders","args":{"span_id":"215","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671299000,"dur":4000},{"pid":1,"tid":12,"id":217,"name":"transform prep: merge java resources","args":{"span_id":"217","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671306000,"dur":1000},{"pid":1,"tid":12,"id":218,"name":"transform: merge java resources","args":{"span_id":"218","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671307000,"dur":4000},{"pid":1,"tid":0,"id":216,"name":"task: transform","args":{"span_id":"216","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671304000,"dur":8000},{"pid":1,"tid":12,"id":220,"name":"transform prep: library jni libs","args":{"span_id":"220","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 12\nis_incremental: false\n"},"ph":"X","ts":1546433671316000,"dur":100},{"pid":1,"tid":12,"id":221,"name":"transform: library jni libs","args":{"span_id":"221","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 12\nis_incremental: false\n"},"ph":"X","ts":1546433671316000,"dur":100},{"pid":1,"tid":0,"id":219,"name":"task: transform","args":{"span_id":"219","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671312000,"dur":5000},{"pid":1,"tid":12,"id":223,"name":"transform prep: merge java resources","args":{"span_id":"223","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671352000,"dur":18000},{"pid":1,"tid":12,"id":224,"name":"transform: merge java resources","args":{"span_id":"224","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671370000,"dur":525000},{"pid":1,"tid":0,"id":222,"name":"task: transform","args":{"span_id":"222","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671318000,"dur":636000},{"pid":1,"tid":0,"id":225,"name":"task: unknown task type","args":{"span_id":"225","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671955000,"dur":1000},{"pid":1,"tid":12,"id":227,"name":"transform prep: merge java resources","args":{"span_id":"227","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671982000,"dur":1000},{"pid":1,"tid":12,"id":228,"name":"transform: merge java resources","args":{"span_id":"228","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 13\nis_incremental: false\n"},"ph":"X","ts":1546433671983000,"dur":783000},{"pid":1,"tid":0,"id":226,"name":"task: transform","args":{"span_id":"226","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433671957000,"dur":854000},{"pid":1,"tid":12,"id":230,"name":"transform prep: no changes verifier","args":{"span_id":"230","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 16\nis_incremental: true\n"},"ph":"X","ts":1546433672815000,"dur":1000},{"pid":1,"tid":12,"id":231,"name":"transform: no changes verifier","args":{"span_id":"231","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 16\nis_incremental: true\n"},"ph":"X","ts":1546433672816000,"dur":100},{"pid":1,"tid":0,"id":229,"name":"task: transform","args":{"span_id":"229","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433672811000,"dur":6000},{"pid":1,"tid":13,"id":233,"name":"transform prep: instant run","args":{"span_id":"233","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 5\nis_incremental: false\n"},"ph":"X","ts":1546433672879000,"dur":27000},{"pid":1,"tid":13,"id":234,"name":"transform: instant run","args":{"span_id":"234","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 5\nis_incremental: false\n"},"ph":"X","ts":1546433672906000,"dur":1162000},{"pid":1,"tid":0,"id":232,"name":"task: transform","args":{"span_id":"232","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433672819000,"dur":1315000},{"pid":1,"tid":13,"id":236,"name":"transform prep: instant run dex","args":{"span_id":"236","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 3\nis_incremental: false\n"},"ph":"X","ts":1546433674137000,"dur":1000},{"pid":1,"tid":13,"id":237,"name":"transform: instant run dex","args":{"span_id":"237","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 3\nis_incremental: false\n"},"ph":"X","ts":1546433674138000,"dur":100},{"pid":1,"tid":0,"id":235,"name":"task: transform","args":{"span_id":"235","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674135000,"dur":5000},{"pid":1,"tid":0,"id":238,"name":"task: unknown task type","args":{"span_id":"238","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674141000,"dur":100},{"pid":1,"tid":0,"id":239,"name":"task: pre cold swap","args":{"span_id":"239","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 48\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674142000,"dur":100},{"pid":1,"tid":0,"id":240,"name":"task: fast deploy runtime extractor","args":{"span_id":"240","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 21\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674143000,"dur":19000},{"pid":1,"tid":0,"id":241,"name":"task: generate instant run app info","args":{"span_id":"241","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 25\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674163000,"dur":5000},{"pid":1,"tid":12,"id":243,"name":"transform prep: instant run slicer","args":{"span_id":"243","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 4\nis_incremental: false\n"},"ph":"X","ts":1546433674187000,"dur":3000},{"pid":1,"tid":12,"id":244,"name":"transform: instant run slicer","args":{"span_id":"244","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 4\nis_incremental: false\n"},"ph":"X","ts":1546433674190000,"dur":583000},{"pid":1,"tid":0,"id":242,"name":"task: transform","args":{"span_id":"242","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674169000,"dur":695000},{"pid":1,"tid":12,"id":246,"name":"transform prep: dex archive builder","args":{"span_id":"246","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 29\nis_incremental: false\n"},"ph":"X","ts":1546433674916000,"dur":3000},{"pid":1,"tid":12,"id":247,"name":"transform: dex archive builder","args":{"span_id":"247","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 29\nis_incremental: false\n"},"ph":"X","ts":1546433674919000,"dur":8133000},{"pid":1,"tid":0,"id":245,"name":"task: transform","args":{"span_id":"245","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433674864000,"dur":8408000},{"pid":1,"tid":12,"id":249,"name":"transform prep: external libs merger","args":{"span_id":"249","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 34\nis_incremental: false\n"},"ph":"X","ts":1546433683309000,"dur":6000},{"pid":1,"tid":12,"id":250,"name":"transform: external libs merger","args":{"span_id":"250","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 34\nis_incremental: false\n"},"ph":"X","ts":1546433683315000,"dur":3547000},{"pid":1,"tid":0,"id":248,"name":"task: transform","args":{"span_id":"248","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433683273000,"dur":3633000},{"pid":1,"tid":13,"id":252,"name":"transform prep: dex merger","args":{"span_id":"252","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 30\nis_incremental: false\n"},"ph":"X","ts":1546433686931000,"dur":2000},{"pid":1,"tid":13,"id":253,"name":"transform: dex merger","args":{"span_id":"253","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 30\nis_incremental: false\n"},"ph":"X","ts":1546433686933000,"dur":482000},{"pid":1,"tid":0,"id":251,"name":"task: transform","args":{"span_id":"251","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433686907000,"dur":572000},{"pid":1,"tid":0,"id":254,"name":"task: validate signing","args":{"span_id":"254","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 67\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433687479000,"dur":1000},{"pid":1,"tid":13,"id":256,"name":"transform prep: instant run dependencies apk builder","args":{"span_id":"256","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 23\nis_incremental: false\n"},"ph":"X","ts":1546433687484000,"dur":2000},{"pid":1,"tid":13,"id":257,"name":"transform: instant run dependencies apk builder","args":{"span_id":"257","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 23\nis_incremental: false\n"},"ph":"X","ts":1546433687486000,"dur":984000},{"pid":1,"tid":0,"id":255,"name":"task: transform","args":{"span_id":"255","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433687481000,"dur":990000},{"pid":1,"tid":13,"id":259,"name":"transform prep: instant run slice split apk builder","args":{"span_id":"259","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 24\nis_incremental: false\n"},"ph":"X","ts":1546433688475000,"dur":1000},{"pid":1,"tid":13,"id":260,"name":"transform: instant run slice split apk builder","args":{"span_id":"260","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 24\nis_incremental: false\n"},"ph":"X","ts":1546433688476000,"dur":773000},{"pid":1,"tid":0,"id":258,"name":"task: transform","args":{"span_id":"258","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433688472000,"dur":778000},{"pid":1,"tid":0,"id":261,"name":"task: package application","args":{"span_id":"261","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433689250000,"dur":588000},{"pid":1,"tid":0,"id":262,"name":"task: build info writer","args":{"span_id":"262","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 70\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433689841000,"dur":2000},{"pid":1,"tid":0,"id":263,"name":"task: unknown task type","args":{"span_id":"263","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433689844000,"dur":100},{"pid":1,"tid":0,"id":264,"name":"task: unknown task type","args":{"span_id":"264","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433689844000,"dur":100},{"pid":1,"tid":12,"id":265,"name":"base plugin build finished","args":{"span_id":"265","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\nmetrics {\n metrics_time_ns: 173295\n apk_size: 4609905\n resources_ap_size: 1462623\n}\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433689869000,"dur":2000},{"pid":1,"tid":12,"id":266,"name":"base plugin build finished","args":{"span_id":"266","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433689871000,"dur":100},{"pid":1,"tid":12,"id":267,"name":"base plugin build finished","args":{"span_id":"267","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433689871000,"dur":100}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-54-49-885.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-54-49-885.rawproto deleted file mode 100644 index 3220a151f5e2a145a3e0365d3caa64514ae3f4e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15699 zcmdU0d016PmZ#oBEOE(;ia7@Jcx_KQS2Hqzioi@dYOiA_6GwZxlj)x627RcBij5k( zO=gCmM%1`(q+MbpD$zu7CyC>3#AuAWs8Ml=prQh9xc9krs_v}|ybKR!zRvvN_v!ha z`qkO$RJ~heb9blc*f{=Tav$GIy?rkyHH?jkj*X3u@BVmfbV78@?_xX0bx8LQ^d}GX z_Xv;c9BuwPB__6KMn=)n1}`7qjaW4RSCe1!kLaJAJ}hl;Qcapk37Ey$b{PA|0>|Els>FU4<4nb#*?Em?%CGGT_mnSx z*9E5+zLJ!pWg_JN#%8BsBfG)&RikcZbZDEvGs?>sGEaW#iXpIP9`k*_{o~<{d-nGA z?vsou>F4)^KuG)M;Z0EVVsiRxy+`={LrfV`6t9&Ol^<2CV4jlV6GPxMQW&+TD77e- zX67Nq)USi4xLSpxB6usV)t{oG{uDPAMbVOJW-N9GAB$V{r?}^&$h{T36%U*gCHI1- zc%&#wK3HhRq7D=p>tuD-onllKiuosluFg-^ODoE9rmtt7f|KWhrufuJkyY~lmEyDd zJF-zx6fVfYaMmRj{|gkG>TkuCDimAJ2VECCoD>D6!PiBRq9~erFdwUPY4BE@sXxWJ z`cqs}6qQ+{KEZym=$oL!S>~k3-4i@TxsxLQXz&yd6h;1nt>{SQnBt%vd1z7GJ%AMX zg~3xiQWRP59IPY7{CwH?@*i#elzDRZTnyTg1>XsZ<(3uq&Y~kF8JB`~#lAK7U0*!7sQdkvzAYq;^3(D z50V3lBK!WDI#L{06j}4Hm=uRBPik$&2`5G6s^BS3DvGj#n`lMl)cR9YJfgy=bymB< zsVY{C3f_t$MUipif$7L!hho`bS>ajl?VrXxMN80;3)pjlh{cf`k|KY58J?8#Pc0q+ zl}m!6IHoA3l-#N##qsY1MTN3r-{D#2>EL4UvH0q)%E*ZeUocO`$2lY54u z7dGJ`eC5eM!O^8=EUGk51|PWtG|xQZNZ%#aW8QHY zjO@y51=umBY#j+lgc-G_xO`etilU%&W*sTU)}LaEqR3u97p=&<6nrdZDvHf#bC9BJ#^RvEIqiZB zXXWYR<6WMNyQ_kxm|;;|Dyk#JxRbfKC9c~U zfFkhM^jWv16`S{78inD^$$A4WV0AuQwZIuX7r=_SiXwOOsWC{gG!R8#E9O}ghfC{7 zF<(*a%eqrXidBlDa^8KUsQeNgDXu9NfgQw6@e)hUQrZRbB^Fbo3{B)xPp#!tV+S)g&G~{4p+-%JPS|m!L!ol z(pzr`iVmpnxcPF!{6I&H>%@V#XZI&<#hrP{ZN*XR^TCbp1jYOc8PBY-nRwosvir^( za2MlQ+kkQ*+7_aTLYdzU>S`7qf7$;fo%kEv9>_mDhH$X#YOB6uXq50JdEkh@9V&=Ur?Dc$`IuF@L8+n~IN z^h1pPO5TEp!FAFeWSG{-!g~se)ts&bmy&wniki`_q!HZbiGoU!Gb~3-Ta$(=X$1ei zr!8cyk!9D!mj4aP-ywMjmZM~8#ed*=8YU|F{>KoI<@k&ZFk_zv7zj+F5zIKC0qqc& ztf&rZKzkiHqyf+Bz+nyeTN?;9j%Yv!1g5LWk7__P0yEU)XEosOY`|?4YCsGEv(<=W z8W5`k=QJSB211P!8qg7eIg09Q4d{fxJOUaTCpDlm0*lm$GZqlRpSJVV8tYD`BZ9}H zTn=yxxv0lhJi*fiK2$^^f1-d}@kASNQT`;5gupU2LgY^Ze{TaWL*!2a|A4^9YJ|w2 z1fH`2W{CVr;D-pTpb;+0p9G#qU?l;}5c!ipR|Hn6IYj;>(9H%IE8i2O<5 zM>-(#CxIU$uttp#`IEp;bU@@!0zXAytuj~SPXa$fV4b28`4d0{?}B;CC7_wela&7) z<#Ir%kcUz~`A3w0O8VhK-hkw7J>OI7_&Mw|a=k|I9w^_TCho7~E%^6fEJ=Teea7k$ zzkov|ZGhXJTlJY2;FyxSl{A9?ljlV^MRK#xSlXI2R7oTFKYMz@InoZrZBJ@P@Lnh{ zRxFK`ycPeYr#F<4JjB2{b*nz}FE$|hj0OA(fs1Mc)~N;jS_iOBE#PGvUB=hkY)}1Bq zi*h-@tW$Sa*=JHcez>P>68V!Wp&tVG)eN{#xVuWAzYU0e!U6^$@IXvzz_s76_v=J1pZ(H zGJg_CM_`m1A@V1Ip*Fw_kv|CxLtr$Gkol9qa0JFGDv>_{L~uXmN#>)8$di=6j&eD` zJkPkh%04p!hJ@oU6T+E=chT`Tf!@C%pUEGB z{2@C2A5cc)U5MkJiMWIRKjDVWPq>5szkpu0p*`mKD*Rra!GPYa`Ai3^P2lBkF}QEf zfUC)AftP18cvw|IGr`M8F`(yQ!bgm((?>5K&EPHZ*vn@+S#63aK8C?)Qdnz;Q452Y zzs-OidkH_Q#nH>hGN7ki!iX9Ik@Y_*jAKA=s3e0K2yUm!%f~a=Af9f>Sepu+bcG2F z=>1cmK)l0%UN;3&n8;wWJq1O|VZ$T_+epC4Cu*FwW1V@%FAakpa(%hL9ZC8Fq1(=)hXij zDP}RC$2^)BPwEP@v1)ZMsug86R;_q&;qzJx!!gCX4BjIJbLrB`aZK@N2K0y~P|3|< z@IEm#wHOTD$hizwkV02fpmaNIn1_)h1#?}Hg2RUS7)f2Bnw#%2pr_<+G~QfOxR z*->X$#Naq7yl#b3Q;6b=8SEFYHGIoGs6l1h(RL$>FTsTG6Gm(dwKO`|8eX2uVEZAV z5oTGzbSpkYGfAPLWragwDT9Ny0vX{@ScZO(g5BsqpW-71U+W5Hs7B}tA2Xl_45I4n zPAGRQFJEpcm{U;QI;L2`;IusjrOPoz9<~TlpvtdSR4W;rA%z}d3R19k%_zQ#LEd2z z$;DAMX?Xc+21joQ4ZD#!tX#u@?)0@D;jnTohLRXeEA=KKwq`G1$KV7hJRua!PWOVH z?2mehkr0h4l7GtJu(;>OZ0vg?F4WxI&2?)26pG}Z zS!gq3e-+frKfz+5v0&NPO`m-OgHlp>6BQ_v4hR05!9{UJ?%NSBG)(&(4s65@BW|xn z6!mRUI~lDVVnXD&IS__-aVNd7s4y`&&Bfd6yH)a%*IbYQ22CXxdh z>g78ad_iM-TjZJpk$e|})#9=m!zZHC(k5@izhJP2(2`JM*Wf5#z+gVXU)r5jqxbUN z4Co@;XZNgb`eNUMhcj`gD^eqY~<~$h8PW@U7}uof&pDJ zi(`Ea@FFaHLMO_~)!-<8ioq;`@7r6YX1kZ4VK80X4U5p) zyAZ=N!{1Gj{2YVjO2LYpHUD{RON34iqs%(yKg(by!AH!UnCf1eKayX-gORuuRtwYP zVamNoUW{#pQ2b(J_FWD2@^5g}5gLH}B3gGvw5>>rT>}|A?1^poC5#=R;~NpX21oG{ z2G@x_C%k6cOBuW??oXBNZks-mUt#cPLZ$5*>gAUi%qBEIOS#H`ZkYoe53XTXQv52k zF&=C0_VO}3_mV;j%l-&mp&XlHRU2B{3X%Le9+ODHP4Nr$Xtj3(TQZ?LW$kHj6tBQv zdIYbp(Zxu9i@^sEM0zCsQ#$=^21^Lt@jRtRgQNIOEDdq<>?`bMx#uXYI}EOfi)CLJ zS>INtzl-T5^h6}lYj6~=#CAyV$~HCA-^Z16!n_v5mM#{CSJI2(dVrNr=vg<>Yj705 z$Kam0u=Z^TurMDopzCP4FwLI#BafBdNS@(>4dSv{&Hscx|64BDNN8b0nqPyX_#;dX z!Kdu)*b%)^E|?=OqE&I@p-wDJ;ofK$%q4V;T=yCr#WP)yP4M^{mnMEGZ~_c0swg{MEM1pV|SyF9j~3+u=YfB+BE(xirDIH^z<5IiCruK=APfSit y=+q}ACe`03rgKc^#N?R7)Hr{fKQSe?OKRs%ofG>e#HPl?q;`pmk57(EN%;#&!cQIm diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-56-30-797.json b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-56-30-797.json deleted file mode 100644 index 4d055c9..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-56-30-797.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1546433782765000,"args":{"JVM stats":"heap_memory_usage: 428723520\nnon_heap_memory_usage: 259185456\nloaded_class_count: 22011\nthread_count: 28\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783294000,"args":{"JVM stats":"heap_memory_usage: 456166520\nnon_heap_memory_usage: 259511408\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783301000,"args":{"JVM stats":"heap_memory_usage: 456166520\nnon_heap_memory_usage: 259502960\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783303000,"args":{"JVM stats":"heap_memory_usage: 456166520\nnon_heap_memory_usage: 259502960\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783303001,"args":{"JVM stats":"heap_memory_usage: 456166520\nnon_heap_memory_usage: 259502960\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783305000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259505200\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783306000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259505200\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783307000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259505200\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783311000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259508080\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783313000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259510192\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783316000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259510192\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783316001,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259510192\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783319000,"args":{"JVM stats":"heap_memory_usage: 456684536\nnon_heap_memory_usage: 259510192\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783536000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259640424\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783537000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259640424\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783537001,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259640424\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783538000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259640424\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783539000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259640424\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783542000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259643048\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783543000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259643048\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783543001,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259643048\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783544000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259655272\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783547000,"args":{"JVM stats":"heap_memory_usage: 470686552\nnon_heap_memory_usage: 259645928\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783574000,"args":{"JVM stats":"heap_memory_usage: 473275880\nnon_heap_memory_usage: 259664744\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783576000,"args":{"JVM stats":"heap_memory_usage: 473275880\nnon_heap_memory_usage: 259664744\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783577000,"args":{"JVM stats":"heap_memory_usage: 473275880\nnon_heap_memory_usage: 259665448\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783602000,"args":{"JVM stats":"heap_memory_usage: 474830200\nnon_heap_memory_usage: 259665448\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783603000,"args":{"JVM stats":"heap_memory_usage: 474830200\nnon_heap_memory_usage: 259665448\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783605000,"args":{"JVM stats":"heap_memory_usage: 474830200\nnon_heap_memory_usage: 259665448\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783615000,"args":{"JVM stats":"heap_memory_usage: 475865784\nnon_heap_memory_usage: 259666088\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783616000,"args":{"JVM stats":"heap_memory_usage: 475865784\nnon_heap_memory_usage: 259666088\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783617000,"args":{"JVM stats":"heap_memory_usage: 475865784\nnon_heap_memory_usage: 259666088\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783638000,"args":{"JVM stats":"heap_memory_usage: 477420560\nnon_heap_memory_usage: 259679784\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783641000,"args":{"JVM stats":"heap_memory_usage: 477420560\nnon_heap_memory_usage: 259702632\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783642000,"args":{"JVM stats":"heap_memory_usage: 477420560\nnon_heap_memory_usage: 259693088\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783656000,"args":{"JVM stats":"heap_memory_usage: 477938312\nnon_heap_memory_usage: 259702112\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783723000,"args":{"JVM stats":"heap_memory_usage: 481564032\nnon_heap_memory_usage: 259726208\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783725000,"args":{"JVM stats":"heap_memory_usage: 481564032\nnon_heap_memory_usage: 259726208\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783726000,"args":{"JVM stats":"heap_memory_usage: 481564032\nnon_heap_memory_usage: 259729280\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783746000,"args":{"JVM stats":"heap_memory_usage: 481564032\nnon_heap_memory_usage: 259730688\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783833000,"args":{"JVM stats":"heap_memory_usage: 487261768\nnon_heap_memory_usage: 259739456\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783835000,"args":{"JVM stats":"heap_memory_usage: 487261768\nnon_heap_memory_usage: 259739456\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783837000,"args":{"JVM stats":"heap_memory_usage: 487261768\nnon_heap_memory_usage: 259739456\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783837001,"args":{"JVM stats":"heap_memory_usage: 487261768\nnon_heap_memory_usage: 259757440\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783855000,"args":{"JVM stats":"heap_memory_usage: 488297496\nnon_heap_memory_usage: 259774112\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783887000,"args":{"JVM stats":"heap_memory_usage: 489850856\nnon_heap_memory_usage: 259797304\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783906000,"args":{"JVM stats":"heap_memory_usage: 491921984\nnon_heap_memory_usage: 259791608\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783912000,"args":{"JVM stats":"heap_memory_usage: 492439840\nnon_heap_memory_usage: 259806136\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783918000,"args":{"JVM stats":"heap_memory_usage: 492439840\nnon_heap_memory_usage: 259807224\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783931000,"args":{"JVM stats":"heap_memory_usage: 493994232\nnon_heap_memory_usage: 259816600\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783943000,"args":{"JVM stats":"heap_memory_usage: 494511984\nnon_heap_memory_usage: 259820056\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783945000,"args":{"JVM stats":"heap_memory_usage: 494511984\nnon_heap_memory_usage: 259820632\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783947000,"args":{"JVM stats":"heap_memory_usage: 495029744\nnon_heap_memory_usage: 259821656\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783947001,"args":{"JVM stats":"heap_memory_usage: 495029744\nnon_heap_memory_usage: 259821656\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783949000,"args":{"JVM stats":"heap_memory_usage: 495029744\nnon_heap_memory_usage: 259821656\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783951000,"args":{"JVM stats":"heap_memory_usage: 495029744\nnon_heap_memory_usage: 259821656\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433783952000,"args":{"JVM stats":"heap_memory_usage: 495029744\nnon_heap_memory_usage: 259821656\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784020000,"args":{"JVM stats":"heap_memory_usage: 495547472\nnon_heap_memory_usage: 259836824\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784057000,"args":{"JVM stats":"heap_memory_usage: 496065232\nnon_heap_memory_usage: 259828760\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784058000,"args":{"JVM stats":"heap_memory_usage: 496065232\nnon_heap_memory_usage: 259823576\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784060000,"args":{"JVM stats":"heap_memory_usage: 496065232\nnon_heap_memory_usage: 259823576\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784060001,"args":{"JVM stats":"heap_memory_usage: 496065232\nnon_heap_memory_usage: 259823576\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784065000,"args":{"JVM stats":"heap_memory_usage: 496582984\nnon_heap_memory_usage: 259820056\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784090000,"args":{"JVM stats":"heap_memory_usage: 497100736\nnon_heap_memory_usage: 259823384\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784091000,"args":{"JVM stats":"heap_memory_usage: 497100736\nnon_heap_memory_usage: 259823384\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784092000,"args":{"JVM stats":"heap_memory_usage: 497100736\nnon_heap_memory_usage: 259823384\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433784132000,"args":{"JVM stats":"heap_memory_usage: 501251216\nnon_heap_memory_usage: 259809968\nloaded_class_count: 22013\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433787986000,"args":{"JVM stats":"heap_memory_usage: 597228064\nnon_heap_memory_usage: 263741704\nloaded_class_count: 22363\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 790\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433787989000,"args":{"JVM stats":"heap_memory_usage: 598539448\nnon_heap_memory_usage: 263741704\nloaded_class_count: 22363\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788250000,"args":{"JVM stats":"heap_memory_usage: 377470672\nnon_heap_memory_usage: 263817408\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 211\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788296000,"args":{"JVM stats":"heap_memory_usage: 385043256\nnon_heap_memory_usage: 263877024\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788376000,"args":{"JVM stats":"heap_memory_usage: 395496536\nnon_heap_memory_usage: 263925128\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788384000,"args":{"JVM stats":"heap_memory_usage: 395496536\nnon_heap_memory_usage: 263925128\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788509000,"args":{"JVM stats":"heap_memory_usage: 401416736\nnon_heap_memory_usage: 263944264\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788597000,"args":{"JVM stats":"heap_memory_usage: 405737304\nnon_heap_memory_usage: 263983696\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788610000,"args":{"JVM stats":"heap_memory_usage: 409125960\nnon_heap_memory_usage: 263983696\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788616000,"args":{"JVM stats":"heap_memory_usage: 409125960\nnon_heap_memory_usage: 263983696\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788621000,"args":{"JVM stats":"heap_memory_usage: 409125960\nnon_heap_memory_usage: 263985296\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788630000,"args":{"JVM stats":"heap_memory_usage: 409125960\nnon_heap_memory_usage: 264001528\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788633000,"args":{"JVM stats":"heap_memory_usage: 409125960\nnon_heap_memory_usage: 264002064\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788638000,"args":{"JVM stats":"heap_memory_usage: 409502696\nnon_heap_memory_usage: 264011624\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788643000,"args":{"JVM stats":"heap_memory_usage: 409502696\nnon_heap_memory_usage: 264012520\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788644000,"args":{"JVM stats":"heap_memory_usage: 409502696\nnon_heap_memory_usage: 264012520\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788645000,"args":{"JVM stats":"heap_memory_usage: 409502696\nnon_heap_memory_usage: 264012520\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788647000,"args":{"JVM stats":"heap_memory_usage: 409879432\nnon_heap_memory_usage: 264014824\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788648000,"args":{"JVM stats":"heap_memory_usage: 409879432\nnon_heap_memory_usage: 264014824\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788675000,"args":{"JVM stats":"heap_memory_usage: 413137840\nnon_heap_memory_usage: 264034456\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788677000,"args":{"JVM stats":"heap_memory_usage: 413137840\nnon_heap_memory_usage: 264034456\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788718000,"args":{"JVM stats":"heap_memory_usage: 416397208\nnon_heap_memory_usage: 264054104\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433788722000,"args":{"JVM stats":"heap_memory_usage: 416397208\nnon_heap_memory_usage: 264059736\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789059000,"args":{"JVM stats":"heap_memory_usage: 429502488\nnon_heap_memory_usage: 264114056\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789066000,"args":{"JVM stats":"heap_memory_usage: 430366936\nnon_heap_memory_usage: 264114056\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789066001,"args":{"JVM stats":"heap_memory_usage: 430548720\nnon_heap_memory_usage: 264114056\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789067000,"args":{"JVM stats":"heap_memory_usage: 430548720\nnon_heap_memory_usage: 264114056\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789072000,"args":{"JVM stats":"heap_memory_usage: 431194744\nnon_heap_memory_usage: 264114056\nloaded_class_count: 22363\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789075000,"args":{"JVM stats":"heap_memory_usage: 431194744\nnon_heap_memory_usage: 264116416\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789186000,"args":{"JVM stats":"heap_memory_usage: 436556560\nnon_heap_memory_usage: 264116416\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789394000,"args":{"JVM stats":"heap_memory_usage: 468581400\nnon_heap_memory_usage: 264149616\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789439000,"args":{"JVM stats":"heap_memory_usage: 471310288\nnon_heap_memory_usage: 264155200\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789508000,"args":{"JVM stats":"heap_memory_usage: 476234152\nnon_heap_memory_usage: 264160848\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789510000,"args":{"JVM stats":"heap_memory_usage: 476803064\nnon_heap_memory_usage: 264160848\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433789521000,"args":{"JVM stats":"heap_memory_usage: 477044800\nnon_heap_memory_usage: 264167608\nloaded_class_count: 22364\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433790694000,"args":{"JVM stats":"heap_memory_usage: 488944432\nnon_heap_memory_usage: 264383584\nloaded_class_count: 22364\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433790747000,"args":{"JVM stats":"heap_memory_usage: 489428016\nnon_heap_memory_usage: 264278272\nloaded_class_count: 22369\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433790755000,"args":{"JVM stats":"heap_memory_usage: 489669752\nnon_heap_memory_usage: 264272832\nloaded_class_count: 22369\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433790758000,"args":{"JVM stats":"heap_memory_usage: 489669752\nnon_heap_memory_usage: 264272832\nloaded_class_count: 22369\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433790758001,"args":{"JVM stats":"heap_memory_usage: 489669752\nnon_heap_memory_usage: 264272832\nloaded_class_count: 22369\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1546433790798000,"args":{"JVM stats":"heap_memory_usage: 491814288\nnon_heap_memory_usage: 264260376\nloaded_class_count: 22369\nthread_count: 36\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":15,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782766000,"dur":21000},{"pid":1,"tid":15,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782787000,"dur":12000},{"pid":1,"tid":15,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782799000,"dur":3000},{"pid":1,"tid":15,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782799000,"dur":3000},{"pid":1,"tid":15,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782829000,"dur":10000},{"pid":1,"tid":15,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782839000,"dur":2000},{"pid":1,"tid":15,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782843000,"dur":1000},{"pid":1,"tid":15,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782844000,"dur":1000},{"pid":1,"tid":15,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782845000,"dur":1000},{"pid":1,"tid":15,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782846000,"dur":6000},{"pid":1,"tid":15,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782852000,"dur":4000},{"pid":1,"tid":15,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782856000,"dur":1000},{"pid":1,"tid":15,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782857000,"dur":6000},{"pid":1,"tid":15,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782863000,"dur":2000},{"pid":1,"tid":15,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782865000,"dur":1000},{"pid":1,"tid":15,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782866000,"dur":1000},{"pid":1,"tid":15,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782867000,"dur":100},{"pid":1,"tid":15,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782867000,"dur":3000},{"pid":1,"tid":15,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782870000,"dur":18000},{"pid":1,"tid":15,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782888000,"dur":8000},{"pid":1,"tid":15,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782897000,"dur":1000},{"pid":1,"tid":15,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782841000,"dur":57000},{"pid":1,"tid":15,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782898000,"dur":8000},{"pid":1,"tid":15,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782906000,"dur":13000},{"pid":1,"tid":15,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782828000,"dur":100000},{"pid":1,"tid":15,"id":28,"name":"variant manager external native config values","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782929000,"dur":100},{"pid":1,"tid":15,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782823000,"dur":106000},{"pid":1,"tid":15,"id":29,"name":"base plugin project configure","args":{"span_id":"29","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782942000,"dur":5000},{"pid":1,"tid":15,"id":30,"name":"base plugin project base extension creation","args":{"span_id":"30","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782947000,"dur":16000},{"pid":1,"tid":15,"id":32,"name":"task manager create tasks","args":{"span_id":"32","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782963000,"dur":2000},{"pid":1,"tid":15,"id":31,"name":"base plugin project tasks creation","args":{"span_id":"31","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782963000,"dur":2000},{"pid":1,"tid":15,"id":35,"name":"variant manager create variants","args":{"span_id":"35","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782987000,"dur":9000},{"pid":1,"tid":15,"id":36,"name":"variant manager create tests tasks","args":{"span_id":"36","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782996000,"dur":1000},{"pid":1,"tid":15,"id":38,"name":"lib task manager create generate res values task","args":{"span_id":"38","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782998000,"dur":100},{"pid":1,"tid":15,"id":39,"name":"lib task manager create merge manifest task","args":{"span_id":"39","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782998000,"dur":4000},{"pid":1,"tid":15,"id":40,"name":"lib task manager create create renderscript task","args":{"span_id":"40","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783002000,"dur":100},{"pid":1,"tid":15,"id":41,"name":"lib task manager create merge resources task","args":{"span_id":"41","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783002000,"dur":1000},{"pid":1,"tid":15,"id":42,"name":"lib task manager create merge assets task","args":{"span_id":"42","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783003000,"dur":100},{"pid":1,"tid":15,"id":43,"name":"lib task manager create build config task","args":{"span_id":"43","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783003000,"dur":100},{"pid":1,"tid":15,"id":44,"name":"lib task manager create process res task","args":{"span_id":"44","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783003000,"dur":18000},{"pid":1,"tid":15,"id":45,"name":"lib task manager create aidl task","args":{"span_id":"45","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783021000,"dur":1000},{"pid":1,"tid":15,"id":46,"name":"lib task manager create shader task","args":{"span_id":"46","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783022000,"dur":1000},{"pid":1,"tid":15,"id":47,"name":"lib task manager create compile task","args":{"span_id":"47","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783023000,"dur":1000},{"pid":1,"tid":15,"id":48,"name":"lib task manager create ndk task","args":{"span_id":"48","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783024000,"dur":100},{"pid":1,"tid":15,"id":49,"name":"lib task manager create external native build task","args":{"span_id":"49","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783024000,"dur":100},{"pid":1,"tid":15,"id":50,"name":"lib task manager create packaging task","args":{"span_id":"50","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783025000,"dur":1000},{"pid":1,"tid":15,"id":51,"name":"lib task manager create merge proguard file task","args":{"span_id":"51","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783026000,"dur":1000},{"pid":1,"tid":15,"id":52,"name":"lib task manager create post compilation task","args":{"span_id":"52","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783029000,"dur":3000},{"pid":1,"tid":15,"id":53,"name":"lib task manager create lint task","args":{"span_id":"53","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783032000,"dur":1000},{"pid":1,"tid":15,"id":37,"name":"variant manager create tasks for variant","args":{"span_id":"37","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433782998000,"dur":35000},{"pid":1,"tid":15,"id":54,"name":"variant manager create tasks for variant","args":{"span_id":"54","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783033000,"dur":4000},{"pid":1,"tid":15,"id":56,"name":"lib task manager create generate res values task","args":{"span_id":"56","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783038000,"dur":100},{"pid":1,"tid":15,"id":57,"name":"lib task manager create merge manifest task","args":{"span_id":"57","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783038000,"dur":100},{"pid":1,"tid":15,"id":58,"name":"lib task manager create create renderscript task","args":{"span_id":"58","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783038000,"dur":1000},{"pid":1,"tid":15,"id":59,"name":"lib task manager create merge resources task","args":{"span_id":"59","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783039000,"dur":100},{"pid":1,"tid":15,"id":60,"name":"lib task manager create merge assets task","args":{"span_id":"60","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783039000,"dur":1000},{"pid":1,"tid":15,"id":61,"name":"lib task manager create build config task","args":{"span_id":"61","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783040000,"dur":100},{"pid":1,"tid":15,"id":62,"name":"lib task manager create process res task","args":{"span_id":"62","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783040000,"dur":3000},{"pid":1,"tid":15,"id":63,"name":"lib task manager create aidl task","args":{"span_id":"63","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783043000,"dur":100},{"pid":1,"tid":15,"id":64,"name":"lib task manager create shader task","args":{"span_id":"64","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783043000,"dur":1000},{"pid":1,"tid":15,"id":65,"name":"lib task manager create compile task","args":{"span_id":"65","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783044000,"dur":1000},{"pid":1,"tid":15,"id":66,"name":"lib task manager create ndk task","args":{"span_id":"66","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783045000,"dur":100},{"pid":1,"tid":15,"id":67,"name":"lib task manager create external native build task","args":{"span_id":"67","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783045000,"dur":100},{"pid":1,"tid":15,"id":68,"name":"lib task manager create packaging task","args":{"span_id":"68","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783046000,"dur":100},{"pid":1,"tid":15,"id":69,"name":"lib task manager create merge proguard file task","args":{"span_id":"69","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783046000,"dur":1000},{"pid":1,"tid":15,"id":70,"name":"lib task manager create post compilation task","args":{"span_id":"70","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783047000,"dur":1000},{"pid":1,"tid":15,"id":71,"name":"lib task manager create lint task","args":{"span_id":"71","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783049000,"dur":100},{"pid":1,"tid":15,"id":55,"name":"variant manager create tasks for variant","args":{"span_id":"55","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783037000,"dur":12000},{"pid":1,"tid":15,"id":72,"name":"variant manager create tasks for variant","args":{"span_id":"72","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783049000,"dur":4000},{"pid":1,"tid":15,"id":73,"name":"variant manager create tasks for variant","args":{"span_id":"73","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783053000,"dur":19000},{"pid":1,"tid":15,"id":34,"name":"variant manager create android tasks","args":{"span_id":"34","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782987000,"dur":85000},{"pid":1,"tid":15,"id":74,"name":"variant manager external native config values","args":{"span_id":"74","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783073000,"dur":100},{"pid":1,"tid":15,"id":33,"name":"base plugin create android tasks","args":{"span_id":"33","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433782980000,"dur":93000},{"pid":1,"tid":15,"id":75,"name":"base plugin project configure","args":{"span_id":"75","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783104000,"dur":5000},{"pid":1,"tid":15,"id":76,"name":"base plugin project base extension creation","args":{"span_id":"76","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783109000,"dur":12000},{"pid":1,"tid":15,"id":78,"name":"task manager create tasks","args":{"span_id":"78","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783121000,"dur":2000},{"pid":1,"tid":15,"id":77,"name":"base plugin project tasks creation","args":{"span_id":"77","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783121000,"dur":2000},{"pid":1,"tid":15,"id":81,"name":"variant manager create variants","args":{"span_id":"81","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783134000,"dur":6000},{"pid":1,"tid":15,"id":82,"name":"variant manager create tests tasks","args":{"span_id":"82","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783140000,"dur":2000},{"pid":1,"tid":15,"id":84,"name":"lib task manager create generate res values task","args":{"span_id":"84","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783143000,"dur":100},{"pid":1,"tid":15,"id":85,"name":"lib task manager create merge manifest task","args":{"span_id":"85","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783143000,"dur":100},{"pid":1,"tid":15,"id":86,"name":"lib task manager create create renderscript task","args":{"span_id":"86","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783143000,"dur":2000},{"pid":1,"tid":15,"id":87,"name":"lib task manager create merge resources task","args":{"span_id":"87","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783145000,"dur":100},{"pid":1,"tid":15,"id":88,"name":"lib task manager create merge assets task","args":{"span_id":"88","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783145000,"dur":100},{"pid":1,"tid":15,"id":89,"name":"lib task manager create build config task","args":{"span_id":"89","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783145000,"dur":1000},{"pid":1,"tid":15,"id":90,"name":"lib task manager create process res task","args":{"span_id":"90","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783146000,"dur":5000},{"pid":1,"tid":15,"id":91,"name":"lib task manager create aidl task","args":{"span_id":"91","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783151000,"dur":100},{"pid":1,"tid":15,"id":92,"name":"lib task manager create shader task","args":{"span_id":"92","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783151000,"dur":1000},{"pid":1,"tid":15,"id":93,"name":"lib task manager create compile task","args":{"span_id":"93","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783152000,"dur":1000},{"pid":1,"tid":15,"id":94,"name":"lib task manager create ndk task","args":{"span_id":"94","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783153000,"dur":1000},{"pid":1,"tid":15,"id":95,"name":"lib task manager create external native build task","args":{"span_id":"95","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783154000,"dur":100},{"pid":1,"tid":15,"id":96,"name":"lib task manager create packaging task","args":{"span_id":"96","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783155000,"dur":1000},{"pid":1,"tid":15,"id":97,"name":"lib task manager create merge proguard file task","args":{"span_id":"97","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783156000,"dur":100},{"pid":1,"tid":15,"id":98,"name":"lib task manager create post compilation task","args":{"span_id":"98","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783157000,"dur":1000},{"pid":1,"tid":15,"id":99,"name":"lib task manager create lint task","args":{"span_id":"99","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783162000,"dur":3000},{"pid":1,"tid":15,"id":83,"name":"variant manager create tasks for variant","args":{"span_id":"83","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783142000,"dur":23000},{"pid":1,"tid":15,"id":100,"name":"variant manager create tasks for variant","args":{"span_id":"100","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783165000,"dur":6000},{"pid":1,"tid":15,"id":102,"name":"lib task manager create generate res values task","args":{"span_id":"102","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783173000,"dur":100},{"pid":1,"tid":15,"id":103,"name":"lib task manager create merge manifest task","args":{"span_id":"103","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783173000,"dur":1000},{"pid":1,"tid":15,"id":104,"name":"lib task manager create create renderscript task","args":{"span_id":"104","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783174000,"dur":100},{"pid":1,"tid":15,"id":105,"name":"lib task manager create merge resources task","args":{"span_id":"105","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783174000,"dur":100},{"pid":1,"tid":15,"id":106,"name":"lib task manager create merge assets task","args":{"span_id":"106","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783174000,"dur":1000},{"pid":1,"tid":15,"id":107,"name":"lib task manager create build config task","args":{"span_id":"107","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783175000,"dur":100},{"pid":1,"tid":15,"id":108,"name":"lib task manager create process res task","args":{"span_id":"108","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783175000,"dur":2000},{"pid":1,"tid":15,"id":109,"name":"lib task manager create aidl task","args":{"span_id":"109","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783177000,"dur":100},{"pid":1,"tid":15,"id":110,"name":"lib task manager create shader task","args":{"span_id":"110","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783177000,"dur":100},{"pid":1,"tid":15,"id":111,"name":"lib task manager create compile task","args":{"span_id":"111","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783177000,"dur":1000},{"pid":1,"tid":15,"id":112,"name":"lib task manager create ndk task","args":{"span_id":"112","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783178000,"dur":100},{"pid":1,"tid":15,"id":113,"name":"lib task manager create external native build task","args":{"span_id":"113","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783178000,"dur":100},{"pid":1,"tid":15,"id":114,"name":"lib task manager create packaging task","args":{"span_id":"114","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783178000,"dur":1000},{"pid":1,"tid":15,"id":115,"name":"lib task manager create merge proguard file task","args":{"span_id":"115","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783179000,"dur":1000},{"pid":1,"tid":15,"id":116,"name":"lib task manager create post compilation task","args":{"span_id":"116","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783184000,"dur":1000},{"pid":1,"tid":15,"id":117,"name":"lib task manager create lint task","args":{"span_id":"117","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783185000,"dur":100},{"pid":1,"tid":15,"id":101,"name":"variant manager create tasks for variant","args":{"span_id":"101","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433783171000,"dur":14000},{"pid":1,"tid":15,"id":118,"name":"variant manager create tasks for variant","args":{"span_id":"118","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783185000,"dur":6000},{"pid":1,"tid":15,"id":119,"name":"variant manager create tasks for variant","args":{"span_id":"119","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783191000,"dur":17000},{"pid":1,"tid":15,"id":80,"name":"variant manager create android tasks","args":{"span_id":"80","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783134000,"dur":75000},{"pid":1,"tid":15,"id":120,"name":"variant manager external native config values","args":{"span_id":"120","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783209000,"dur":100},{"pid":1,"tid":15,"id":79,"name":"base plugin create android tasks","args":{"span_id":"79","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433783127000,"dur":82000},{"pid":1,"tid":0,"id":121,"name":"task: build info loader","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 7\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433783291000,"dur":3000},{"pid":1,"tid":0,"id":122,"name":"task: merge source set folders","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783295000,"dur":6000},{"pid":1,"tid":0,"id":123,"name":"task: shader compile","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783301000,"dur":2000},{"pid":1,"tid":0,"id":124,"name":"task: unknown task type","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783303000,"dur":100},{"pid":1,"tid":0,"id":125,"name":"task: merge source set folders","args":{"span_id":"125","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783304000,"dur":1000},{"pid":1,"tid":0,"id":126,"name":"task: shader compile","args":{"span_id":"126","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783306000,"dur":100},{"pid":1,"tid":0,"id":127,"name":"task: unknown task type","args":{"span_id":"127","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783307000,"dur":100},{"pid":1,"tid":0,"id":128,"name":"task: merge source set folders","args":{"span_id":"128","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783308000,"dur":3000},{"pid":1,"tid":0,"id":129,"name":"task: merge source set folders","args":{"span_id":"129","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783312000,"dur":1000},{"pid":1,"tid":0,"id":130,"name":"task: shader compile","args":{"span_id":"130","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783314000,"dur":1000},{"pid":1,"tid":0,"id":131,"name":"task: unknown task type","args":{"span_id":"131","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783316000,"dur":100},{"pid":1,"tid":0,"id":132,"name":"task: merge source set folders","args":{"span_id":"132","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783317000,"dur":2000},{"pid":1,"tid":0,"id":133,"name":"task: merge source set folders","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783321000,"dur":215000},{"pid":1,"tid":0,"id":134,"name":"task: unknown task type","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783536000,"dur":100},{"pid":1,"tid":0,"id":135,"name":"task: unknown task type","args":{"span_id":"135","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783537000,"dur":100},{"pid":1,"tid":0,"id":136,"name":"task: unknown task type","args":{"span_id":"136","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783538000,"dur":100},{"pid":1,"tid":0,"id":137,"name":"task: check manifest","args":{"span_id":"137","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783539000,"dur":100},{"pid":1,"tid":0,"id":138,"name":"task: process manifest","args":{"span_id":"138","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783540000,"dur":2000},{"pid":1,"tid":0,"id":139,"name":"task: unknown task type","args":{"span_id":"139","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783543000,"dur":100},{"pid":1,"tid":0,"id":140,"name":"task: unknown task type","args":{"span_id":"140","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783543000,"dur":100},{"pid":1,"tid":0,"id":141,"name":"task: check manifest","args":{"span_id":"141","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783544000,"dur":100},{"pid":1,"tid":0,"id":142,"name":"task: process manifest","args":{"span_id":"142","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783545000,"dur":2000},{"pid":1,"tid":0,"id":143,"name":"task: app pre build","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783548000,"dur":26000},{"pid":1,"tid":0,"id":144,"name":"task: check manifest","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783575000,"dur":100},{"pid":1,"tid":0,"id":145,"name":"task: compatible screens manifest","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783576000,"dur":1000},{"pid":1,"tid":0,"id":146,"name":"task: merge manifests","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783578000,"dur":24000},{"pid":1,"tid":0,"id":147,"name":"task: unknown task type","args":{"span_id":"147","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433783603000,"dur":100},{"pid":1,"tid":0,"id":148,"name":"task: unknown task type","args":{"span_id":"148","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433783604000,"dur":1000},{"pid":1,"tid":0,"id":149,"name":"task: renderscript compile","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783606000,"dur":9000},{"pid":1,"tid":0,"id":150,"name":"task: generate res values","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783616000,"dur":100},{"pid":1,"tid":0,"id":151,"name":"task: unknown task type","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783617000,"dur":100},{"pid":1,"tid":0,"id":152,"name":"task: renderscript compile","args":{"span_id":"152","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783618000,"dur":19000},{"pid":1,"tid":0,"id":153,"name":"task: generate res values","args":{"span_id":"153","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783639000,"dur":2000},{"pid":1,"tid":0,"id":154,"name":"task: unknown task type","args":{"span_id":"154","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783641000,"dur":100},{"pid":1,"tid":0,"id":155,"name":"task: merge resources","args":{"span_id":"155","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783642000,"dur":14000},{"pid":1,"tid":0,"id":156,"name":"task: renderscript compile","args":{"span_id":"156","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783657000,"dur":66000},{"pid":1,"tid":0,"id":157,"name":"task: generate res values","args":{"span_id":"157","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783724000,"dur":1000},{"pid":1,"tid":0,"id":158,"name":"task: unknown task type","args":{"span_id":"158","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783726000,"dur":100},{"pid":1,"tid":0,"id":159,"name":"task: merge resources","args":{"span_id":"159","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783743000,"dur":3000},{"pid":1,"tid":0,"id":160,"name":"task: merge resources","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783748000,"dur":84000},{"pid":1,"tid":0,"id":161,"name":"task: splits discovery","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783835000,"dur":100},{"pid":1,"tid":0,"id":162,"name":"task: platform attr extractor","args":{"span_id":"162","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783836000,"dur":1000},{"pid":1,"tid":0,"id":163,"name":"task: platform attr extractor","args":{"span_id":"163","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783837000,"dur":100},{"pid":1,"tid":0,"id":164,"name":"task: process android resources","args":{"span_id":"164","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783838000,"dur":17000},{"pid":1,"tid":0,"id":165,"name":"task: process android resources","args":{"span_id":"165","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783856000,"dur":31000},{"pid":1,"tid":0,"id":166,"name":"task: process android resources","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783889000,"dur":17000},{"pid":1,"tid":0,"id":167,"name":"task: package application","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783907000,"dur":5000},{"pid":1,"tid":0,"id":168,"name":"task: aidl compile","args":{"span_id":"168","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783912000,"dur":5000},{"pid":1,"tid":0,"id":169,"name":"task: aidl compile","args":{"span_id":"169","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783918000,"dur":13000},{"pid":1,"tid":0,"id":170,"name":"task: aidl compile","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783932000,"dur":11000},{"pid":1,"tid":0,"id":171,"name":"task: generate build config","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783943000,"dur":2000},{"pid":1,"tid":0,"id":172,"name":"task: prepare lint jar","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783946000,"dur":1000},{"pid":1,"tid":0,"id":173,"name":"task: unknown task type","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433783947000,"dur":100},{"pid":1,"tid":0,"id":174,"name":"task: generate build config","args":{"span_id":"174","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783948000,"dur":1000},{"pid":1,"tid":0,"id":175,"name":"task: prepare lint jar","args":{"span_id":"175","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783950000,"dur":1000},{"pid":1,"tid":0,"id":176,"name":"task: unknown task type","args":{"span_id":"176","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433783951000,"dur":1000},{"pid":1,"tid":0,"id":177,"name":"task: unknown task type","args":{"span_id":"177","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433783953000,"dur":59000},{"pid":1,"tid":0,"id":178,"name":"task: unknown task type","args":{"span_id":"178","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784031000,"dur":26000},{"pid":1,"tid":0,"id":179,"name":"task: generate build config","args":{"span_id":"179","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784057000,"dur":1000},{"pid":1,"tid":0,"id":180,"name":"task: prepare lint jar","args":{"span_id":"180","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784059000,"dur":1000},{"pid":1,"tid":0,"id":181,"name":"task: unknown task type","args":{"span_id":"181","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784060000,"dur":100},{"pid":1,"tid":0,"id":182,"name":"task: java pre compile","args":{"span_id":"182","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784061000,"dur":4000},{"pid":1,"tid":0,"id":183,"name":"task: android java compile","args":{"span_id":"183","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784065000,"dur":25000},{"pid":1,"tid":0,"id":184,"name":"task: unknown task type","args":{"span_id":"184","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433784090000,"dur":1000},{"pid":1,"tid":0,"id":185,"name":"task: transform","args":{"span_id":"185","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784091000,"dur":1000},{"pid":1,"tid":0,"id":186,"name":"task: java pre compile","args":{"span_id":"186","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433784093000,"dur":38000},{"pid":1,"tid":0,"id":187,"name":"task: android java compile","args":{"span_id":"187","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433784132000,"dur":3854000},{"pid":1,"tid":0,"id":188,"name":"task: unknown task type","args":{"span_id":"188","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433787988000,"dur":1000},{"pid":1,"tid":16,"id":190,"name":"transform prep: unknown transform type","args":{"span_id":"190","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: true\n"},"ph":"X","ts":1546433787992000,"dur":1000},{"pid":1,"tid":16,"id":191,"name":"transform: unknown transform type","args":{"span_id":"191","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: true\n"},"ph":"X","ts":1546433787993000,"dur":254000},{"pid":1,"tid":0,"id":189,"name":"task: transform","args":{"span_id":"189","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433787989000,"dur":261000},{"pid":1,"tid":0,"id":192,"name":"task: java pre compile","args":{"span_id":"192","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788250000,"dur":46000},{"pid":1,"tid":0,"id":193,"name":"task: android java compile","args":{"span_id":"193","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788296000,"dur":80000},{"pid":1,"tid":0,"id":194,"name":"task: check manifest in instant run mode","args":{"span_id":"194","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 72\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788378000,"dur":6000},{"pid":1,"tid":17,"id":196,"name":"transform prep: extract jars","args":{"span_id":"196","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 2\nis_incremental: true\n"},"ph":"X","ts":1546433788398000,"dur":1000},{"pid":1,"tid":17,"id":197,"name":"transform: extract jars","args":{"span_id":"197","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 2\nis_incremental: true\n"},"ph":"X","ts":1546433788399000,"dur":92000},{"pid":1,"tid":0,"id":195,"name":"task: transform","args":{"span_id":"195","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788385000,"dur":124000},{"pid":1,"tid":17,"id":199,"name":"transform prep: instant run verifier","args":{"span_id":"199","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 20\nis_incremental: true\n"},"ph":"X","ts":1546433788573000,"dur":1000},{"pid":1,"tid":17,"id":201,"name":"task file verification","args":{"span_id":"201","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433788577000,"dur":1000},{"pid":1,"tid":17,"id":202,"name":"task file verification","args":{"span_id":"202","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433788578000,"dur":1000},{"pid":1,"tid":17,"id":203,"name":"task file verification","args":{"span_id":"203","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1546433788579000,"dur":1000},{"pid":1,"tid":17,"id":200,"name":"transform: instant run verifier","args":{"span_id":"200","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 20\nis_incremental: true\n"},"ph":"X","ts":1546433788575000,"dur":5000},{"pid":1,"tid":0,"id":198,"name":"task: transform","args":{"span_id":"198","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788510000,"dur":86000},{"pid":1,"tid":0,"id":204,"name":"task: transform","args":{"span_id":"204","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788597000,"dur":13000},{"pid":1,"tid":0,"id":205,"name":"task: ndk compile","args":{"span_id":"205","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788614000,"dur":1000},{"pid":1,"tid":0,"id":206,"name":"task: merge source set folders","args":{"span_id":"206","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788619000,"dur":2000},{"pid":1,"tid":0,"id":207,"name":"task: ndk compile","args":{"span_id":"207","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788629000,"dur":1000},{"pid":1,"tid":0,"id":208,"name":"task: merge source set folders","args":{"span_id":"208","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788631000,"dur":2000},{"pid":1,"tid":0,"id":209,"name":"task: transform","args":{"span_id":"209","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788634000,"dur":4000},{"pid":1,"tid":0,"id":210,"name":"task: transform","args":{"span_id":"210","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788640000,"dur":3000},{"pid":1,"tid":0,"id":211,"name":"task: ndk compile","args":{"span_id":"211","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788643000,"dur":1000},{"pid":1,"tid":0,"id":212,"name":"task: merge source set folders","args":{"span_id":"212","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788644000,"dur":1000},{"pid":1,"tid":0,"id":213,"name":"task: transform","args":{"span_id":"213","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788646000,"dur":1000},{"pid":1,"tid":0,"id":214,"name":"task: transform","args":{"span_id":"214","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788647000,"dur":1000},{"pid":1,"tid":0,"id":215,"name":"task: transform","args":{"span_id":"215","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788649000,"dur":26000},{"pid":1,"tid":0,"id":216,"name":"task: unknown task type","args":{"span_id":"216","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788676000,"dur":1000},{"pid":1,"tid":0,"id":217,"name":"task: transform","args":{"span_id":"217","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788678000,"dur":40000},{"pid":1,"tid":0,"id":218,"name":"task: transform","args":{"span_id":"218","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433788720000,"dur":2000},{"pid":1,"tid":18,"id":220,"name":"transform prep: instant run","args":{"span_id":"220","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 5\nis_incremental: true\n"},"ph":"X","ts":1546433788815000,"dur":203000},{"pid":1,"tid":18,"id":221,"name":"transform: instant run","args":{"span_id":"221","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 5\nis_incremental: true\n"},"ph":"X","ts":1546433789018000,"dur":21000},{"pid":1,"tid":0,"id":219,"name":"task: transform","args":{"span_id":"219","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433788722000,"dur":337000},{"pid":1,"tid":18,"id":223,"name":"transform prep: instant run dex","args":{"span_id":"223","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 3\nis_incremental: false\n"},"ph":"X","ts":1546433789064000,"dur":100},{"pid":1,"tid":18,"id":224,"name":"transform: instant run dex","args":{"span_id":"224","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 3\nis_incremental: false\n"},"ph":"X","ts":1546433789064000,"dur":100},{"pid":1,"tid":0,"id":222,"name":"task: transform","args":{"span_id":"222","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789061000,"dur":5000},{"pid":1,"tid":0,"id":225,"name":"task: unknown task type","args":{"span_id":"225","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789066000,"dur":100},{"pid":1,"tid":0,"id":226,"name":"task: pre cold swap","args":{"span_id":"226","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 48\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789067000,"dur":100},{"pid":1,"tid":0,"id":227,"name":"task: fast deploy runtime extractor","args":{"span_id":"227","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 21\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433789070000,"dur":2000},{"pid":1,"tid":0,"id":228,"name":"task: generate instant run app info","args":{"span_id":"228","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 25\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433789073000,"dur":2000},{"pid":1,"tid":18,"id":230,"name":"transform prep: instant run slicer","args":{"span_id":"230","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 4\nis_incremental: true\n"},"ph":"X","ts":1546433789142000,"dur":3000},{"pid":1,"tid":18,"id":231,"name":"transform: instant run slicer","args":{"span_id":"231","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 4\nis_incremental: true\n"},"ph":"X","ts":1546433789145000,"dur":5000},{"pid":1,"tid":0,"id":229,"name":"task: transform","args":{"span_id":"229","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789076000,"dur":110000},{"pid":1,"tid":18,"id":233,"name":"transform prep: dex archive builder","args":{"span_id":"233","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 29\nis_incremental: true\n"},"ph":"X","ts":1546433789286000,"dur":2000},{"pid":1,"tid":18,"id":234,"name":"transform: dex archive builder","args":{"span_id":"234","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 29\nis_incremental: true\n"},"ph":"X","ts":1546433789288000,"dur":71000},{"pid":1,"tid":0,"id":232,"name":"task: transform","args":{"span_id":"232","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789188000,"dur":205000},{"pid":1,"tid":18,"id":236,"name":"transform prep: external libs merger","args":{"span_id":"236","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 34\nis_incremental: true\n"},"ph":"X","ts":1546433789428000,"dur":8000},{"pid":1,"tid":18,"id":237,"name":"transform: external libs merger","args":{"span_id":"237","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 34\nis_incremental: true\n"},"ph":"X","ts":1546433789436000,"dur":2000},{"pid":1,"tid":0,"id":235,"name":"task: transform","args":{"span_id":"235","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789394000,"dur":45000},{"pid":1,"tid":18,"id":239,"name":"transform prep: dex merger","args":{"span_id":"239","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 30\nis_incremental: true\n"},"ph":"X","ts":1546433789486000,"dur":6000},{"pid":1,"tid":18,"id":240,"name":"transform: dex merger","args":{"span_id":"240","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 30\nis_incremental: true\n"},"ph":"X","ts":1546433789492000,"dur":14000},{"pid":1,"tid":0,"id":238,"name":"task: transform","args":{"span_id":"238","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789440000,"dur":68000},{"pid":1,"tid":0,"id":241,"name":"task: validate signing","args":{"span_id":"241","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 67\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789509000,"dur":1000},{"pid":1,"tid":16,"id":243,"name":"transform prep: instant run dependencies apk builder","args":{"span_id":"243","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 23\nis_incremental: true\n"},"ph":"X","ts":1546433789514000,"dur":3000},{"pid":1,"tid":16,"id":244,"name":"transform: instant run dependencies apk builder","args":{"span_id":"244","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 23\nis_incremental: true\n"},"ph":"X","ts":1546433789517000,"dur":2000},{"pid":1,"tid":0,"id":242,"name":"task: transform","args":{"span_id":"242","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789511000,"dur":10000},{"pid":1,"tid":16,"id":246,"name":"transform prep: instant run slice split apk builder","args":{"span_id":"246","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 24\nis_incremental: true\n"},"ph":"X","ts":1546433789525000,"dur":2000},{"pid":1,"tid":16,"id":247,"name":"transform: instant run slice split apk builder","args":{"span_id":"247","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 24\nis_incremental: true\n"},"ph":"X","ts":1546433789527000,"dur":1166000},{"pid":1,"tid":0,"id":245,"name":"task: transform","args":{"span_id":"245","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433789522000,"dur":1172000},{"pid":1,"tid":0,"id":248,"name":"task: package application","args":{"span_id":"248","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433790695000,"dur":52000},{"pid":1,"tid":0,"id":249,"name":"task: build info writer","args":{"span_id":"249","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 70\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433790749000,"dur":6000},{"pid":1,"tid":0,"id":250,"name":"task: unknown task type","args":{"span_id":"250","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1546433790757000,"dur":100},{"pid":1,"tid":0,"id":251,"name":"task: unknown task type","args":{"span_id":"251","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1546433790758000,"dur":100},{"pid":1,"tid":15,"id":252,"name":"base plugin build finished","args":{"span_id":"252","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433790777000,"dur":1000},{"pid":1,"tid":15,"id":253,"name":"base plugin build finished","args":{"span_id":"253","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433790778000,"dur":1000},{"pid":1,"tid":15,"id":254,"name":"base plugin build finished","args":{"span_id":"254","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1546433790779000,"dur":100}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-56-30-797.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-02-20-56-30-797.rawproto deleted file mode 100644 index 3418115e74214b8ae082bd37259e230ba62c6627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15142 zcmd6tdwf*I6~}jWlQ0B?%VS|QxU4AcMVoCBASAIqz-N8b6k2Or`$)njfSAw_YOB_U zM<6_efC@nrQL9oBL;;DFmVg0~X95@kC?ud^K^`Hz5+cxZ=gizYH-whU_VX$K!TFy1 zn=|K}nYo)g9X)*l@d@>a%-*@(F4(G*@JU)h7OKRNF32fe6Dhp|@kVI(Mc z_|%ZJ+`OFZl$JbGlAwt3y&(7PFP(b}HOu|&l*rVROO(}RleRzqbbof_v&pCOV|ygg z(wCQSB--MSHax?c77%~8n>$3eNgd=Ll#vFR%L-~P=DN9KbXzbzoR<560L6j-e=f3khtOUB?>m$C2IFLmY8r=NK7=NI8Xz*Slr-zB9p?Gm>j;u zG`mFIROdyVZkJg6nsbR4uL_A-;YU%oNi=xXMNRxyZ%3Der}dRyy~H<6O)MU*gsOxkUbgqmC!?zKo)H{!?Gq(o`ix3SmsTtNTw<~*F=zZ?qE*fNzeqeEeiYNfmnaHfV!M%W*Gfhm6WI|-mrpbg}V=mX~yskBSL+3q+OJM9uhOPx#XkrJT^Z$LUj z=bcOJZzfSt?|33#hcEF>_!0-CMB#*wjaJ~-hxodw}b zERqt%$JVZex2^Rj9Y^tDGl|pACB`<2TohN=ZiJ2RwFbvgOp+2+tLAJ9Q=)Fu+gB(t zSw?Z?5=By?Vcg~`jN%2mMCk{R&M)Cq?Roj%CdQl<6)AfArE)kCuRvmJlPqe(^1bkd zWa(MQQCyG`n;qpJ68&D?okZ?*rM5S$9yWHJ(R2Q` zx<^{QG*XLT)6nkGqolnPRjd)x>ZMd`#TKG>wBFXTw+8!iw7c~-(%yx((W2QWXeWB8 z6#!xc(}lJLutI`^3b+QqKP5P%fOY`>g&<1*Rsrn+lp%=F4=X?euue)HQ9uU(pG&Eu z3g`%63j()(OaYw$R7j}?1#||mRf6LR@B-L|z@;}Tpo;}O`WXdu1yG4kbkyqDg zeXvetS-rFy*r$Kao5`gQk@ikBioJv0!*nAW(RkOhx#$}S?dX zzz+c&lb}igaRBOMR67+AuY&ywNC0qLO6^uaZvgcYe5rsw08SzB=wB(IFMtO5M2!i& zv?tU_)Z<3zJ5dfVO$2)*J`lm}ydS&JB&{Dik9JW%-oRaGvI=h3IbY4FJZUd0NUNk+gp8&U8z=QP@;0^#|z4!e1hn_ zegX^tP#~pv{RFs61-yO&+znv7e1g|cfO{-JbY4FJ?gcPG4$kW*zcssc(cVM5L9XMU!#-oK;|IY0x*T|jw0EL6 zureI=H?Yr`d&GmR6n%|-#v}Kchu9jl8pocndg)KJhgk*MjeW-SR;&@y>ZL!`QrRB# zj)Hy0R2c~Nucb;GY41XRrVU~T(9ZkRBlnq~s{s1c1dm$4ZS<)LegWX1l!87r!DA|b zJ~hEFEkJbWQxp6Oz#){1H2Ty8zXotjjsbmYg2yeu`_u%#0Z@le@IE!cZvh;a0Q%Gf zzXMP&$ACUH!S4Z_kWWCLnjj6pN%;iysR_~noRUvKpPC>8z*z(y9r{!NFC7GRszuNh z`p&cu2Kza*M{&E@XEL=QE8rKY;LaVK6COM$yU;8P5aXOM!4LrBnA|A3Sgfx$H=jOsGoRZ1b|6Wiq}to zKd6A$Pk>wt5S`agfRO+uqZHp~%)#>j6iLAAC!QDuV7eTf*N+1)4MLs9B523!B@(&%{u9{$E(abW?Vac&YzKD7K-g!5_x1G8 ztO@=JHOlH{Z#%e!|QXP zXXv{?-=*@uutI(Z3iR5+?q`f|(|?ZPtu_8Ua-05N8D2>fyqUg_<`Xsr2QVgh(EvU= zny?}(0$5G<2z+!5VKbULC?WXhSicXqsY(IfUW$7=JrcL05x(g|LG-!~k%>YT9CWm9Y2tjSyZ7bg;!R zmoU6_!edY~DPnkyu$8D_tbbIn#W0VsGIaPEIAFPL4zCl2_d%3Y|3aO`8-%^WF9wJ` z%t-Z7Rv;dKxtNSnjo2%C!v9n2tms|s%swiq3{g9FyW=I}OQ6_x_d!shS}Vf)b` z(wt_jI>da!@REh!aKJJcw z68{1%mY$Kxr&Nc9gyGc%Q487CF8DtjS3bH3wtGtf6J;CXeZr=y4i^ovm@vFlpj1;i zv3&Fc!lt9btvnAHgL!27=!b;uMF(RGf;al+=fM)##H<)F)wUp)64s@057#rzBY9^NxhM(E}*P03*)u9A-IsWZgEIn%$BGn(mx=f4-{REaCI!yI(4`U3E_4eVTD+t?O$A6{b>p`<1V(7mJtC9}oT@xbU z<$@UNBUKwiy3v)eLm@p+^onM4BDDcn4e(MG5eoG;Smcg<@2Y3lLLUh9nV5HOzV@M2LL)bB-kK+Us z>Z6|$R)h3eGdv~!82TBMfPY1UB69K0mN=uI!-r?WUY8DAyUKAHUC+@QEujq@y?HT; zp`i8}+9NSqWjG&QOV}R%+1vkUOVRr1M#Au;Hs4_|+qRC{MA%w6t}MqbyyZksZYFF4 zIv52-1>1Yn7AU!;fct|@p&U*-yFGu`r2AXC zo2b7+l{dHH7`hjhCjUkUX9Mqj*xq=9bM%&E;!2XPP@)YdOTwTEZ&P!GjZwP}6q+ z_CBOyEh^MUzk%N@NVApdDcL&+Eyh1j!dcC;cfBfp2woPD-iNhOXm=Wd-a)#_`Z=Sd zFNPk5pA!7Dqo1OB4^{mLoNh?nsIE{S{gyEN>gkVdIrL-jPRKt6!j{WJ_o?D_@a~PY z9f~W|M~@PgkM!=A#C`NQVQbLAn%Z4fU1R78!q%gMs7hBcI-E!`^dw=Mkcz1()JN+H z`wVGxOQXlo)3ANX$NAKlCEksmfxQdq)YdpR1$U>XAaRIaw0>16W%1Dl*f#hVP=6nD zeA`Q6Bb+Dvo1Su--D}O>N6!-W7CN-}d*4T!2*YoaEx*Barr#0vF)9!}(pXu>UsXHP zbA+@#DQy$Gr=^wW)q8PKb@ZR2dPnv9jj)>4dny4=m8Rc#qJC0)_;*t0hlSxY z{853Zwox686jMC(iYXrXi;-p+fJ|Rht?1c?$$ehx*Z1X@+9b7qKC0ghQ<(Ro-Ne-{ zfKy!Y=Q}m*(4+6`Z@m0kYQKb6lKc4s@V|s!FZb{LR!Tz3Td%*-Keb2igkG<`{8DOX z71z04Li>co*3bW_;SXO*?$s-`UmHaKbt*P(ZeQSgz4_AL(TR|^+n03Cz>^U5Dxt!x!C_;#>F=q$bliIa8D;`Bd+L`B`RIHM#ovPZ1dObx@4 z%DPKz+{vX?I&#To!&g3b7?oBSSq$2x3VidVt%fgu+XrDwOi&VKN7J`~#If)t7AcA1 zac3fwSga%p?p}{jVoBX4HY;iA_9ryb(c6%cZthNB4hP#=t#!Z;bG6zYf7Rx z_iTg`*Z(0TZmKNG$KH&vBPR~?!dJ0n{l~C&&Rs~u**f@|YRJbzT$V2>iM0LaSAoRE z1tjrAutey~a_JGyB4_V8xQ^tU$_bH0Xo>wwqH4#&bs#ZrR@f3{K@!8mmpBk4aeZdk zS&S`LSF=GIHbH@}41X+&j;X6z<$zO$FD-k{yYeL5Yt=9{^l;uh!xEWSj^2RvqG&!z zgkh>9k#prtgc4t=EQ&8&icsRVBaxqeGqR4{sk_9GN*>OPgJU3z@-ZL2D^G(XVGQRe zC6RVueS{LDgCz39&tl9!gv5B2MfJqv_E>BQzaul0M9%qvx9n9be2JNLmzY&|iPcJ? z^xU1VVBsr-n1PX zMu|=$Yj@!w(^tK!>^*sMu{~3pc^`F6dD;kZMZ88D9YyZE1%o{r_x-s1HAvi2S(IH{ z3R#pE98f*E?=0>riGsNwgG9xVI!ok!6~4rPJM1cDk-IB=iGg*O7+iOWp>>xS=9S2( zIvBR8?<UYZvJz$1O*ZPNI1D$tt*K+dIw? z37W2^OsRF<=_aQrjf~NoFWplk)Qw*^IaO&CuPKRCW4h8PJ6sm2#*D8)W0umWzI{B> zJmz>caz>61ofo7rH3E(KN~2)fMd(XTK?E9kUxUVi0W_GAN4Ebb;`I4_Rat<%Lw?=4hr*GsuGA2}JnZC4bb3)}2 zE&m!Kk8Gt;e);sIduoKvW46-BxRg8D^c9^7nMY`iIZC4_XF;SI^OQz)`O-)=Ryi8Q zUxG&Qin*c2G<089D~+708ViVVT(UGm$rZ4kW1bJjDjf$g7b0XBpaWt;1j8tQW(n#A_ z7^%h*rIERD%nZ20&RP)un66M7RryOJ)hJXN#px?SBlBnkd8|?z)yoPZ)mW`GvaUv~ zvF0yy#_~`ahWu8D>&rH!QNC;yXq29cAP+|)?P|mtdsH69Yl|R{qSH%5 z^(FMWzN3=IwD?BFP}5glSjZY}?te^oDUFN^*%>fz*GHg{eV+3us~kQG*3*(T;pZ_^ zX=IF>0vct*IU(Kj$VZjr;>^ zBGs6$G}4xroQJ3Nn<|emYV3^C$elI*B4}K;ua$OR!qAwK%j1#z*-cnKs!Gz+4Y^@y zt@Gu%5c6f4(x_N^9bR7CLnHKBSgJHK?#%f>*9fC81Lt#J@|O)68KK6-Le|JyceMbn za|0(2H01hawT{O(LyX5IrBQuq{>S&!2t6K`l}2vHV$jGP8#0ej8qdhHX_@p!sCdLx zc+M`klQ9Img}&5yBNQ!%n4vmDBArB0@$xHPk)W43p%UpPZz_$djUR(XdDbu|k^9!T zr8Ej|t&UXVuF@#W|1?sK^Z_`iokT(ArbsmgDvjK^#gS@EP#UFI3a`OSl(P|x=`^L0 zb9HT`8aYa%V8!N0HD)*(d0QjZn5Q&yhU|}2qe5v^d~nA8TilBG!>`jyrBS{Ae54xZ zhH{OS%_>(MvaWKulE__sEkcQdN}{4<=x(^u4Lz)Sa^G3pQ4*z-^FX3{G5jTp z2IIaZrq03fgue}z?TAn!M@bZ&+7qF~Y$Z{>`DBC=`AVXEbu~z2-VT2(mMe*j%=hBYTg7M8>%D@5wUg$T#nE z4NW(i3zL5??iT^GqtPX*dlUPpCC}oI$oZV# zYapj=v;P?E|90R(_xJ;Fyoin)fkx_hOVP;JP_C!rQGtpE01P{smf}Gd7=beyXbfP3 zI-^np54peyoYg=R02|dA=QQARfe|>bfu;a9(HZpu7c|fez*YiA;Gzba1K6fOwFX)M zC{c}H(m;$3ZfKyT3yi>Z4a5T2PEyfNE@1l@Bm!8gI)U~vNCL1v+S;pX>0Blm}qJ0Qr zL>sVU4FQ36@bMqQaXx`&*+b;Uk9_|uwi}(H@Dmr9WD|p*0w_^!piK;ZrUSHz!N2GLZDR1RIzXEkJnI6siNVhSY^TNz znq>^01F%B@w28ql0F-zc@$r9y<9tGWw6BTnMvV9+9N(wM`^cq# z_jQ+FsFu;bdIX*aa9FjB_Az)t2e?Qw_zxYReGL9n2WTIIU+DntWAJMiuzd_(1W>NB zLi-r}Mh9pgga6V2+Q;CxIzamv{7whBNHX}n3wV)a@CN|LR90vogFos3?L!bFx`Q1& z?DfzlKK>^-&Pp`PnvxqSzGQjQV^e(sJpi0iO`}Z=UeW>D#2{4%XcL2;IzXEk^wI&^ z#Gtnecrj$~GJw-6E3}EhD=shsXcL210aU0n&?W}2=>TnF@VXArCI)?6z&0`H3!qZ9 zfi^LCLkDORf*6qucJQ#1O?>>n;W#UqXkRnijTq4nj-R6z8shQhllsD5zjqFBM}Xyvy1@R$7mFy z3?+yLGRo8uTgYfMqG5DaJ-X5{8iQ!0Y70$dG#1e))fUb}L@mW2+pU2_=q8cDI2-UO zbiIqAi8bB^O+c-vwgOEJNAYYLr2ZZVi^16HF8Vk~);Yxw3Fa*k>TZEQ$rz89g5jPkq) zZDjPJj(D0fT7YP-Y71>-w9t#tMn;Qt#5OWojA)(`L>n39dlA~mXo(l0jf|Fh5!%RT znHS-OlF@P<@lwlZ1)}+sAwT#rT8Su6C66{DYANQ~Zp|h_HZu6g27C&ww$k>hr6{n$ z0y=~4V;?5az*k?rlbL1)g!}TP&;U}XTJNnu3sGO*qBlNk>Idw%2Ka)gh4>iWv{Q66 zyf-q{;Z=s*tP-`<;aKsB;ahFU9ZJ5wA}xe|I9eT!74X4;PYqc{Cs^?Ih+Bviu;CEM zK_%5l5h>ue5bF$iNRgdQ0O1=XDK_ZH2$X7QBcdk1tg@$%{(NPD*3fTAQI%z)?vt6-bHxkyf*C(?JJ}yhK z*YNFu9{{M9&|`cNBE>#0LXR2k_agL|QJId60D8;_eoF#vomOq3$Bf{o89G9b8Nt2; z7qQ2T4k0?D1kqzgU+BmPpvR03BdSzqp~sAlcoBNcs2tH*bryQe=%^Q=$Bd475qiw% zIHGe(5Itse0?~Pe&|^fgVh=jWe%ULL*@ekTBz#gd5`5N<6|e^u>f#c~+3TIz1s~&L z#ixdEjk7Am!}8^<3a61&s}y=G(n7!q`|0pEVEu9ystQAn!Eagk>%sbEsrBoOAt%yd z6JC7t;aG9j@KqXe5)lJleLE-UhojZuSaHGdoj2rECH0_7;8!d_rYosNibw&!U#K!< zHj$_R)V8J8FZha!j-a+31bJmvqQ{Jedl7of2!84Wg3ej!F{2S)gdQ`3A2;b|p~sBix0itOR2t|pqf9SC zj~R{Dkx3pi8iQy72^s}Y@|ek3Bn#;z@|f4JaYz;uu~#-rtzYmfxO2{` zAYuJ-7MSs-O_r-Z^;V>XfWuSh@WZfv@d4wz%gWfaiTX`;Q}#9ZhF1w=amLJyc{%Iy?jIRR1+$Tj6I z3ZQ|q-FjOehxw+YFYNeTg-3LSJX6xgZ?KzgQ948Yp(#J7Ch9{DG?MN0CKi~o+)a`K z9?=69Le)}0h^k!#RZ9VlohAah!eUciahsr$^5l?jO8VxER#KiEmY9;hC=;q`mzweh zHQ^SemP5Q)X3AR>aHf%CMnE6R<)%D$7+=ZNa{}Ota&AejFy&DR<)c zP5ky)Q{Des5BLb&q5yX&U)M*f0NkPg>V{nqo`6DA9;ASd&;$+TQ*IOS;$u^e!w;nR z7nl%1etIHSnQ|?D|HNO|z)4e!h!d+#N#7<3RaBqAVB$AF&@XC3>it+_O8PVj2h=F+ zPfbZ*4GEf_PTdwc0Rp>GV%3=6H1RU&I7Sna6q)&oqMde9yy(#H~9~@94$qlBY z&v^t@os;B7C%~SbOQIBYWI1WM8_I$C5bJ>WA_(pNHqnlRx1xKtK90d8S;)fG0I zl0K5*e;5bKUMf8~Y%%3}%E9l9q$h{1Fu^IntxCGEaSq#Hf>VH<1KI7#p#-iv6!2RJ zpu&GnugdMFq)$)y^P6FWJ=XBGNOyAWFy&SJm;#zX5>H}3If+tOBPhVmvX+%@C#(?^ z;4a6l^(J;fQBr`rn0C+ucAJtu=zwO_(!?H9rs1A?E^B+NTkB@*HD!8mKnFcwA6(cd zAb70#CSt!ShXgBlnkX}6h8sXN=Lz^6CPr|8Cx-*3q)!~ws5#Ezpect3D|nhX1XGIw zT)(xUZY2(za@t*7OPdBtW0RuAV?Ov^E!>hfPd6SFM@+eh=)y+=JA-h%_yX=9Nd0gt zr<}UFMzs=0VVT4a6ToE=RC+>~1g51?AKZ%;h(Crr5?KUv^6 zNj^@OKM9Q!9o>NBH5@OFoBX{4f3dr~YVvX7lqtvKMsw{lp^aXgIBoJ*2GAgyZ=ShO z0mDlQ?u7IhbjFm~6yRP2JTtb^l=J}s=whu?`m8BuyG>A;d2%>sO4|C53boYXd3fq_ zbD#iE4j15&f&%QhP$Qs~s50e73TQ$;G}e8%WXe56=UC)}hU3LW_`NOR0q%O>@!_&5 z7ve^HUUJ+^3@$mX#8t3T1z?$J4LmBoG-V0VmC?1de+6zp3EvIT{xyie4ffiS_l#TS z@!~q%qEf&Gx0Kqr5pkj#e8zptp;oLLrp%!LO2Y1A3tizR*yt+Mav8m4%DEIkwPu2X z=Pvgvc;cmi=2%L0Ks&vO+oq%q>)21a2znlz?wFExqjM?MXyUFZKcyz@J4~xfjV978 zSwaDiLx9mG8glSFaSX6z6$Q|R*j6y~B-1VV6$Q`}M~#4imK=rKcl|!636H`cOVYk; zp0z>c6ek8-k~US>Sa&sELQ1COl6ZLoKO z6x2xZeO0^|X~~TgQ0lhfxmh1&$qBew*53{~N)_QrBGclX!CFmuk{E4C+OiwuhI4Z_ z25O3$uqPiiq2&-S##(YO1>E#Iqpd~6iE);s?YR8-X8WZ*QpAh#mfVedZT;Kqb(s9{ zJX1`7s={5cnqi)2iiuD(6!0e}P3>+zUSwHv5blBXr`r!U@H!Z>@I*|qWCreV^$(*f zqMfG}5ho^FlJ=g~UKMd-iW6WL9<|{qys2Oq?zBV&cb##DdzvLDQh=>M!|hR+Zb{lR z8p^P2OHL()7LJ1FE;PrIODN#9JrcAMdG11ISd#W~)>x|ek}wO}zzvd+1YQzgA+wY1 z-Xh&-C1yLc5nT~98YgC2k~Vqzn>hJ-E=Y4MNjo_GT_Au4(bIvs@FQ_*J^xXRuxE~^ z1M?sQ-1HbU%=|pjO3b%pwhC}MVE>5#JCNtl@4Fpf8YglsNxL%rPdWK{I`E+-canG# z1W+}5Ii=@jf5OAbx9cdq##&~E~x zyT{m%5}#UfG|^f0^qVlm@!}Ip($+bDI=zyyt@e~`ktNULhBS1NjQWoL#J1LwwCjzR z1bdLQfL3C?CFf*dg3nWeO<_rZ+PDAw|Crcd$?HTXjWsAkjr+wqsCR1r@pe5R1a4|5;5*Pnjk(lH z?6Blf3gG88`##-Xwcu&9l_<63aiTuALYT&h?Up=5)V^~hanI=QvSd1L!&1ZZpf0}K zp%0O`M&razOWq~%$7&Og6MJC2C2_m&G(|mq-wT(23aE90wG#Vbf++>(8O6CEm02>E zsOk2dX`I*xl}psUDfaaJ09fM@w|nP^AG9QGP=k@dr+AIViO=C;OXs?ai%0wmxH+PL z2HuGcSE5J7VN32Ky3g};6>VRr;>97T3BsSy+u9lv`-mlJ;~K7?RG6Npt8zb zAu%xc6ybTgItq(8ZW&{V8q41?i}#e(9?(J@hXNo45vT`E@K1S8z?y~|$>6+tP;`9w zq~|c)o^)?A#^}Iu7PCb)S hlTtgSBzEZebi1cJz0@(WXWOH-#@WgbW~(?bY$#P_eDp>M@IcAx<^d6jKJVP($GM! z(3l>P#=n!JqI+j%RxWGOe|j1Dvn$P&@hbJSZt_?pT*};j(zR(!Ec|~=;{B9p#P8Bw zQLcEB?53^WaMK6gBbkH%a%-*zQLoUXApJ6Whm?al=jB4QUs;?c#kBLgP}> z-+Ft{;6O&?8%Y^{9sU(LaL}-{;mMK7!{2&)SRf@Wa^T=W0|JTCFR^=MY-DtoK2L=H zW?6OOr{-ON>e+dj3mOOlDx1=FM(uXAt8DPvgrki>>O6XT(Z(On?-_coq;3)RW}m34l+mr=1+^xV?hd}1o9i7=Mr5t=O1+ufx z^wp}C?Ci{DD+wHO2o!Bn7C7P%$R4pvHG*Rff#CRWRRzwQ0<*64)k+I?s|wthCpxk4 zi!I?=`N4|L?4t&fNLYL$L-n>pAp5Jzh6Ng*$`j^`2=dqN3)h0b9P7-24Mfnm!1@J3 zAZJ0 zd7rAlB!@t7-F{VpX-|zKW&K6N{%WE6x^*qu|ptuRXKv3r6LDa1=qW4 z`E!0&&A~i}K>frSo%{FBN8D;xqjS8l3q;p%7db}p+*)T+Oq*M+Tn_0A_!Pd2ZR z3&hcq?* zv_n~-_-+Ntr9jcTxzB3l`Ew%Jc%>Zd-zo>n{Nm@dn#l_y*d!%^0}g@m4ax$?q(DwZ z`Ey#{?L`r6ic$o{+r$>Kr?2d#l^k9b!EzJ?da~NvTp*5Co%r$(TJFxNvFt*s-w!8a z$8R8Rwuv-yTAo-dLa3}M{G(R1VwzB>^D9c@WBH3;gh0vUf+Q`tbVDrrY@om6ozL~J zGpFLuFjX@zrD&DMcgC`{N&>S+3W4f>E*-2@&%6}N%9R9`OM&3^!-KV=+RL%*kdnZe zQ6hq(_4)5;nPW!Av2#iS^T!H->}f^sY2~wbKoZkblDJ0-WPbVcU$xwcyHy3s90FBA z5Lm7h!4Zc*_32Vofn!dAt9w)hs--~9mNoBd2pKG2GGSExo1lma;$=6#?QF0E7(=*jXY z@d)B*{^m8~iB>veR2(~>=Ks~5PSu{QSSnAsP&8w#Y78rv)6?3G* zjr}iaC2K~;vq^)Yn021ggl%c;DgD{Uq9aRcKI)_8O&%>2?)WKvdY%xdS&`pQ%bW96 zJe%{@o%hod?1~hqF8HROR=7i1VETL!LG{PC`)S$1jq&Vbr3i|a3xWKyrO8_E<(vd| zI$dQ8AFdPvIfsrXYb6_MK_Co}On1kVp03`+Fnd_RDQ^BKME6K@ z7;OUY-*%nlAWd&7?QLiX+lkh}dWf{Pqf~3g4rLkVN&g79evbrUv^ju^ksL(nEu_62 zZJ~v-@=@F#saG`vK#XwO(R%=l9nC>g{j?3V1TYyv2mOo&Ef0lJzS#a6f>#<3$#)*+3}NV+!Vd zMpM1H%zGGp0Kfvg;vH^x8}$gI;b5OJfh)bp?H;UCGp#Axj}@QVLZ`B_Ve~-&XD0Fs zh@K|xZD~_hbb+_iXI|Y1h__!G+JTLm#GP9~Q@W+q%VwdqJ@llohEc!fV=K|#9D369 zwpl}@HH`jB>&Q+`=Gyl{OPVSVgZ&!XJ zpaYm9uh?q?T>wl);L-QlKvw`WB-n2Qj{=w_rOIp|0>EqpP4ojc&<((R1TOtM8;ArD zlv2lR;6DI-g21Df+dve6h4PAnHV_S9kzC`r4a5LgBBg$?fyV$WLqPRIHqafwUIZ=m z!#2?_g!0Jk^6Nz+k# zNZ!ZS2}~OEM(zcm0xxjEq!ISE^dWW}+vXO5Nh8c{=zp`DQ+c{uz@+iWN%I05GmTqY z!lV(_F#3}ABAbr(5STQkx6K+Ntzq#*@MX!vKs#AnGTih6Bi!SMd6A5Jm$~r}MaYIIoki{{`&g0^_XX=_w}7 zyI`M;LK?U8NfSnUYcI?DI28tsc^|(A_MluiP1@Vgm)ROzbr8%M;oX7$m3_&-PxHs> zt&H z-(}~2V@HuU2M$k7;12!2v$M#Xn%trP0mCo5AYSA8I{IFkN!V2s=wJ%i7Vy$6!lv=h zn*1%n0q!Pe1YSCVupl}#F&%6nckSRN`ENvgMmkB%nn3v{Rr z0S_#LBg!#^eaSz0;cLKowC);X30sE_1QZ%bL^fgg=~82v8b{bBRIpM_tx|dEc*1s| zLo2?7k*V%>hY5t?r$vn=Vj^LOtsoo7)Fi?x(7|nH$`Qk4!j7XusOeyf!AGYMb`c%M z8;QVFzHW~)hp?Oc+a15L20A#_m`YeJI^1JAG`AFdbQ)ok_{Tf`6;`=ATX&6@PKR9b zZ)5yMnD%P$+saF45cVxP7*X0YAsl8Bwg(-o8#C4l!b?9SESrD$;Wye6xAB18VHROI z=zxi+*D|?;eTWWSd5}gu9ZSrHU7&;25soE3B5WHvG;;UNftEpsL~{w<3erbECT#2? zK5rLcBI*S(m#`I!xrc{m%5ZQ5F^{l+po0;FJ(YY!dFgz@R-r>{Q^65L5PlLvhiz6% z*gU-S6T))&#}R%b6PWB*tbKUtr!XYY!RQDq_*-^|1uz590jG#j4V#0HE`)8M!#7s% zKV~(Rk1itYI{(1Jzr<)v9F`7`#Sldy&(#5|b!{GAx&)ekGxvDF+(1Hgff@-C+e` zC(*(ARB^%Jfv1+2t|Y7q9gJLJkd7rjC+r+L7;T63ax9Tg7=8gzXIz>~{DZJ+RERMZ zTvoZfw1BW>TX-hx&H&Mut6-+1gYoRcR6BzFg0LcVz>cVwht-5_MhE8vLXA7d+Jah{fe;3NEcfHK4~rQqeX60edu5*Jj&ZnjDT+m z`wktfk?lBA?S|I36mUj36iNv@fezNVbtvp1>@qqSa|#t4LGC5&#=mvg2Yt<7Bf@c7 zjsQmt`w1I?4#sn(-qF!Z%isZu4$VvlM+^tx7*JQi;qV<{GtuEmP{7`HIFv&s(ZOnM z+s)^t2Vn%DLwv&u-xD^6zpJ#JRcuRy(?f(^n!vlWCw6BO(Vg(CZa6&*-93@hSFxFF z)JK1S2NH^pvrc2SW(ubjaE{^c=OD|x_hG{E2IuOP@Vr6_KW`Yr!A8CG2;BNejR`8V zWB!5UrAG-Xk>ZAf98Km7K1SGfbg()#%DVBr^f-)Ibg<$Nt#E@j>Z3oxksHN#H!?a-!+kK7t2agU4wm|Z^bBEV zkZx~|@;2YO9&WB%UJ-wfqDTJquaJYfrvHbHe8_0qHO=Kz1} z>3_bV>V(saa0lY$6ve$l9G(jg(rUu8=JK7LAgFG`K6-($<#_Q|R_Sc9d+8;Z0Q`+5 zzkjhip0;WmPOlJl3msbE`t7at!|7GHdHMTF*g9`L8}-u5@TV(Y>uq>**C0N;T+DQ4 zi9blM6Sfj*PD@m`VITd8uo;M#8-MuL>uevbfzt(l8S39_b%x`xcmtkk{8gdfZ%X{u z+P;_mOc=h+<{*$Seo(s!f3~7RgD1JR^cG=93wVhh(wi8!m+>=eTY4MjB7esS zLQRbG8=7kg8)=z6hIu@Rg*)2A?(gWPO%?ugPa{3!;!{(TAB#?kNsWt6O^J?8NJ@?G xo{}7u8c2!i5!E9hDJmf~CJ+-yNREz6?a{qQ!hrbb)TpS`xR}`3q?qL7e*upUnIixI diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-16-09-46-21-399.json b/AndroidLearnProject/build/android-profile/profile-2019-01-16-09-46-21-399.json deleted file mode 100644 index 59e21c6..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-16-09-46-21-399.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1547603058434000,"args":{"JVM stats":"heap_memory_usage: 44968592\nnon_heap_memory_usage: 49659520\nloaded_class_count: 7312\nthread_count: 21\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 5\n gc_time: 62\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 31\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063827000,"args":{"JVM stats":"heap_memory_usage: 192110952\nnon_heap_memory_usage: 83167176\nloaded_class_count: 10764\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 2\n gc_time: 36\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 81\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063831000,"args":{"JVM stats":"heap_memory_usage: 192110952\nnon_heap_memory_usage: 83043424\nloaded_class_count: 10769\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063832000,"args":{"JVM stats":"heap_memory_usage: 193140736\nnon_heap_memory_usage: 83044904\nloaded_class_count: 10769\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063911000,"args":{"JVM stats":"heap_memory_usage: 194170520\nnon_heap_memory_usage: 82794904\nloaded_class_count: 10870\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063943000,"args":{"JVM stats":"heap_memory_usage: 194170520\nnon_heap_memory_usage: 82844216\nloaded_class_count: 10880\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063945000,"args":{"JVM stats":"heap_memory_usage: 194170520\nnon_heap_memory_usage: 82846488\nloaded_class_count: 10880\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063946000,"args":{"JVM stats":"heap_memory_usage: 194170520\nnon_heap_memory_usage: 82848888\nloaded_class_count: 10880\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063951000,"args":{"JVM stats":"heap_memory_usage: 194170520\nnon_heap_memory_usage: 82869552\nloaded_class_count: 10880\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603063982000,"args":{"JVM stats":"heap_memory_usage: 194588888\nnon_heap_memory_usage: 82969648\nloaded_class_count: 10880\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094056000,"args":{"JVM stats":"heap_memory_usage: 101168400\nnon_heap_memory_usage: 89695280\nloaded_class_count: 11763\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 51\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 257\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094228000,"args":{"JVM stats":"heap_memory_usage: 110340520\nnon_heap_memory_usage: 89800096\nloaded_class_count: 11764\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094284000,"args":{"JVM stats":"heap_memory_usage: 112587064\nnon_heap_memory_usage: 89946856\nloaded_class_count: 11764\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094325000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90056752\nloaded_class_count: 11764\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094327000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90064240\nloaded_class_count: 11764\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094335000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90096008\nloaded_class_count: 11765\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094363000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90156000\nloaded_class_count: 11766\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094371000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90156000\nloaded_class_count: 11766\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094378000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90174552\nloaded_class_count: 11767\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094384000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90181360\nloaded_class_count: 11768\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094387000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90187008\nloaded_class_count: 11768\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094388000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90187008\nloaded_class_count: 11768\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094411000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90226064\nloaded_class_count: 11768\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094414000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90235280\nloaded_class_count: 11768\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094416000,"args":{"JVM stats":"heap_memory_usage: 113732760\nnon_heap_memory_usage: 90235280\nloaded_class_count: 11768\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094479000,"args":{"JVM stats":"heap_memory_usage: 116974952\nnon_heap_memory_usage: 90314728\nloaded_class_count: 11770\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094491000,"args":{"JVM stats":"heap_memory_usage: 116974952\nnon_heap_memory_usage: 90332944\nloaded_class_count: 11770\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094494000,"args":{"JVM stats":"heap_memory_usage: 116974952\nnon_heap_memory_usage: 90351704\nloaded_class_count: 11770\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094496000,"args":{"JVM stats":"heap_memory_usage: 116974952\nnon_heap_memory_usage: 90351704\nloaded_class_count: 11770\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094519000,"args":{"JVM stats":"heap_memory_usage: 116974952\nnon_heap_memory_usage: 90395248\nloaded_class_count: 11770\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094954000,"args":{"JVM stats":"heap_memory_usage: 137864248\nnon_heap_memory_usage: 90730808\nloaded_class_count: 11770\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094964000,"args":{"JVM stats":"heap_memory_usage: 137864248\nnon_heap_memory_usage: 90768552\nloaded_class_count: 11775\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094995000,"args":{"JVM stats":"heap_memory_usage: 138345896\nnon_heap_memory_usage: 90822168\nloaded_class_count: 11778\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603094998000,"args":{"JVM stats":"heap_memory_usage: 138345896\nnon_heap_memory_usage: 90831952\nloaded_class_count: 11778\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603095004000,"args":{"JVM stats":"heap_memory_usage: 138345896\nnon_heap_memory_usage: 90835616\nloaded_class_count: 11778\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603095009000,"args":{"JVM stats":"heap_memory_usage: 138345896\nnon_heap_memory_usage: 90837272\nloaded_class_count: 11778\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603095552000,"args":{"JVM stats":"heap_memory_usage: 152840864\nnon_heap_memory_usage: 91969896\nloaded_class_count: 11898\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097066000,"args":{"JVM stats":"heap_memory_usage: 231996360\nnon_heap_memory_usage: 96490408\nloaded_class_count: 12095\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097149000,"args":{"JVM stats":"heap_memory_usage: 237379560\nnon_heap_memory_usage: 96617832\nloaded_class_count: 12097\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097151000,"args":{"JVM stats":"heap_memory_usage: 237379560\nnon_heap_memory_usage: 96618536\nloaded_class_count: 12097\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097157000,"args":{"JVM stats":"heap_memory_usage: 237379560\nnon_heap_memory_usage: 96618536\nloaded_class_count: 12097\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097161000,"args":{"JVM stats":"heap_memory_usage: 237379560\nnon_heap_memory_usage: 96624320\nloaded_class_count: 12097\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097163000,"args":{"JVM stats":"heap_memory_usage: 237379560\nnon_heap_memory_usage: 96624320\nloaded_class_count: 12097\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097189000,"args":{"JVM stats":"heap_memory_usage: 238351080\nnon_heap_memory_usage: 96696240\nloaded_class_count: 12097\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097217000,"args":{"JVM stats":"heap_memory_usage: 240020304\nnon_heap_memory_usage: 96750984\nloaded_class_count: 12098\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097227000,"args":{"JVM stats":"heap_memory_usage: 240020304\nnon_heap_memory_usage: 96759800\nloaded_class_count: 12098\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097230000,"args":{"JVM stats":"heap_memory_usage: 240020304\nnon_heap_memory_usage: 96791432\nloaded_class_count: 12098\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097231000,"args":{"JVM stats":"heap_memory_usage: 240020304\nnon_heap_memory_usage: 96791864\nloaded_class_count: 12098\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097247000,"args":{"JVM stats":"heap_memory_usage: 240506064\nnon_heap_memory_usage: 96818584\nloaded_class_count: 12099\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097326000,"args":{"JVM stats":"heap_memory_usage: 243843056\nnon_heap_memory_usage: 96855488\nloaded_class_count: 12102\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097328000,"args":{"JVM stats":"heap_memory_usage: 243843056\nnon_heap_memory_usage: 96856320\nloaded_class_count: 12102\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097339000,"args":{"JVM stats":"heap_memory_usage: 243843056\nnon_heap_memory_usage: 96890480\nloaded_class_count: 12105\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097601000,"args":{"JVM stats":"heap_memory_usage: 252386536\nnon_heap_memory_usage: 97075632\nloaded_class_count: 12106\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097776000,"args":{"JVM stats":"heap_memory_usage: 260502632\nnon_heap_memory_usage: 97173320\nloaded_class_count: 12106\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097778000,"args":{"JVM stats":"heap_memory_usage: 260502632\nnon_heap_memory_usage: 97173320\nloaded_class_count: 12106\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097788000,"args":{"JVM stats":"heap_memory_usage: 260502632\nnon_heap_memory_usage: 97183384\nloaded_class_count: 12106\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603097928000,"args":{"JVM stats":"heap_memory_usage: 265477768\nnon_heap_memory_usage: 97279544\nloaded_class_count: 12118\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098127000,"args":{"JVM stats":"heap_memory_usage: 273994576\nnon_heap_memory_usage: 97461320\nloaded_class_count: 12119\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098133000,"args":{"JVM stats":"heap_memory_usage: 273994576\nnon_heap_memory_usage: 97468552\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098137000,"args":{"JVM stats":"heap_memory_usage: 273994576\nnon_heap_memory_usage: 97469952\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098151000,"args":{"JVM stats":"heap_memory_usage: 274893200\nnon_heap_memory_usage: 97476008\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098160000,"args":{"JVM stats":"heap_memory_usage: 274893200\nnon_heap_memory_usage: 97515504\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098161000,"args":{"JVM stats":"heap_memory_usage: 274893200\nnon_heap_memory_usage: 97517680\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098167000,"args":{"JVM stats":"heap_memory_usage: 274893200\nnon_heap_memory_usage: 97525960\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098172000,"args":{"JVM stats":"heap_memory_usage: 274893200\nnon_heap_memory_usage: 97529576\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098173000,"args":{"JVM stats":"heap_memory_usage: 274893200\nnon_heap_memory_usage: 97532392\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098186000,"args":{"JVM stats":"heap_memory_usage: 275374848\nnon_heap_memory_usage: 97555680\nloaded_class_count: 12120\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098192000,"args":{"JVM stats":"heap_memory_usage: 275374848\nnon_heap_memory_usage: 97569336\nloaded_class_count: 12122\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098196000,"args":{"JVM stats":"heap_memory_usage: 275374848\nnon_heap_memory_usage: 97575160\nloaded_class_count: 12122\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098198000,"args":{"JVM stats":"heap_memory_usage: 275374848\nnon_heap_memory_usage: 97576568\nloaded_class_count: 12122\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098205000,"args":{"JVM stats":"heap_memory_usage: 275374848\nnon_heap_memory_usage: 97589456\nloaded_class_count: 12122\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603098222000,"args":{"JVM stats":"heap_memory_usage: 278771240\nnon_heap_memory_usage: 97610976\nloaded_class_count: 12122\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603100844000,"args":{"JVM stats":"heap_memory_usage: 409577248\nnon_heap_memory_usage: 106188840\nloaded_class_count: 12738\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603100890000,"args":{"JVM stats":"heap_memory_usage: 411477408\nnon_heap_memory_usage: 106267328\nloaded_class_count: 12738\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104126000,"args":{"JVM stats":"heap_memory_usage: 433773288\nnon_heap_memory_usage: 109509784\nloaded_class_count: 12877\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 99\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 456\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104138000,"args":{"JVM stats":"heap_memory_usage: 436443784\nnon_heap_memory_usage: 109551280\nloaded_class_count: 12877\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104141000,"args":{"JVM stats":"heap_memory_usage: 436443784\nnon_heap_memory_usage: 109545904\nloaded_class_count: 12877\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104150000,"args":{"JVM stats":"heap_memory_usage: 438060720\nnon_heap_memory_usage: 109594872\nloaded_class_count: 12879\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104159000,"args":{"JVM stats":"heap_memory_usage: 438060720\nnon_heap_memory_usage: 109640816\nloaded_class_count: 12879\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104167000,"args":{"JVM stats":"heap_memory_usage: 438060720\nnon_heap_memory_usage: 109665408\nloaded_class_count: 12881\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104170000,"args":{"JVM stats":"heap_memory_usage: 438060720\nnon_heap_memory_usage: 109665408\nloaded_class_count: 12881\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104180000,"args":{"JVM stats":"heap_memory_usage: 438060720\nnon_heap_memory_usage: 109673360\nloaded_class_count: 12881\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104189000,"args":{"JVM stats":"heap_memory_usage: 438060720\nnon_heap_memory_usage: 109682336\nloaded_class_count: 12883\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104194000,"args":{"JVM stats":"heap_memory_usage: 438717400\nnon_heap_memory_usage: 109688040\nloaded_class_count: 12883\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104296000,"args":{"JVM stats":"heap_memory_usage: 445195088\nnon_heap_memory_usage: 109818120\nloaded_class_count: 12883\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104298000,"args":{"JVM stats":"heap_memory_usage: 445195088\nnon_heap_memory_usage: 109826504\nloaded_class_count: 12883\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104383000,"args":{"JVM stats":"heap_memory_usage: 448635792\nnon_heap_memory_usage: 109853576\nloaded_class_count: 12883\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603104387000,"args":{"JVM stats":"heap_memory_usage: 448635792\nnon_heap_memory_usage: 109859024\nloaded_class_count: 12884\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106572000,"args":{"JVM stats":"heap_memory_usage: 524037536\nnon_heap_memory_usage: 112989088\nloaded_class_count: 13170\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 2\n gc_time: 72\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106574000,"args":{"JVM stats":"heap_memory_usage: 527451120\nnon_heap_memory_usage: 112979216\nloaded_class_count: 13170\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106580000,"args":{"JVM stats":"heap_memory_usage: 527848768\nnon_heap_memory_usage: 112955120\nloaded_class_count: 13170\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106582000,"args":{"JVM stats":"heap_memory_usage: 527848768\nnon_heap_memory_usage: 112964240\nloaded_class_count: 13170\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106585000,"args":{"JVM stats":"heap_memory_usage: 527848768\nnon_heap_memory_usage: 112956736\nloaded_class_count: 13171\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106595000,"args":{"JVM stats":"heap_memory_usage: 527848768\nnon_heap_memory_usage: 112766280\nloaded_class_count: 13171\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106596000,"args":{"JVM stats":"heap_memory_usage: 527848768\nnon_heap_memory_usage: 112772936\nloaded_class_count: 13171\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106599000,"args":{"JVM stats":"heap_memory_usage: 527848768\nnon_heap_memory_usage: 112481384\nloaded_class_count: 13171\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106611000,"args":{"JVM stats":"heap_memory_usage: 528256456\nnon_heap_memory_usage: 112496824\nloaded_class_count: 13176\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106690000,"args":{"JVM stats":"heap_memory_usage: 125573272\nnon_heap_memory_usage: 112729400\nloaded_class_count: 13176\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 5\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106706000,"args":{"JVM stats":"heap_memory_usage: 126368296\nnon_heap_memory_usage: 112766248\nloaded_class_count: 13182\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106745000,"args":{"JVM stats":"heap_memory_usage: 127740296\nnon_heap_memory_usage: 112852360\nloaded_class_count: 13184\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106759000,"args":{"JVM stats":"heap_memory_usage: 128901512\nnon_heap_memory_usage: 112859592\nloaded_class_count: 13184\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106761000,"args":{"JVM stats":"heap_memory_usage: 128901512\nnon_heap_memory_usage: 112862480\nloaded_class_count: 13184\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106763000,"args":{"JVM stats":"heap_memory_usage: 128901512\nnon_heap_memory_usage: 112863440\nloaded_class_count: 13184\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106778000,"args":{"JVM stats":"heap_memory_usage: 129203856\nnon_heap_memory_usage: 112885944\nloaded_class_count: 13188\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106781000,"args":{"JVM stats":"heap_memory_usage: 129203856\nnon_heap_memory_usage: 112885944\nloaded_class_count: 13188\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106784000,"args":{"JVM stats":"heap_memory_usage: 129203856\nnon_heap_memory_usage: 112888304\nloaded_class_count: 13189\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106787000,"args":{"JVM stats":"heap_memory_usage: 129203856\nnon_heap_memory_usage: 112890664\nloaded_class_count: 13190\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106789000,"args":{"JVM stats":"heap_memory_usage: 129203856\nnon_heap_memory_usage: 112890664\nloaded_class_count: 13190\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106805000,"args":{"JVM stats":"heap_memory_usage: 130062904\nnon_heap_memory_usage: 112896472\nloaded_class_count: 13192\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106811000,"args":{"JVM stats":"heap_memory_usage: 130062904\nnon_heap_memory_usage: 112896504\nloaded_class_count: 13192\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106813000,"args":{"JVM stats":"heap_memory_usage: 130062904\nnon_heap_memory_usage: 112896504\nloaded_class_count: 13192\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106946000,"args":{"JVM stats":"heap_memory_usage: 133065896\nnon_heap_memory_usage: 112974072\nloaded_class_count: 13199\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106973000,"args":{"JVM stats":"heap_memory_usage: 133368096\nnon_heap_memory_usage: 112998096\nloaded_class_count: 13199\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106976000,"args":{"JVM stats":"heap_memory_usage: 133368096\nnon_heap_memory_usage: 112998800\nloaded_class_count: 13199\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106977000,"args":{"JVM stats":"heap_memory_usage: 133368096\nnon_heap_memory_usage: 113002704\nloaded_class_count: 13199\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603106989000,"args":{"JVM stats":"heap_memory_usage: 133896496\nnon_heap_memory_usage: 113025792\nloaded_class_count: 13205\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107500000,"args":{"JVM stats":"heap_memory_usage: 157985760\nnon_heap_memory_usage: 113249800\nloaded_class_count: 13205\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107518000,"args":{"JVM stats":"heap_memory_usage: 158244712\nnon_heap_memory_usage: 113252424\nloaded_class_count: 13205\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107550000,"args":{"JVM stats":"heap_memory_usage: 159365096\nnon_heap_memory_usage: 113298632\nloaded_class_count: 13205\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107555000,"args":{"JVM stats":"heap_memory_usage: 159623896\nnon_heap_memory_usage: 113326448\nloaded_class_count: 13205\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107572000,"args":{"JVM stats":"heap_memory_usage: 160676488\nnon_heap_memory_usage: 113351616\nloaded_class_count: 13205\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107616000,"args":{"JVM stats":"heap_memory_usage: 163684752\nnon_heap_memory_usage: 113423056\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107651000,"args":{"JVM stats":"heap_memory_usage: 167440928\nnon_heap_memory_usage: 113430088\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107652000,"args":{"JVM stats":"heap_memory_usage: 167440928\nnon_heap_memory_usage: 113430088\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107657000,"args":{"JVM stats":"heap_memory_usage: 167440928\nnon_heap_memory_usage: 113434664\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107658000,"args":{"JVM stats":"heap_memory_usage: 167440928\nnon_heap_memory_usage: 113437816\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107661000,"args":{"JVM stats":"heap_memory_usage: 167440928\nnon_heap_memory_usage: 113446656\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107662000,"args":{"JVM stats":"heap_memory_usage: 167440928\nnon_heap_memory_usage: 113448184\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107673000,"args":{"JVM stats":"heap_memory_usage: 168574928\nnon_heap_memory_usage: 113475816\nloaded_class_count: 13212\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107731000,"args":{"JVM stats":"heap_memory_usage: 170926720\nnon_heap_memory_usage: 113510360\nloaded_class_count: 13218\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107735000,"args":{"JVM stats":"heap_memory_usage: 171190376\nnon_heap_memory_usage: 113518064\nloaded_class_count: 13219\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107743000,"args":{"JVM stats":"heap_memory_usage: 171455832\nnon_heap_memory_usage: 113518064\nloaded_class_count: 13219\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603107770000,"args":{"JVM stats":"heap_memory_usage: 172045344\nnon_heap_memory_usage: 113532976\nloaded_class_count: 13221\nthread_count: 30\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603114896000,"args":{"JVM stats":"heap_memory_usage: 146782656\nnon_heap_memory_usage: 134056504\nloaded_class_count: 14575\nthread_count: 28\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 38\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603114905000,"args":{"JVM stats":"heap_memory_usage: 147908760\nnon_heap_memory_usage: 134063408\nloaded_class_count: 14575\nthread_count: 28\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603115002000,"args":{"JVM stats":"heap_memory_usage: 156898800\nnon_heap_memory_usage: 134226688\nloaded_class_count: 14591\nthread_count: 29\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603115088000,"args":{"JVM stats":"heap_memory_usage: 161722120\nnon_heap_memory_usage: 134310784\nloaded_class_count: 14599\nthread_count: 29\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603115494000,"args":{"JVM stats":"heap_memory_usage: 178714544\nnon_heap_memory_usage: 135022072\nloaded_class_count: 14627\nthread_count: 29\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603115496000,"args":{"JVM stats":"heap_memory_usage: 178714544\nnon_heap_memory_usage: 135035064\nloaded_class_count: 14627\nthread_count: 29\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603115497000,"args":{"JVM stats":"heap_memory_usage: 178714544\nnon_heap_memory_usage: 135038448\nloaded_class_count: 14627\nthread_count: 29\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136814000,"args":{"JVM stats":"heap_memory_usage: 290112168\nnon_heap_memory_usage: 185339216\nloaded_class_count: 18133\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 5\n gc_time: 260\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 675\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136824000,"args":{"JVM stats":"heap_memory_usage: 292444368\nnon_heap_memory_usage: 185340624\nloaded_class_count: 18133\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136828000,"args":{"JVM stats":"heap_memory_usage: 292444368\nnon_heap_memory_usage: 185344040\nloaded_class_count: 18134\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136829000,"args":{"JVM stats":"heap_memory_usage: 292444368\nnon_heap_memory_usage: 185344040\nloaded_class_count: 18134\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136833000,"args":{"JVM stats":"heap_memory_usage: 292604160\nnon_heap_memory_usage: 185344040\nloaded_class_count: 18134\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136837000,"args":{"JVM stats":"heap_memory_usage: 292604160\nnon_heap_memory_usage: 185346432\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136838000,"args":{"JVM stats":"heap_memory_usage: 292604160\nnon_heap_memory_usage: 185346432\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136844000,"args":{"JVM stats":"heap_memory_usage: 292776288\nnon_heap_memory_usage: 185375856\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136848000,"args":{"JVM stats":"heap_memory_usage: 292776288\nnon_heap_memory_usage: 185376560\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136851000,"args":{"JVM stats":"heap_memory_usage: 292776288\nnon_heap_memory_usage: 185376592\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136852000,"args":{"JVM stats":"heap_memory_usage: 292776288\nnon_heap_memory_usage: 185376592\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136857000,"args":{"JVM stats":"heap_memory_usage: 292936080\nnon_heap_memory_usage: 185400400\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136873000,"args":{"JVM stats":"heap_memory_usage: 294085320\nnon_heap_memory_usage: 185409104\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136875000,"args":{"JVM stats":"heap_memory_usage: 294085320\nnon_heap_memory_usage: 185409104\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136914000,"args":{"JVM stats":"heap_memory_usage: 298874416\nnon_heap_memory_usage: 185439008\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136916000,"args":{"JVM stats":"heap_memory_usage: 298874416\nnon_heap_memory_usage: 185444904\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603136920000,"args":{"JVM stats":"heap_memory_usage: 298878528\nnon_heap_memory_usage: 185456328\nloaded_class_count: 18135\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603157533000,"args":{"JVM stats":"heap_memory_usage: 402074624\nnon_heap_memory_usage: 193658136\nloaded_class_count: 18488\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 7\n gc_time: 475\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 620\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603176036000,"args":{"JVM stats":"heap_memory_usage: 539473392\nnon_heap_memory_usage: 198897576\nloaded_class_count: 18515\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 12\n gc_time: 1401\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 2\n gc_time: 3694\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603177975000,"args":{"JVM stats":"heap_memory_usage: 534904176\nnon_heap_memory_usage: 200005832\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 85\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603177981000,"args":{"JVM stats":"heap_memory_usage: 537464656\nnon_heap_memory_usage: 200015880\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603177983000,"args":{"JVM stats":"heap_memory_usage: 537464656\nnon_heap_memory_usage: 200015880\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603177988000,"args":{"JVM stats":"heap_memory_usage: 539571936\nnon_heap_memory_usage: 200017504\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603177994000,"args":{"JVM stats":"heap_memory_usage: 539710544\nnon_heap_memory_usage: 200023088\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603177999000,"args":{"JVM stats":"heap_memory_usage: 539802864\nnon_heap_memory_usage: 200024448\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603178004000,"args":{"JVM stats":"heap_memory_usage: 539802864\nnon_heap_memory_usage: 200024448\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603178012000,"args":{"JVM stats":"heap_memory_usage: 539886952\nnon_heap_memory_usage: 200027432\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603178015000,"args":{"JVM stats":"heap_memory_usage: 539999512\nnon_heap_memory_usage: 200031576\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603178020000,"args":{"JVM stats":"heap_memory_usage: 540055808\nnon_heap_memory_usage: 200039968\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603178082000,"args":{"JVM stats":"heap_memory_usage: 544669544\nnon_heap_memory_usage: 200048576\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603178085000,"args":{"JVM stats":"heap_memory_usage: 544669544\nnon_heap_memory_usage: 200049408\nloaded_class_count: 18543\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603181288000,"args":{"JVM stats":"heap_memory_usage: 625739432\nnon_heap_memory_usage: 199930792\nloaded_class_count: 18569\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 3\n gc_time: 323\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603181289000,"args":{"JVM stats":"heap_memory_usage: 627071504\nnon_heap_memory_usage: 199935992\nloaded_class_count: 18569\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603181290000,"args":{"JVM stats":"heap_memory_usage: 627071504\nnon_heap_memory_usage: 199939472\nloaded_class_count: 18569\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1547603181415000,"args":{"JVM stats":"heap_memory_usage: 629243888\nnon_heap_memory_usage: 200264040\nloaded_class_count: 18631\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":1,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603058476000,"dur":582000},{"pid":1,"tid":1,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603059059000,"dur":456000},{"pid":1,"tid":1,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603059516000,"dur":77000},{"pid":1,"tid":1,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603059516000,"dur":78000},{"pid":1,"tid":1,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603061257000,"dur":220000},{"pid":1,"tid":1,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603061477000,"dur":27000},{"pid":1,"tid":1,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061552000,"dur":21000},{"pid":1,"tid":1,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061573000,"dur":5000},{"pid":1,"tid":1,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061579000,"dur":9000},{"pid":1,"tid":1,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061588000,"dur":64000},{"pid":1,"tid":1,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061653000,"dur":9000},{"pid":1,"tid":1,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061663000,"dur":8000},{"pid":1,"tid":1,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061671000,"dur":87000},{"pid":1,"tid":1,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061759000,"dur":12000},{"pid":1,"tid":1,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061772000,"dur":11000},{"pid":1,"tid":1,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061784000,"dur":9000},{"pid":1,"tid":1,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061793000,"dur":2000},{"pid":1,"tid":1,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061795000,"dur":31000},{"pid":1,"tid":1,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061826000,"dur":84000},{"pid":1,"tid":1,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061910000,"dur":42000},{"pid":1,"tid":1,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061953000,"dur":3000},{"pid":1,"tid":1,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603061504000,"dur":452000},{"pid":1,"tid":1,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603061957000,"dur":87000},{"pid":1,"tid":1,"id":28,"name":"app task manager create merge manifest task","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062047000,"dur":4000},{"pid":1,"tid":1,"id":29,"name":"app task manager create generate res values task","args":{"span_id":"29","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062051000,"dur":100},{"pid":1,"tid":1,"id":30,"name":"app task manager create create renderscript task","args":{"span_id":"30","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062051000,"dur":1000},{"pid":1,"tid":1,"id":31,"name":"app task manager create merge resources task","args":{"span_id":"31","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062052000,"dur":1000},{"pid":1,"tid":1,"id":32,"name":"app task manager create merge assets task","args":{"span_id":"32","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062053000,"dur":1000},{"pid":1,"tid":1,"id":33,"name":"app task manager create build config task","args":{"span_id":"33","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062054000,"dur":100},{"pid":1,"tid":1,"id":34,"name":"app task manager create process res task","args":{"span_id":"34","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062054000,"dur":4000},{"pid":1,"tid":1,"id":35,"name":"app task manager create aidl task","args":{"span_id":"35","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062058000,"dur":100},{"pid":1,"tid":1,"id":36,"name":"app task manager create shader task","args":{"span_id":"36","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062059000,"dur":1000},{"pid":1,"tid":1,"id":37,"name":"app task manager create ndk task","args":{"span_id":"37","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062061000,"dur":100},{"pid":1,"tid":1,"id":38,"name":"app task manager create external native build task","args":{"span_id":"38","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062062000,"dur":100},{"pid":1,"tid":1,"id":39,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"39","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062062000,"dur":1000},{"pid":1,"tid":1,"id":40,"name":"app task manager create compile task","args":{"span_id":"40","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062064000,"dur":15000},{"pid":1,"tid":1,"id":41,"name":"app task manager create packaging task","args":{"span_id":"41","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062080000,"dur":3000},{"pid":1,"tid":1,"id":42,"name":"app task manager create lint task","args":{"span_id":"42","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062083000,"dur":1000},{"pid":1,"tid":1,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062044000,"dur":40000},{"pid":1,"tid":1,"id":43,"name":"variant manager create tasks for variant","args":{"span_id":"43","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062084000,"dur":12000},{"pid":1,"tid":1,"id":44,"name":"variant manager create tasks for variant","args":{"span_id":"44","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062096000,"dur":67000},{"pid":1,"tid":1,"id":46,"name":"app task manager create merge manifest task","args":{"span_id":"46","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062166000,"dur":3000},{"pid":1,"tid":1,"id":47,"name":"app task manager create generate res values task","args":{"span_id":"47","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062169000,"dur":100},{"pid":1,"tid":1,"id":48,"name":"app task manager create create renderscript task","args":{"span_id":"48","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062169000,"dur":1000},{"pid":1,"tid":1,"id":49,"name":"app task manager create merge resources task","args":{"span_id":"49","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062170000,"dur":1000},{"pid":1,"tid":1,"id":50,"name":"app task manager create merge assets task","args":{"span_id":"50","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062171000,"dur":1000},{"pid":1,"tid":1,"id":51,"name":"app task manager create build config task","args":{"span_id":"51","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062172000,"dur":100},{"pid":1,"tid":1,"id":52,"name":"app task manager create process res task","args":{"span_id":"52","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062172000,"dur":4000},{"pid":1,"tid":1,"id":53,"name":"app task manager create aidl task","args":{"span_id":"53","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062176000,"dur":1000},{"pid":1,"tid":1,"id":54,"name":"app task manager create shader task","args":{"span_id":"54","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062177000,"dur":1000},{"pid":1,"tid":1,"id":55,"name":"app task manager create ndk task","args":{"span_id":"55","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062178000,"dur":100},{"pid":1,"tid":1,"id":56,"name":"app task manager create external native build task","args":{"span_id":"56","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062178000,"dur":100},{"pid":1,"tid":1,"id":57,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"57","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062178000,"dur":2000},{"pid":1,"tid":1,"id":58,"name":"app task manager create compile task","args":{"span_id":"58","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062180000,"dur":5000},{"pid":1,"tid":1,"id":59,"name":"app task manager create packaging task","args":{"span_id":"59","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062185000,"dur":2000},{"pid":1,"tid":1,"id":60,"name":"app task manager create lint task","args":{"span_id":"60","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062187000,"dur":100},{"pid":1,"tid":1,"id":45,"name":"variant manager create tasks for variant","args":{"span_id":"45","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062163000,"dur":24000},{"pid":1,"tid":1,"id":61,"name":"variant manager create tasks for variant","args":{"span_id":"61","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062187000,"dur":8000},{"pid":1,"tid":1,"id":63,"name":"app task manager create merge manifest task","args":{"span_id":"63","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062198000,"dur":1000},{"pid":1,"tid":1,"id":64,"name":"app task manager create generate res values task","args":{"span_id":"64","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062199000,"dur":100},{"pid":1,"tid":1,"id":65,"name":"app task manager create create renderscript task","args":{"span_id":"65","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062199000,"dur":1000},{"pid":1,"tid":1,"id":66,"name":"app task manager create merge resources task","args":{"span_id":"66","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062200000,"dur":1000},{"pid":1,"tid":1,"id":67,"name":"app task manager create merge assets task","args":{"span_id":"67","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062201000,"dur":1000},{"pid":1,"tid":1,"id":68,"name":"app task manager create build config task","args":{"span_id":"68","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062202000,"dur":100},{"pid":1,"tid":1,"id":69,"name":"app task manager create process res task","args":{"span_id":"69","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062202000,"dur":3000},{"pid":1,"tid":1,"id":70,"name":"app task manager create aidl task","args":{"span_id":"70","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062205000,"dur":1000},{"pid":1,"tid":1,"id":71,"name":"app task manager create shader task","args":{"span_id":"71","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062206000,"dur":100},{"pid":1,"tid":1,"id":72,"name":"app task manager create ndk task","args":{"span_id":"72","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062206000,"dur":1000},{"pid":1,"tid":1,"id":73,"name":"app task manager create external native build task","args":{"span_id":"73","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062207000,"dur":100},{"pid":1,"tid":1,"id":74,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"74","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062207000,"dur":1000},{"pid":1,"tid":1,"id":75,"name":"app task manager create compile task","args":{"span_id":"75","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062208000,"dur":6000},{"pid":1,"tid":1,"id":76,"name":"app task manager create packaging task","args":{"span_id":"76","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062214000,"dur":2000},{"pid":1,"tid":1,"id":77,"name":"app task manager create lint task","args":{"span_id":"77","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062216000,"dur":100},{"pid":1,"tid":1,"id":62,"name":"variant manager create tasks for variant","args":{"span_id":"62","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062195000,"dur":21000},{"pid":1,"tid":1,"id":78,"name":"variant manager create tasks for variant","args":{"span_id":"78","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062216000,"dur":8000},{"pid":1,"tid":1,"id":79,"name":"variant manager create tasks for variant","args":{"span_id":"79","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062224000,"dur":22000},{"pid":1,"tid":1,"id":81,"name":"app task manager create merge manifest task","args":{"span_id":"81","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062248000,"dur":100},{"pid":1,"tid":1,"id":82,"name":"app task manager create generate res values task","args":{"span_id":"82","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062248000,"dur":1000},{"pid":1,"tid":1,"id":83,"name":"app task manager create create renderscript task","args":{"span_id":"83","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062249000,"dur":100},{"pid":1,"tid":1,"id":84,"name":"app task manager create merge resources task","args":{"span_id":"84","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062249000,"dur":1000},{"pid":1,"tid":1,"id":85,"name":"app task manager create merge assets task","args":{"span_id":"85","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062250000,"dur":1000},{"pid":1,"tid":1,"id":86,"name":"app task manager create build config task","args":{"span_id":"86","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062251000,"dur":100},{"pid":1,"tid":1,"id":87,"name":"app task manager create process res task","args":{"span_id":"87","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062251000,"dur":2000},{"pid":1,"tid":1,"id":88,"name":"app task manager create aidl task","args":{"span_id":"88","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062253000,"dur":1000},{"pid":1,"tid":1,"id":89,"name":"app task manager create shader task","args":{"span_id":"89","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062254000,"dur":1000},{"pid":1,"tid":1,"id":90,"name":"app task manager create ndk task","args":{"span_id":"90","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062255000,"dur":1000},{"pid":1,"tid":1,"id":91,"name":"app task manager create external native build task","args":{"span_id":"91","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062256000,"dur":100},{"pid":1,"tid":1,"id":92,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"92","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062256000,"dur":1000},{"pid":1,"tid":1,"id":93,"name":"app task manager create compile task","args":{"span_id":"93","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062257000,"dur":4000},{"pid":1,"tid":1,"id":94,"name":"app task manager create packaging task","args":{"span_id":"94","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062261000,"dur":2000},{"pid":1,"tid":1,"id":95,"name":"app task manager create lint task","args":{"span_id":"95","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062263000,"dur":100},{"pid":1,"tid":1,"id":80,"name":"variant manager create tasks for variant","args":{"span_id":"80","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062246000,"dur":17000},{"pid":1,"tid":1,"id":96,"name":"variant manager create tasks for variant","args":{"span_id":"96","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062263000,"dur":7000},{"pid":1,"tid":1,"id":98,"name":"app task manager create merge manifest task","args":{"span_id":"98","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062272000,"dur":1000},{"pid":1,"tid":1,"id":99,"name":"app task manager create generate res values task","args":{"span_id":"99","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062273000,"dur":1000},{"pid":1,"tid":1,"id":100,"name":"app task manager create create renderscript task","args":{"span_id":"100","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062274000,"dur":100},{"pid":1,"tid":1,"id":101,"name":"app task manager create merge resources task","args":{"span_id":"101","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062274000,"dur":1000},{"pid":1,"tid":1,"id":102,"name":"app task manager create merge assets task","args":{"span_id":"102","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062275000,"dur":100},{"pid":1,"tid":1,"id":103,"name":"app task manager create build config task","args":{"span_id":"103","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062275000,"dur":1000},{"pid":1,"tid":1,"id":104,"name":"app task manager create process res task","args":{"span_id":"104","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062276000,"dur":2000},{"pid":1,"tid":1,"id":105,"name":"app task manager create aidl task","args":{"span_id":"105","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062278000,"dur":100},{"pid":1,"tid":1,"id":106,"name":"app task manager create shader task","args":{"span_id":"106","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062279000,"dur":100},{"pid":1,"tid":1,"id":107,"name":"app task manager create ndk task","args":{"span_id":"107","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062279000,"dur":100},{"pid":1,"tid":1,"id":108,"name":"app task manager create external native build task","args":{"span_id":"108","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062279000,"dur":100},{"pid":1,"tid":1,"id":109,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"109","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062279000,"dur":1000},{"pid":1,"tid":1,"id":110,"name":"app task manager create compile task","args":{"span_id":"110","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062281000,"dur":4000},{"pid":1,"tid":1,"id":111,"name":"app task manager create packaging task","args":{"span_id":"111","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062285000,"dur":2000},{"pid":1,"tid":1,"id":112,"name":"app task manager create lint task","args":{"span_id":"112","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062287000,"dur":100},{"pid":1,"tid":1,"id":97,"name":"variant manager create tasks for variant","args":{"span_id":"97","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062270000,"dur":17000},{"pid":1,"tid":1,"id":113,"name":"variant manager create tasks for variant","args":{"span_id":"113","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062287000,"dur":7000},{"pid":1,"tid":1,"id":114,"name":"variant manager create tasks for variant","args":{"span_id":"114","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062294000,"dur":19000},{"pid":1,"tid":1,"id":116,"name":"app task manager create merge manifest task","args":{"span_id":"116","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062314000,"dur":1000},{"pid":1,"tid":1,"id":117,"name":"app task manager create generate res values task","args":{"span_id":"117","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062315000,"dur":100},{"pid":1,"tid":1,"id":118,"name":"app task manager create create renderscript task","args":{"span_id":"118","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062315000,"dur":100},{"pid":1,"tid":1,"id":119,"name":"app task manager create merge resources task","args":{"span_id":"119","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062315000,"dur":100},{"pid":1,"tid":1,"id":120,"name":"app task manager create merge assets task","args":{"span_id":"120","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062316000,"dur":100},{"pid":1,"tid":1,"id":121,"name":"app task manager create build config task","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062316000,"dur":100},{"pid":1,"tid":1,"id":122,"name":"app task manager create process res task","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062316000,"dur":2000},{"pid":1,"tid":1,"id":123,"name":"app task manager create aidl task","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062318000,"dur":1000},{"pid":1,"tid":1,"id":124,"name":"app task manager create shader task","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062319000,"dur":100},{"pid":1,"tid":1,"id":125,"name":"app task manager create ndk task","args":{"span_id":"125","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062319000,"dur":100},{"pid":1,"tid":1,"id":126,"name":"app task manager create external native build task","args":{"span_id":"126","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062319000,"dur":100},{"pid":1,"tid":1,"id":127,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"127","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062320000,"dur":100},{"pid":1,"tid":1,"id":128,"name":"app task manager create compile task","args":{"span_id":"128","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062320000,"dur":5000},{"pid":1,"tid":1,"id":129,"name":"app task manager create packaging task","args":{"span_id":"129","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062325000,"dur":2000},{"pid":1,"tid":1,"id":130,"name":"app task manager create lint task","args":{"span_id":"130","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062327000,"dur":100},{"pid":1,"tid":1,"id":115,"name":"variant manager create tasks for variant","args":{"span_id":"115","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062313000,"dur":14000},{"pid":1,"tid":1,"id":131,"name":"variant manager create tasks for variant","args":{"span_id":"131","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062327000,"dur":6000},{"pid":1,"tid":1,"id":133,"name":"app task manager create merge manifest task","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062335000,"dur":1000},{"pid":1,"tid":1,"id":134,"name":"app task manager create generate res values task","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062336000,"dur":100},{"pid":1,"tid":1,"id":135,"name":"app task manager create create renderscript task","args":{"span_id":"135","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062336000,"dur":1000},{"pid":1,"tid":1,"id":136,"name":"app task manager create merge resources task","args":{"span_id":"136","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062337000,"dur":100},{"pid":1,"tid":1,"id":137,"name":"app task manager create merge assets task","args":{"span_id":"137","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062337000,"dur":1000},{"pid":1,"tid":1,"id":138,"name":"app task manager create build config task","args":{"span_id":"138","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062338000,"dur":100},{"pid":1,"tid":1,"id":139,"name":"app task manager create process res task","args":{"span_id":"139","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062338000,"dur":3000},{"pid":1,"tid":1,"id":140,"name":"app task manager create aidl task","args":{"span_id":"140","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062341000,"dur":100},{"pid":1,"tid":1,"id":141,"name":"app task manager create shader task","args":{"span_id":"141","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062341000,"dur":1000},{"pid":1,"tid":1,"id":142,"name":"app task manager create ndk task","args":{"span_id":"142","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062342000,"dur":100},{"pid":1,"tid":1,"id":143,"name":"app task manager create external native build task","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062342000,"dur":100},{"pid":1,"tid":1,"id":144,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062342000,"dur":1000},{"pid":1,"tid":1,"id":145,"name":"app task manager create compile task","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062343000,"dur":5000},{"pid":1,"tid":1,"id":146,"name":"app task manager create packaging task","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062348000,"dur":2000},{"pid":1,"tid":1,"id":147,"name":"app task manager create lint task","args":{"span_id":"147","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062350000,"dur":100},{"pid":1,"tid":1,"id":132,"name":"variant manager create tasks for variant","args":{"span_id":"132","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062333000,"dur":17000},{"pid":1,"tid":1,"id":148,"name":"variant manager create tasks for variant","args":{"span_id":"148","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062350000,"dur":7000},{"pid":1,"tid":1,"id":149,"name":"variant manager create tasks for variant","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062357000,"dur":20000},{"pid":1,"tid":1,"id":151,"name":"app task manager create merge manifest task","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062379000,"dur":1000},{"pid":1,"tid":1,"id":152,"name":"app task manager create generate res values task","args":{"span_id":"152","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062380000,"dur":100},{"pid":1,"tid":1,"id":153,"name":"app task manager create create renderscript task","args":{"span_id":"153","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062380000,"dur":1000},{"pid":1,"tid":1,"id":154,"name":"app task manager create merge resources task","args":{"span_id":"154","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062381000,"dur":2000},{"pid":1,"tid":1,"id":155,"name":"app task manager create merge assets task","args":{"span_id":"155","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062383000,"dur":100},{"pid":1,"tid":1,"id":156,"name":"app task manager create build config task","args":{"span_id":"156","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062383000,"dur":1000},{"pid":1,"tid":1,"id":157,"name":"app task manager create process res task","args":{"span_id":"157","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062384000,"dur":4000},{"pid":1,"tid":1,"id":158,"name":"app task manager create aidl task","args":{"span_id":"158","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062388000,"dur":1000},{"pid":1,"tid":1,"id":159,"name":"app task manager create shader task","args":{"span_id":"159","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062389000,"dur":100},{"pid":1,"tid":1,"id":160,"name":"app task manager create ndk task","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062389000,"dur":1000},{"pid":1,"tid":1,"id":161,"name":"app task manager create external native build task","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062390000,"dur":100},{"pid":1,"tid":1,"id":162,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"162","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062390000,"dur":1000},{"pid":1,"tid":1,"id":163,"name":"app task manager create compile task","args":{"span_id":"163","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062391000,"dur":5000},{"pid":1,"tid":1,"id":164,"name":"app task manager create packaging task","args":{"span_id":"164","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062396000,"dur":2000},{"pid":1,"tid":1,"id":165,"name":"app task manager create lint task","args":{"span_id":"165","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062398000,"dur":100},{"pid":1,"tid":1,"id":150,"name":"variant manager create tasks for variant","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062377000,"dur":21000},{"pid":1,"tid":1,"id":166,"name":"variant manager create tasks for variant","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062398000,"dur":8000},{"pid":1,"tid":1,"id":168,"name":"app task manager create merge manifest task","args":{"span_id":"168","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062408000,"dur":1000},{"pid":1,"tid":1,"id":169,"name":"app task manager create generate res values task","args":{"span_id":"169","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062409000,"dur":100},{"pid":1,"tid":1,"id":170,"name":"app task manager create create renderscript task","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062409000,"dur":100},{"pid":1,"tid":1,"id":171,"name":"app task manager create merge resources task","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062409000,"dur":1000},{"pid":1,"tid":1,"id":172,"name":"app task manager create merge assets task","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062410000,"dur":100},{"pid":1,"tid":1,"id":173,"name":"app task manager create build config task","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062410000,"dur":100},{"pid":1,"tid":1,"id":174,"name":"app task manager create process res task","args":{"span_id":"174","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062410000,"dur":2000},{"pid":1,"tid":1,"id":175,"name":"app task manager create aidl task","args":{"span_id":"175","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062412000,"dur":1000},{"pid":1,"tid":1,"id":176,"name":"app task manager create shader task","args":{"span_id":"176","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062413000,"dur":100},{"pid":1,"tid":1,"id":177,"name":"app task manager create ndk task","args":{"span_id":"177","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062414000,"dur":100},{"pid":1,"tid":1,"id":178,"name":"app task manager create external native build task","args":{"span_id":"178","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062414000,"dur":100},{"pid":1,"tid":1,"id":179,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"179","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062414000,"dur":1000},{"pid":1,"tid":1,"id":180,"name":"app task manager create compile task","args":{"span_id":"180","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062415000,"dur":4000},{"pid":1,"tid":1,"id":181,"name":"app task manager create packaging task","args":{"span_id":"181","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062419000,"dur":1000},{"pid":1,"tid":1,"id":182,"name":"app task manager create lint task","args":{"span_id":"182","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062420000,"dur":100},{"pid":1,"tid":1,"id":167,"name":"variant manager create tasks for variant","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062407000,"dur":13000},{"pid":1,"tid":1,"id":183,"name":"variant manager create tasks for variant","args":{"span_id":"183","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062420000,"dur":6000},{"pid":1,"tid":1,"id":184,"name":"variant manager create tasks for variant","args":{"span_id":"184","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062426000,"dur":14000},{"pid":1,"tid":1,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603061255000,"dur":1307000},{"pid":1,"tid":1,"id":185,"name":"variant manager external native config values","args":{"span_id":"185","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062567000,"dur":100},{"pid":1,"tid":1,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603059823000,"dur":2744000},{"pid":1,"tid":1,"id":186,"name":"base plugin project configure","args":{"span_id":"186","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062682000,"dur":12000},{"pid":1,"tid":1,"id":187,"name":"base plugin project base extension creation","args":{"span_id":"187","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062694000,"dur":21000},{"pid":1,"tid":1,"id":189,"name":"task manager create tasks","args":{"span_id":"189","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062715000,"dur":1000},{"pid":1,"tid":1,"id":188,"name":"base plugin project tasks creation","args":{"span_id":"188","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062715000,"dur":1000},{"pid":1,"tid":1,"id":192,"name":"variant manager create variants","args":{"span_id":"192","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062895000,"dur":49000},{"pid":1,"tid":1,"id":193,"name":"variant manager create tests tasks","args":{"span_id":"193","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062944000,"dur":2000},{"pid":1,"tid":1,"id":195,"name":"lib task manager create generate res values task","args":{"span_id":"195","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062949000,"dur":100},{"pid":1,"tid":1,"id":196,"name":"lib task manager create merge manifest task","args":{"span_id":"196","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062950000,"dur":13000},{"pid":1,"tid":1,"id":197,"name":"lib task manager create create renderscript task","args":{"span_id":"197","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062964000,"dur":1000},{"pid":1,"tid":1,"id":198,"name":"lib task manager create merge resources task","args":{"span_id":"198","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062966000,"dur":3000},{"pid":1,"tid":1,"id":199,"name":"lib task manager create merge assets task","args":{"span_id":"199","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062975000,"dur":1000},{"pid":1,"tid":1,"id":200,"name":"lib task manager create build config task","args":{"span_id":"200","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062976000,"dur":1000},{"pid":1,"tid":1,"id":201,"name":"lib task manager create process res task","args":{"span_id":"201","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062978000,"dur":4000},{"pid":1,"tid":1,"id":202,"name":"lib task manager create aidl task","args":{"span_id":"202","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062983000,"dur":1000},{"pid":1,"tid":1,"id":203,"name":"lib task manager create shader task","args":{"span_id":"203","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062984000,"dur":1000},{"pid":1,"tid":1,"id":204,"name":"lib task manager create compile task","args":{"span_id":"204","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062986000,"dur":1000},{"pid":1,"tid":1,"id":205,"name":"lib task manager create ndk task","args":{"span_id":"205","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062988000,"dur":1000},{"pid":1,"tid":1,"id":206,"name":"lib task manager create external native build task","args":{"span_id":"206","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062989000,"dur":100},{"pid":1,"tid":1,"id":207,"name":"lib task manager create packaging task","args":{"span_id":"207","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062991000,"dur":4000},{"pid":1,"tid":1,"id":208,"name":"lib task manager create merge proguard file task","args":{"span_id":"208","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062995000,"dur":18000},{"pid":1,"tid":1,"id":209,"name":"lib task manager create post compilation task","args":{"span_id":"209","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063060000,"dur":31000},{"pid":1,"tid":1,"id":210,"name":"lib task manager create lint task","args":{"span_id":"210","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063093000,"dur":1000},{"pid":1,"tid":1,"id":194,"name":"variant manager create tasks for variant","args":{"span_id":"194","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603062946000,"dur":148000},{"pid":1,"tid":1,"id":211,"name":"variant manager create tasks for variant","args":{"span_id":"211","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063094000,"dur":6000},{"pid":1,"tid":1,"id":213,"name":"lib task manager create generate res values task","args":{"span_id":"213","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063125000,"dur":100},{"pid":1,"tid":1,"id":214,"name":"lib task manager create merge manifest task","args":{"span_id":"214","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063125000,"dur":1000},{"pid":1,"tid":1,"id":215,"name":"lib task manager create create renderscript task","args":{"span_id":"215","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063126000,"dur":1000},{"pid":1,"tid":1,"id":216,"name":"lib task manager create merge resources task","args":{"span_id":"216","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063127000,"dur":1000},{"pid":1,"tid":1,"id":217,"name":"lib task manager create merge assets task","args":{"span_id":"217","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063128000,"dur":100},{"pid":1,"tid":1,"id":218,"name":"lib task manager create build config task","args":{"span_id":"218","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063128000,"dur":100},{"pid":1,"tid":1,"id":219,"name":"lib task manager create process res task","args":{"span_id":"219","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063128000,"dur":22000},{"pid":1,"tid":1,"id":220,"name":"lib task manager create aidl task","args":{"span_id":"220","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063150000,"dur":100},{"pid":1,"tid":1,"id":221,"name":"lib task manager create shader task","args":{"span_id":"221","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063150000,"dur":1000},{"pid":1,"tid":1,"id":222,"name":"lib task manager create compile task","args":{"span_id":"222","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063152000,"dur":1000},{"pid":1,"tid":1,"id":223,"name":"lib task manager create ndk task","args":{"span_id":"223","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063153000,"dur":100},{"pid":1,"tid":1,"id":224,"name":"lib task manager create external native build task","args":{"span_id":"224","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063153000,"dur":100},{"pid":1,"tid":1,"id":225,"name":"lib task manager create packaging task","args":{"span_id":"225","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063154000,"dur":100},{"pid":1,"tid":1,"id":226,"name":"lib task manager create merge proguard file task","args":{"span_id":"226","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063155000,"dur":100},{"pid":1,"tid":1,"id":227,"name":"lib task manager create post compilation task","args":{"span_id":"227","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063155000,"dur":3000},{"pid":1,"tid":1,"id":228,"name":"lib task manager create lint task","args":{"span_id":"228","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063170000,"dur":100},{"pid":1,"tid":1,"id":212,"name":"variant manager create tasks for variant","args":{"span_id":"212","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063100000,"dur":70000},{"pid":1,"tid":1,"id":229,"name":"variant manager create tasks for variant","args":{"span_id":"229","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063170000,"dur":5000},{"pid":1,"tid":1,"id":230,"name":"variant manager create tasks for variant","args":{"span_id":"230","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063175000,"dur":14000},{"pid":1,"tid":1,"id":191,"name":"variant manager create android tasks","args":{"span_id":"191","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062895000,"dur":306000},{"pid":1,"tid":1,"id":231,"name":"variant manager external native config values","args":{"span_id":"231","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063202000,"dur":100},{"pid":1,"tid":1,"id":190,"name":"base plugin create android tasks","args":{"span_id":"190","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603062893000,"dur":309000},{"pid":1,"tid":1,"id":232,"name":"base plugin project configure","args":{"span_id":"232","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063353000,"dur":27000},{"pid":1,"tid":1,"id":233,"name":"base plugin project base extension creation","args":{"span_id":"233","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063380000,"dur":6000},{"pid":1,"tid":1,"id":235,"name":"task manager create tasks","args":{"span_id":"235","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063386000,"dur":3000},{"pid":1,"tid":1,"id":234,"name":"base plugin project tasks creation","args":{"span_id":"234","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063386000,"dur":3000},{"pid":1,"tid":1,"id":238,"name":"variant manager create variants","args":{"span_id":"238","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063426000,"dur":5000},{"pid":1,"tid":1,"id":239,"name":"variant manager create tests tasks","args":{"span_id":"239","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063431000,"dur":1000},{"pid":1,"tid":1,"id":241,"name":"lib task manager create generate res values task","args":{"span_id":"241","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063434000,"dur":100},{"pid":1,"tid":1,"id":242,"name":"lib task manager create merge manifest task","args":{"span_id":"242","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063434000,"dur":100},{"pid":1,"tid":1,"id":243,"name":"lib task manager create create renderscript task","args":{"span_id":"243","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063434000,"dur":100},{"pid":1,"tid":1,"id":244,"name":"lib task manager create merge resources task","args":{"span_id":"244","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063434000,"dur":2000},{"pid":1,"tid":1,"id":245,"name":"lib task manager create merge assets task","args":{"span_id":"245","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063436000,"dur":100},{"pid":1,"tid":1,"id":246,"name":"lib task manager create build config task","args":{"span_id":"246","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063436000,"dur":100},{"pid":1,"tid":1,"id":247,"name":"lib task manager create process res task","args":{"span_id":"247","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063436000,"dur":5000},{"pid":1,"tid":1,"id":248,"name":"lib task manager create aidl task","args":{"span_id":"248","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063441000,"dur":1000},{"pid":1,"tid":1,"id":249,"name":"lib task manager create shader task","args":{"span_id":"249","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063442000,"dur":100},{"pid":1,"tid":1,"id":250,"name":"lib task manager create compile task","args":{"span_id":"250","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063442000,"dur":2000},{"pid":1,"tid":1,"id":251,"name":"lib task manager create ndk task","args":{"span_id":"251","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063444000,"dur":100},{"pid":1,"tid":1,"id":252,"name":"lib task manager create external native build task","args":{"span_id":"252","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063445000,"dur":100},{"pid":1,"tid":1,"id":253,"name":"lib task manager create packaging task","args":{"span_id":"253","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063446000,"dur":1000},{"pid":1,"tid":1,"id":254,"name":"lib task manager create merge proguard file task","args":{"span_id":"254","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063447000,"dur":100},{"pid":1,"tid":1,"id":255,"name":"lib task manager create post compilation task","args":{"span_id":"255","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063448000,"dur":3000},{"pid":1,"tid":1,"id":256,"name":"lib task manager create lint task","args":{"span_id":"256","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063451000,"dur":100},{"pid":1,"tid":1,"id":240,"name":"variant manager create tasks for variant","args":{"span_id":"240","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063432000,"dur":19000},{"pid":1,"tid":1,"id":257,"name":"variant manager create tasks for variant","args":{"span_id":"257","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063451000,"dur":8000},{"pid":1,"tid":1,"id":259,"name":"lib task manager create generate res values task","args":{"span_id":"259","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063460000,"dur":100},{"pid":1,"tid":1,"id":260,"name":"lib task manager create merge manifest task","args":{"span_id":"260","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063460000,"dur":2000},{"pid":1,"tid":1,"id":261,"name":"lib task manager create create renderscript task","args":{"span_id":"261","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063462000,"dur":100},{"pid":1,"tid":1,"id":262,"name":"lib task manager create merge resources task","args":{"span_id":"262","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063462000,"dur":1000},{"pid":1,"tid":1,"id":263,"name":"lib task manager create merge assets task","args":{"span_id":"263","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063463000,"dur":100},{"pid":1,"tid":1,"id":264,"name":"lib task manager create build config task","args":{"span_id":"264","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063463000,"dur":100},{"pid":1,"tid":1,"id":265,"name":"lib task manager create process res task","args":{"span_id":"265","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063463000,"dur":2000},{"pid":1,"tid":1,"id":266,"name":"lib task manager create aidl task","args":{"span_id":"266","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063465000,"dur":1000},{"pid":1,"tid":1,"id":267,"name":"lib task manager create shader task","args":{"span_id":"267","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063466000,"dur":100},{"pid":1,"tid":1,"id":268,"name":"lib task manager create compile task","args":{"span_id":"268","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063466000,"dur":1000},{"pid":1,"tid":1,"id":269,"name":"lib task manager create ndk task","args":{"span_id":"269","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063467000,"dur":100},{"pid":1,"tid":1,"id":270,"name":"lib task manager create external native build task","args":{"span_id":"270","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063467000,"dur":100},{"pid":1,"tid":1,"id":271,"name":"lib task manager create packaging task","args":{"span_id":"271","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063468000,"dur":1000},{"pid":1,"tid":1,"id":272,"name":"lib task manager create merge proguard file task","args":{"span_id":"272","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063469000,"dur":100},{"pid":1,"tid":1,"id":273,"name":"lib task manager create post compilation task","args":{"span_id":"273","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063470000,"dur":2000},{"pid":1,"tid":1,"id":274,"name":"lib task manager create lint task","args":{"span_id":"274","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063472000,"dur":1000},{"pid":1,"tid":1,"id":258,"name":"variant manager create tasks for variant","args":{"span_id":"258","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1547603063459000,"dur":14000},{"pid":1,"tid":1,"id":275,"name":"variant manager create tasks for variant","args":{"span_id":"275","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063473000,"dur":4000},{"pid":1,"tid":1,"id":276,"name":"variant manager create tasks for variant","args":{"span_id":"276","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063477000,"dur":13000},{"pid":1,"tid":1,"id":237,"name":"variant manager create android tasks","args":{"span_id":"237","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063426000,"dur":65000},{"pid":1,"tid":1,"id":277,"name":"variant manager external native config values","args":{"span_id":"277","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063491000,"dur":100},{"pid":1,"tid":1,"id":236,"name":"base plugin create android tasks","args":{"span_id":"236","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603063423000,"dur":68000},{"pid":1,"tid":0,"id":278,"name":"task: unknown task type","args":{"span_id":"278","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063803000,"dur":2000},{"pid":1,"tid":0,"id":279,"name":"task: unknown task type","args":{"span_id":"279","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063830000,"dur":1000},{"pid":1,"tid":0,"id":280,"name":"task: unknown task type","args":{"span_id":"280","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063832000,"dur":100},{"pid":1,"tid":0,"id":281,"name":"task: check manifest","args":{"span_id":"281","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063835000,"dur":76000},{"pid":1,"tid":0,"id":282,"name":"task: process manifest","args":{"span_id":"282","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063915000,"dur":28000},{"pid":1,"tid":0,"id":283,"name":"task: unknown task type","args":{"span_id":"283","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063944000,"dur":1000},{"pid":1,"tid":0,"id":284,"name":"task: unknown task type","args":{"span_id":"284","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063946000,"dur":100},{"pid":1,"tid":0,"id":285,"name":"task: check manifest","args":{"span_id":"285","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063947000,"dur":4000},{"pid":1,"tid":0,"id":286,"name":"task: process manifest","args":{"span_id":"286","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063953000,"dur":28000},{"pid":1,"tid":0,"id":287,"name":"task: app pre build","args":{"span_id":"287","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603063983000,"dur":30073000},{"pid":1,"tid":0,"id":288,"name":"task: aidl compile","args":{"span_id":"288","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094058000,"dur":170000},{"pid":1,"tid":0,"id":289,"name":"task: aidl compile","args":{"span_id":"289","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094230000,"dur":54000},{"pid":1,"tid":0,"id":290,"name":"task: aidl compile","args":{"span_id":"290","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094298000,"dur":27000},{"pid":1,"tid":0,"id":291,"name":"task: unknown task type","args":{"span_id":"291","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603094326000,"dur":1000},{"pid":1,"tid":0,"id":292,"name":"task: unknown task type","args":{"span_id":"292","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603094333000,"dur":2000},{"pid":1,"tid":0,"id":293,"name":"task: renderscript compile","args":{"span_id":"293","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094337000,"dur":26000},{"pid":1,"tid":0,"id":294,"name":"task: check manifest","args":{"span_id":"294","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094367000,"dur":4000},{"pid":1,"tid":0,"id":295,"name":"task: generate build config","args":{"span_id":"295","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094372000,"dur":5000},{"pid":1,"tid":0,"id":296,"name":"task: prepare lint jar","args":{"span_id":"296","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094379000,"dur":5000},{"pid":1,"tid":0,"id":297,"name":"task: generate res values","args":{"span_id":"297","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094385000,"dur":2000},{"pid":1,"tid":0,"id":298,"name":"task: unknown task type","args":{"span_id":"298","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094388000,"dur":100},{"pid":1,"tid":0,"id":299,"name":"task: renderscript compile","args":{"span_id":"299","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094392000,"dur":18000},{"pid":1,"tid":0,"id":300,"name":"task: generate res values","args":{"span_id":"300","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094412000,"dur":2000},{"pid":1,"tid":0,"id":301,"name":"task: unknown task type","args":{"span_id":"301","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094415000,"dur":1000},{"pid":1,"tid":0,"id":302,"name":"task: merge resources","args":{"span_id":"302","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094418000,"dur":61000},{"pid":1,"tid":0,"id":303,"name":"task: renderscript compile","args":{"span_id":"303","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094481000,"dur":9000},{"pid":1,"tid":0,"id":304,"name":"task: generate res values","args":{"span_id":"304","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094492000,"dur":2000},{"pid":1,"tid":0,"id":305,"name":"task: unknown task type","args":{"span_id":"305","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094495000,"dur":100},{"pid":1,"tid":0,"id":306,"name":"task: merge resources","args":{"span_id":"306","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094498000,"dur":21000},{"pid":1,"tid":0,"id":307,"name":"task: merge resources","args":{"span_id":"307","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094522000,"dur":432000},{"pid":1,"tid":0,"id":308,"name":"task: compatible screens manifest","args":{"span_id":"308","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094955000,"dur":9000},{"pid":1,"tid":0,"id":309,"name":"task: merge manifests","args":{"span_id":"309","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094966000,"dur":28000},{"pid":1,"tid":0,"id":310,"name":"task: splits discovery","args":{"span_id":"310","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603094996000,"dur":2000},{"pid":1,"tid":0,"id":311,"name":"task: platform attr extractor","args":{"span_id":"311","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603095000000,"dur":3000},{"pid":1,"tid":0,"id":312,"name":"task: platform attr extractor","args":{"span_id":"312","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603095005000,"dur":4000},{"pid":1,"tid":0,"id":313,"name":"task: process android resources","args":{"span_id":"313","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603095010000,"dur":542000},{"pid":1,"tid":0,"id":314,"name":"task: process android resources","args":{"span_id":"314","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603095554000,"dur":1512000},{"pid":1,"tid":0,"id":315,"name":"task: process android resources","args":{"span_id":"315","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097070000,"dur":79000},{"pid":1,"tid":0,"id":316,"name":"task: unknown task type","args":{"span_id":"316","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097151000,"dur":100},{"pid":1,"tid":0,"id":317,"name":"task: generate build config","args":{"span_id":"317","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097152000,"dur":5000},{"pid":1,"tid":0,"id":318,"name":"task: prepare lint jar","args":{"span_id":"318","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097158000,"dur":3000},{"pid":1,"tid":0,"id":319,"name":"task: unknown task type","args":{"span_id":"319","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603097162000,"dur":100},{"pid":1,"tid":0,"id":320,"name":"task: unknown task type","args":{"span_id":"320","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097163000,"dur":26000},{"pid":1,"tid":0,"id":321,"name":"task: unknown task type","args":{"span_id":"321","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097203000,"dur":14000},{"pid":1,"tid":0,"id":322,"name":"task: generate build config","args":{"span_id":"322","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097220000,"dur":7000},{"pid":1,"tid":0,"id":323,"name":"task: prepare lint jar","args":{"span_id":"323","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097228000,"dur":2000},{"pid":1,"tid":0,"id":324,"name":"task: unknown task type","args":{"span_id":"324","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603097231000,"dur":100},{"pid":1,"tid":0,"id":325,"name":"task: java pre compile","args":{"span_id":"325","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097232000,"dur":15000},{"pid":1,"tid":0,"id":326,"name":"task: android java compile","args":{"span_id":"326","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097249000,"dur":77000},{"pid":1,"tid":0,"id":327,"name":"task: unknown task type","args":{"span_id":"327","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603097327000,"dur":1000},{"pid":1,"tid":0,"id":328,"name":"task: transform","args":{"span_id":"328","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097333000,"dur":6000},{"pid":1,"tid":0,"id":329,"name":"task: java pre compile","args":{"span_id":"329","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097341000,"dur":260000},{"pid":1,"tid":0,"id":330,"name":"task: android java compile","args":{"span_id":"330","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097603000,"dur":173000},{"pid":1,"tid":0,"id":331,"name":"task: unknown task type","args":{"span_id":"331","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603097777000,"dur":1000},{"pid":1,"tid":0,"id":332,"name":"task: transform","args":{"span_id":"332","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097780000,"dur":8000},{"pid":1,"tid":0,"id":333,"name":"task: java pre compile","args":{"span_id":"333","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603097789000,"dur":139000},{"pid":1,"tid":0,"id":334,"name":"task: android java compile","args":{"span_id":"334","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603097929000,"dur":198000},{"pid":1,"tid":0,"id":335,"name":"task: ndk compile","args":{"span_id":"335","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603098131000,"dur":2000},{"pid":1,"tid":0,"id":336,"name":"task: unknown task type","args":{"span_id":"336","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098137000,"dur":100},{"pid":1,"tid":0,"id":337,"name":"task: merge source set folders","args":{"span_id":"337","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098139000,"dur":11000},{"pid":1,"tid":0,"id":338,"name":"task: shader compile","args":{"span_id":"338","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098153000,"dur":3000},{"pid":1,"tid":0,"id":339,"name":"task: unknown task type","args":{"span_id":"339","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098161000,"dur":100},{"pid":1,"tid":0,"id":340,"name":"task: merge source set folders","args":{"span_id":"340","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098162000,"dur":4000},{"pid":1,"tid":0,"id":341,"name":"task: shader compile","args":{"span_id":"341","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098167000,"dur":5000},{"pid":1,"tid":0,"id":342,"name":"task: unknown task type","args":{"span_id":"342","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098173000,"dur":100},{"pid":1,"tid":0,"id":343,"name":"task: merge source set folders","args":{"span_id":"343","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098175000,"dur":11000},{"pid":1,"tid":0,"id":344,"name":"task: merge source set folders","args":{"span_id":"344","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098187000,"dur":5000},{"pid":1,"tid":0,"id":345,"name":"task: shader compile","args":{"span_id":"345","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098193000,"dur":3000},{"pid":1,"tid":0,"id":346,"name":"task: unknown task type","args":{"span_id":"346","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098198000,"dur":100},{"pid":1,"tid":0,"id":347,"name":"task: merge source set folders","args":{"span_id":"347","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098200000,"dur":5000},{"pid":1,"tid":0,"id":348,"name":"task: merge source set folders","args":{"span_id":"348","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603098206000,"dur":16000},{"pid":1,"tid":1,"id":350,"name":"transform prep: dex archive builder","args":{"span_id":"350","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 29\nis_incremental: true\n"},"ph":"X","ts":1547603098581000,"dur":85000},{"pid":1,"tid":1,"id":351,"name":"transform: dex archive builder","args":{"span_id":"351","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 29\nis_incremental: true\n"},"ph":"X","ts":1547603098673000,"dur":2148000},{"pid":1,"tid":0,"id":349,"name":"task: transform","args":{"span_id":"349","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603098224000,"dur":2620000},{"pid":1,"tid":1,"id":353,"name":"transform prep: external libs merger","args":{"span_id":"353","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 34\nis_incremental: true\n"},"ph":"X","ts":1547603100878000,"dur":8000},{"pid":1,"tid":1,"id":354,"name":"transform: external libs merger","args":{"span_id":"354","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 34\nis_incremental: true\n"},"ph":"X","ts":1547603100886000,"dur":2000},{"pid":1,"tid":0,"id":352,"name":"task: transform","args":{"span_id":"352","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603100845000,"dur":45000},{"pid":1,"tid":1,"id":356,"name":"transform prep: dex merger","args":{"span_id":"356","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 30\nis_incremental: true\n"},"ph":"X","ts":1547603100918000,"dur":9000},{"pid":1,"tid":1,"id":357,"name":"transform: dex merger","args":{"span_id":"357","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 30\nis_incremental: true\n"},"ph":"X","ts":1547603100927000,"dur":3106000},{"pid":1,"tid":0,"id":355,"name":"task: transform","args":{"span_id":"355","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603100891000,"dur":3235000},{"pid":1,"tid":0,"id":358,"name":"task: merge source set folders","args":{"span_id":"358","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104129000,"dur":8000},{"pid":1,"tid":0,"id":359,"name":"task: ndk compile","args":{"span_id":"359","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603104139000,"dur":1000},{"pid":1,"tid":0,"id":360,"name":"task: merge source set folders","args":{"span_id":"360","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104142000,"dur":8000},{"pid":1,"tid":0,"id":361,"name":"task: transform","args":{"span_id":"361","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104151000,"dur":8000},{"pid":1,"tid":0,"id":362,"name":"task: transform","args":{"span_id":"362","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104161000,"dur":6000},{"pid":1,"tid":0,"id":363,"name":"task: ndk compile","args":{"span_id":"363","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603104169000,"dur":1000},{"pid":1,"tid":0,"id":364,"name":"task: merge source set folders","args":{"span_id":"364","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104171000,"dur":9000},{"pid":1,"tid":0,"id":365,"name":"task: transform","args":{"span_id":"365","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104181000,"dur":8000},{"pid":1,"tid":0,"id":366,"name":"task: transform","args":{"span_id":"366","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104190000,"dur":4000},{"pid":1,"tid":0,"id":367,"name":"task: transform","args":{"span_id":"367","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104196000,"dur":100000},{"pid":1,"tid":0,"id":368,"name":"task: unknown task type","args":{"span_id":"368","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603104297000,"dur":1000},{"pid":1,"tid":0,"id":369,"name":"task: transform","args":{"span_id":"369","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603104301000,"dur":82000},{"pid":1,"tid":0,"id":370,"name":"task: validate signing","args":{"span_id":"370","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 67\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603104383000,"dur":4000},{"pid":1,"tid":0,"id":371,"name":"task: package application","args":{"span_id":"371","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603104390000,"dur":2182000},{"pid":1,"tid":0,"id":372,"name":"task: unknown task type","args":{"span_id":"372","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603106572000,"dur":2000},{"pid":1,"tid":0,"id":373,"name":"task: extract proguard files","args":{"span_id":"373","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 20\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106575000,"dur":5000},{"pid":1,"tid":0,"id":374,"name":"task: unknown task type","args":{"span_id":"374","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106581000,"dur":100},{"pid":1,"tid":0,"id":375,"name":"task: check manifest","args":{"span_id":"375","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106582000,"dur":3000},{"pid":1,"tid":0,"id":376,"name":"task: process manifest","args":{"span_id":"376","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106586000,"dur":9000},{"pid":1,"tid":0,"id":377,"name":"task: unknown task type","args":{"span_id":"377","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106596000,"dur":100},{"pid":1,"tid":0,"id":378,"name":"task: check manifest","args":{"span_id":"378","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106597000,"dur":2000},{"pid":1,"tid":0,"id":379,"name":"task: process manifest","args":{"span_id":"379","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106600000,"dur":11000},{"pid":1,"tid":0,"id":380,"name":"task: app pre build","args":{"span_id":"380","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106612000,"dur":78000},{"pid":1,"tid":0,"id":381,"name":"task: aidl compile","args":{"span_id":"381","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106692000,"dur":14000},{"pid":1,"tid":0,"id":382,"name":"task: aidl compile","args":{"span_id":"382","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106707000,"dur":37000},{"pid":1,"tid":0,"id":383,"name":"task: aidl compile","args":{"span_id":"383","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106746000,"dur":13000},{"pid":1,"tid":0,"id":384,"name":"task: unknown task type","args":{"span_id":"384","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603106760000,"dur":100},{"pid":1,"tid":0,"id":385,"name":"task: unknown task type","args":{"span_id":"385","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603106761000,"dur":1000},{"pid":1,"tid":0,"id":386,"name":"task: renderscript compile","args":{"span_id":"386","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106764000,"dur":14000},{"pid":1,"tid":0,"id":387,"name":"task: check manifest","args":{"span_id":"387","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106779000,"dur":1000},{"pid":1,"tid":0,"id":388,"name":"task: generate build config","args":{"span_id":"388","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106781000,"dur":3000},{"pid":1,"tid":0,"id":389,"name":"task: generate res values","args":{"span_id":"389","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106785000,"dur":2000},{"pid":1,"tid":0,"id":390,"name":"task: unknown task type","args":{"span_id":"390","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106788000,"dur":100},{"pid":1,"tid":0,"id":391,"name":"task: renderscript compile","args":{"span_id":"391","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106790000,"dur":15000},{"pid":1,"tid":0,"id":392,"name":"task: generate res values","args":{"span_id":"392","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106806000,"dur":5000},{"pid":1,"tid":0,"id":393,"name":"task: unknown task type","args":{"span_id":"393","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106812000,"dur":1000},{"pid":1,"tid":0,"id":394,"name":"task: merge resources","args":{"span_id":"394","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106815000,"dur":131000},{"pid":1,"tid":0,"id":395,"name":"task: renderscript compile","args":{"span_id":"395","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106948000,"dur":24000},{"pid":1,"tid":0,"id":396,"name":"task: generate res values","args":{"span_id":"396","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106974000,"dur":2000},{"pid":1,"tid":0,"id":397,"name":"task: unknown task type","args":{"span_id":"397","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106977000,"dur":100},{"pid":1,"tid":0,"id":398,"name":"task: merge resources","args":{"span_id":"398","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106979000,"dur":9000},{"pid":1,"tid":0,"id":399,"name":"task: merge resources","args":{"span_id":"399","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603106991000,"dur":508000},{"pid":1,"tid":0,"id":400,"name":"task: compatible screens manifest","args":{"span_id":"400","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107508000,"dur":10000},{"pid":1,"tid":0,"id":401,"name":"task: merge manifests","args":{"span_id":"401","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107523000,"dur":26000},{"pid":1,"tid":0,"id":402,"name":"task: splits discovery","args":{"span_id":"402","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107551000,"dur":4000},{"pid":1,"tid":0,"id":403,"name":"task: process android resources","args":{"span_id":"403","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107557000,"dur":15000},{"pid":1,"tid":0,"id":404,"name":"task: process android resources","args":{"span_id":"404","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107573000,"dur":43000},{"pid":1,"tid":0,"id":405,"name":"task: process android resources","args":{"span_id":"405","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107618000,"dur":33000},{"pid":1,"tid":0,"id":406,"name":"task: unknown task type","args":{"span_id":"406","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107651000,"dur":1000},{"pid":1,"tid":0,"id":407,"name":"task: generate build config","args":{"span_id":"407","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107652000,"dur":5000},{"pid":1,"tid":0,"id":408,"name":"task: unknown task type","args":{"span_id":"408","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107657000,"dur":1000},{"pid":1,"tid":0,"id":409,"name":"task: generate build config","args":{"span_id":"409","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107659000,"dur":2000},{"pid":1,"tid":0,"id":410,"name":"task: unknown task type","args":{"span_id":"410","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107662000,"dur":100},{"pid":1,"tid":0,"id":411,"name":"task: java pre compile","args":{"span_id":"411","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107663000,"dur":10000},{"pid":1,"tid":0,"id":412,"name":"task: android java compile","args":{"span_id":"412","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107677000,"dur":53000},{"pid":1,"tid":0,"id":413,"name":"task: unknown task type","args":{"span_id":"413","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603107733000,"dur":1000},{"pid":1,"tid":0,"id":414,"name":"task: transform","args":{"span_id":"414","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107737000,"dur":6000},{"pid":1,"tid":0,"id":415,"name":"task: java pre compile","args":{"span_id":"415","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603107744000,"dur":26000},{"pid":1,"tid":0,"id":416,"name":"task: android java compile","args":{"span_id":"416","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603107772000,"dur":7124000},{"pid":1,"tid":0,"id":417,"name":"task: unknown task type","args":{"span_id":"417","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603114898000,"dur":7000},{"pid":1,"tid":2,"id":419,"name":"transform prep: unknown transform type","args":{"span_id":"419","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: true\n"},"ph":"X","ts":1547603114915000,"dur":2000},{"pid":1,"tid":2,"id":420,"name":"transform: unknown transform type","args":{"span_id":"420","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 0\nis_incremental: true\n"},"ph":"X","ts":1547603114917000,"dur":82000},{"pid":1,"tid":0,"id":418,"name":"task: transform","args":{"span_id":"418","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603114907000,"dur":95000},{"pid":1,"tid":0,"id":421,"name":"task: java pre compile","args":{"span_id":"421","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603115003000,"dur":85000},{"pid":1,"tid":0,"id":422,"name":"task: android java compile","args":{"span_id":"422","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603115089000,"dur":404000},{"pid":1,"tid":0,"id":423,"name":"task: ndk compile","args":{"span_id":"423","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603115495000,"dur":1000},{"pid":1,"tid":0,"id":424,"name":"task: unknown task type","args":{"span_id":"424","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603115497000,"dur":100},{"pid":1,"tid":0,"id":425,"name":"task: lint per variant","args":{"span_id":"425","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 118\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603115498000,"dur":21316000},{"pid":1,"tid":0,"id":426,"name":"task: merge source set folders","args":{"span_id":"426","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136815000,"dur":9000},{"pid":1,"tid":0,"id":427,"name":"task: shader compile","args":{"span_id":"427","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136825000,"dur":3000},{"pid":1,"tid":0,"id":428,"name":"task: unknown task type","args":{"span_id":"428","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136828000,"dur":100},{"pid":1,"tid":0,"id":429,"name":"task: merge source set folders","args":{"span_id":"429","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136829000,"dur":4000},{"pid":1,"tid":0,"id":430,"name":"task: shader compile","args":{"span_id":"430","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136833000,"dur":4000},{"pid":1,"tid":0,"id":431,"name":"task: unknown task type","args":{"span_id":"431","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136837000,"dur":1000},{"pid":1,"tid":0,"id":432,"name":"task: merge source set folders","args":{"span_id":"432","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136839000,"dur":5000},{"pid":1,"tid":0,"id":433,"name":"task: merge source set folders","args":{"span_id":"433","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136845000,"dur":3000},{"pid":1,"tid":0,"id":434,"name":"task: shader compile","args":{"span_id":"434","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136849000,"dur":2000},{"pid":1,"tid":0,"id":435,"name":"task: unknown task type","args":{"span_id":"435","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136851000,"dur":100},{"pid":1,"tid":0,"id":436,"name":"task: merge source set folders","args":{"span_id":"436","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136853000,"dur":4000},{"pid":1,"tid":0,"id":437,"name":"task: merge source set folders","args":{"span_id":"437","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136858000,"dur":15000},{"pid":1,"tid":0,"id":438,"name":"task: unknown task type","args":{"span_id":"438","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603136873000,"dur":2000},{"pid":1,"tid":0,"id":439,"name":"task: transform","args":{"span_id":"439","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136876000,"dur":38000},{"pid":1,"tid":0,"id":440,"name":"task: merge file","args":{"span_id":"440","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 38\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136915000,"dur":1000},{"pid":1,"tid":0,"id":441,"name":"task: merge file","args":{"span_id":"441","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 38\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603136917000,"dur":2000},{"pid":1,"tid":1,"id":443,"name":"transform prep: pro guard","args":{"span_id":"443","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 17\nis_incremental: false\n"},"ph":"X","ts":1547603136991000,"dur":37000},{"pid":1,"tid":1,"id":444,"name":"transform: pro guard","args":{"span_id":"444","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 17\nis_incremental: false\n"},"ph":"X","ts":1547603137028000,"dur":20128000},{"pid":1,"tid":0,"id":442,"name":"task: transform","args":{"span_id":"442","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603136922000,"dur":20611000},{"pid":1,"tid":1,"id":446,"name":"transform prep: dex","args":{"span_id":"446","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 1\nis_incremental: false\n"},"ph":"X","ts":1547603157543000,"dur":1000},{"pid":1,"tid":1,"id":447,"name":"transform: dex","args":{"span_id":"447","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 1\nis_incremental: false\n"},"ph":"X","ts":1547603157544000,"dur":18470000},{"pid":1,"tid":0,"id":445,"name":"task: transform","args":{"span_id":"445","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603157534000,"dur":18502000},{"pid":1,"tid":2,"id":449,"name":"transform prep: shrink resources","args":{"span_id":"449","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 18\nis_incremental: false\n"},"ph":"X","ts":1547603176099000,"dur":100},{"pid":1,"tid":2,"id":450,"name":"transform: shrink resources","args":{"span_id":"450","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","transform":"type: 18\nis_incremental: false\n"},"ph":"X","ts":1547603176099000,"dur":1867000},{"pid":1,"tid":0,"id":448,"name":"task: transform","args":{"span_id":"448","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603176037000,"dur":1938000},{"pid":1,"tid":0,"id":451,"name":"task: merge source set folders","args":{"span_id":"451","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603177976000,"dur":5000},{"pid":1,"tid":0,"id":452,"name":"task: ndk compile","args":{"span_id":"452","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603177982000,"dur":100},{"pid":1,"tid":0,"id":453,"name":"task: merge source set folders","args":{"span_id":"453","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603177983000,"dur":5000},{"pid":1,"tid":0,"id":454,"name":"task: transform","args":{"span_id":"454","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603177989000,"dur":5000},{"pid":1,"tid":0,"id":455,"name":"task: transform","args":{"span_id":"455","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nannotation_processors {\n spec: \"compiler.jar (com.github.bumptech.glide:compiler:4.6.1)\"\n}\nannotation_processors {\n spec: \"dagger-compiler.jar (com.google.dagger:dagger-compiler:2.0.2)\"\n}\nannotation_processors {\n spec: \"eventbus-annotation-processor.jar (org.greenrobot:eventbus-annotation-processor:3.1.1)\"\n}\nannotation_processors {\n spec: \"butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.8.1)\"\n}\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603177995000,"dur":3000},{"pid":1,"tid":0,"id":456,"name":"task: ndk compile","args":{"span_id":"456","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603178001000,"dur":3000},{"pid":1,"tid":0,"id":457,"name":"task: merge source set folders","args":{"span_id":"457","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603178006000,"dur":6000},{"pid":1,"tid":0,"id":458,"name":"task: transform","args":{"span_id":"458","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603178013000,"dur":2000},{"pid":1,"tid":0,"id":459,"name":"task: transform","args":{"span_id":"459","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603178016000,"dur":4000},{"pid":1,"tid":0,"id":460,"name":"task: transform","args":{"span_id":"460","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1547603178021000,"dur":61000},{"pid":1,"tid":0,"id":461,"name":"task: validate signing","args":{"span_id":"461","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 67\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603178083000,"dur":2000},{"pid":1,"tid":0,"id":462,"name":"task: package application","args":{"span_id":"462","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603178086000,"dur":3202000},{"pid":1,"tid":0,"id":463,"name":"task: unknown task type","args":{"span_id":"463","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603181289000,"dur":100},{"pid":1,"tid":0,"id":464,"name":"task: unknown task type","args":{"span_id":"464","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1547603181290000,"dur":100},{"pid":1,"tid":1,"id":465,"name":"base plugin build finished","args":{"span_id":"465","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603181313000,"dur":14000},{"pid":1,"tid":1,"id":466,"name":"base plugin build finished","args":{"span_id":"466","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603181327000,"dur":2000},{"pid":1,"tid":1,"id":467,"name":"base plugin build finished","args":{"span_id":"467","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1547603181329000,"dur":1000}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-16-09-46-21-399.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-16-09-46-21-399.rawproto deleted file mode 100644 index 2b139c5b753298484e8563b74e6c071202b1dfd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25741 zcmbuId3+SdmB-cH0vZ|PHb&^#*wQ4M*kinC5e9K24kFIAjt`9E*x7jF2oU%LTgGwL zo82A6C2nzxTObZ0E{RiM1mY6n79c>JmN|^Lhg*OR`})1A=`LxMPdfU~)c4h|Ue~Yc zbxmt}+{9=TpU~QTCAqurwKsfkcWjW*Dn210KJn*|Cd9XoZ}o0M+tw{pQ$9*b{w(FC zsMc-c?SFS`mCz*+sK~AN_L-sve~x%BBJ~fZ(WKt<@z@n~pVp#&>qPwT)*T-=HB0kF z_#;|HwAZ@nX5$ZZ^NGJ|0Zl`sTM=Q=OHs+ad!+Vxzemf~iCrU7@93ufk7z&QXcu4? zN4#r?sCM1^eEiA#AEl(me~_H&^W(qbd%fTHz0bSFcl-R~Px_{Ge=ok*NALGY=_unm zwuw)SPk6R#r>GZtB=_o-lG;)dmqMRDy*^5bXWp?|SjX1(1U%dI?Wo_U{3WG#-)^6O z)-t(w?>>E#`@Y|&cgs&w`*ctF?6W>1p+2d-;(Mj0r1Vbh)2&b6j(@jD$LHe{?9_f8 z^~-Lb_wAdK`eE<)d!~fR?}OwIQ@(gFIkj(}-W|h5c5IIZCp?R`I8#?`?(=n1lXI^r zzSax*8lecFuk~^2HL|=0imV;khSk!`sC_K6_FfHZ@717o6ji&Rvy|2AQs?Z;PLQ^4 z->iWxf0$@y94Lsk0^c8ufs78m=oXJgJ=En5-y7YNaY6J-vFgFkS~Q7jgiWs`r+)ax z7bz*9SQ^Bkz}QM5P`Po}AFYy6WzWFy-}#zX7trBHVFX@Bfr*MhMaj-*V00LP2#Ba5 zfNdy{DFp&~!{4!T$~+64l>(X5cD!R{E-QQnZh6XJ@HsIDBv7!t=otvSS#u6*zl0%* zKxVOLfuV{(Rk>$@QHns`-3?wZVX+h_|K{{NR$h9EH-RL`DJ!#AVmmYA{Pb2l9%^e<-n{Bn zV1*ROJUlJY$}6q%DzHis2oAmDRbag$klz1Z3%KcN4vs1U6^HJ(fLopfPSsW5ydqFu z`Je^d_LMt1gg$K>&b_Dg}Bd-pn9nG5GV2WjurEX%bQ)q{#aX_aSzV~Rl5_#Cep ze4_|t&hjh}s1Pn>9SHu$s$6;rUGOvq=Pw9>lG}TFTRHRk#l!kPd6~q*i$b7sedecD z<{r_j(oi)f56nUKLiU z3MCsnE38!&Dvx_sD6FP%-Lt}WsSqfhhh9|7-{^H7N>zn|ahu}dh^G}*rYclz@T_pK zn!--c3ddE2()`U{ui~;)$hmlH0M6v$EnXEC4mrS|=CgLs-GuuhYj11V*xeUf{kc$W z=f)&B5>nVPd9!8}4Ls;gp)=f{MLD!LD_30Dty!6OrnG@wJ!~r5F7%3HkgE!pMtc)X9!YkCiFUCoQqTIu%5S(_|tHK0TA>)i^ zg-NPHQ7$T64>J$7Uq!a6P;%s?SB2Tt6h@x%sxVJgsLa{xRbiP_D4B8%y(pNuuPs!0 zm!((ZJ&*T2Ww2Tbr0>7+Q!D-6 z*|reqRdY$#W@RVX8WPy_)eBb1vP!Q4+Z2I}?Vbg8C<3K>JqsL>0vX@$dci8_cfKtQ z@H7X<>nc#82n5Gs1_M21a7q!#nTrC0JPDkstH4buP_R7hXIA-s%pl!U2KN+!D(?c{ z*Hs{Gwb+e0hgWy9s`9ZokMeX0)1*Mwn4O)h(o1-M@FtL@2xMIMEHG0MC>?#(YX*y? zK;F`eovc9dwYD(c(;O@;6q8tSDEGHk`qV(8M}c)xpmN=s-&!Sko&`>X1g_jifl2+n zW^hUhlph%RvK72Gz^lLwDUg11_sdq%szF`_vet=7%-A&ORjc&O&_tN($%Rc)AnWvn z*Q}DM!@LS?uB*T{MIfiha|YWLfvR%P0=pD}!1Uo>=U}%YP&MDPz+ov+`XH~1RoQQ( z*9^w47waIfrRa65d{jmv%<{AjCQ5opm22>HEoY=jQXq5hre9fk+iMZ1{fKi{ z3IrEazJxU~kOU7t^*vQRgW3g3tHdRwpBVXy6*x372?nQn5%~6=5XieS@ zdlINr1PZQt7C5H}1cxp4mcfg#c-A5N=}Jd4XW)XNnpHYE?`=3RLc_l(HL3o+odJ57 zXB*k|zU&MIEYjXA&0jqXMdpM=s(tyVHZMBET2&&a2qg|u9{;dJVcjJ*NQuChO?V;y zOcq;IiNJomkVD=sq`2-9JEcU$zFl}B!GfipvnW+1^458m*sn^I{u2^qb(c6SB{G&B zvR7x-GS72yPD+$)nKm3H)-LxfaiQ)KW3p+lwm0)GZWxIVI_9qQoW(d*BB#u|M5dG| z8om*;C|R`1V-_#Mw9VyQbOPna*5l*Uy9?fdf(*?USH0*ofTKp3qH{6w%NOBv*mhI`LqsFWzpS%eaK1>Pk_ zNr~W{r6>{D9uT< zbF9(c%vj!Ufo@feS|Bz4;oJLpRU%`7cZsw2XMY{e_7@g3t@wrZNz z)YM@iebL!h9O>8FYe^AZG`rb=>l^K_?)pj$zag8W&3aZOtSu(+iod>Wf6NTEzUq&Z zt<6l+Y5+sZDEgS@ZzMsq*$}~*0|c7;ACm3O%!jNf$U8{w(f-N?2sAsLW@aMy zpL2nS5$s^l(0|?q8Y3uUkmSGM0*@dVe~89t=)dR!7J?ZJO#dYpcoe}r25 zAjp+H$R`1QgkXUjgM1R;#|Re59^{h%Pa{|?0r@1rGY-($CjtBj^0>z%?2`b`A}C^D zuulTCK(L8{#y$~04`H7Gtr1L-fb0|Cc?47C7-XLSZ5$x%6QC`E zEGb3y36O|jrUYc40PPUWl4Fp40?0Xia>%~JK)J^_A$U_Jw#?Gxaq z2o}h}X`2ym+^s)hn|c7U)+ zfS)5MkWy3)1$Ys`Y6-|D0e*pCjU0n)65y8(FnE^<@GAs`Qi^O6;MWM&Nhz{PfZsSk z<7z0tzav;Ldyq{6yyO6}%LMo>f+FrwpKTK0Wdy|xgiQjxf}li>K{gSHHh+e8EMpK& zc8K;@v0Zdvn;x;BtTCD{bdi@ zWdihafW~JI0p3F}fO`m=1b838ASp#Q3Ge}e!4i;70(|HOWRn0NxdGWEz{d^{HVM!h z!4Mup*d#z71S4d+bmkD?69l7VR%8=_Xfqk@xbL<}w10~2q66F1#C9XvOvUyIEc6)J z_ZYj>*ZK@{xn0=TfWhYo7RZswJ^}vX2DHlr_`(gSNDA;*1Pi4U*(bn%xdH7m0lsvA zuup*hMzC0>OZExyHv~)M7-XLS|KkQ^p8)^s24tTA|A!z?O3{&#K#UpC93pOJg7mY= z3hpEJnIQND)X!j*R3it8M4O+XBl8(FCP%2fnTcO8Y#@8oC(zV(1k8b&H9&*)+(npW zG8#mvNDf1G2{hP^#9d9GbV3_sFS1OaA#Nl}qd@pr7}MA&dy#Dd;o~$1iMyLX_?QgQ z7TJre6KI4RX?)%n2p=e6uVUGY>=S5|ipW5LGTcb)K!HXR+RB2$LxIK++Q~?mD9~6! zyJZ^WBB5p`eu=RG6f)s@DZn@zh%USnqj_VEx4{AK(Ukmc#wJeGtO*)iU?Ti&$S9N0 zMVSEkE6^l268;J_nb0NfrSqo)fu<0;A_Zwv3N+P?L{$}N8lfQf5{FEIrW3lsNaIg) z0?iz+4-ME_|MeVXtyDYn}$_$KAKYC`R)M4PhicAqbSKBC4wbEpQ`o zV-#p1p`lWcY!qmbifEe(wAhVAeHCa4q2V%l+NJ{K5gH-KA{zzDCp1zb+NJ_6RT0@J z&@wj?HVU+y&?puZw@QIl5E?5pq?@HcD+!I0X^@SCnwj%#w+1tLm^PgNt85^;aJ2>7 zt7c|_4JLCBuFsD%XkgWc!TeNaN|fJpp1!Qskjy(lzDM}qlc1?tAFh;8YeBT%erzC~ z5v|c+^4HYf2p=8kviU0w=5lj1J~|T3F=nA=t<~TwCK^6G3UzQdN6O|Hvq-bnYjCB4 zMo7TNMT3LBPZ>RBzN^4wDG~-bWD8BP1~Ko6?BpGJ4ow>OxxxEoY?p z_qk9pp_Pmb|9%(RN@%_8Rpvq^go-3O;6mF7ZDbVbKj=c+32l|V4!O_{LM0NNbfKMu zwo6p*Lc0jes0-njtZ@$aGiu^L=0f zEMTF!aF)<4nZtXMM4Q;-5*LycI+n0d>8aFU^=V4EIhHU(mauaglyP%?EMcNK#=M|e z=QTLO#K003>fmmUl+7{bWzD*zLE0G_p&pj7kkl0-gPCYp!UO^HD*ky}gP}}lbsMsT zT~iU3un@YgB3#`ebi<8wyM%?%O+v%vSh%`F=$49bb%)SxH>zi^?hvXXG+JI3uI>=R zud?HHjge#F>JFj1ZlwEhb%&7s<#Q}6vKOxI5c-bLc!_XzhtT(gCdf2!b%)S>LK9^# zT-_mre=x0%pf_L&dB~~8Y1{tGIU>bvX5AXtYG-ZuQVNI zOF6tv8A)Ov4R9mfu3#ZFkkDM&i#!&+2Dy>O9t$*>&^+0TJQgTjMdYzSL)=Jbj|Cb^ zXg&*Se)3qLVT5w!Smd!l!`(<@j|Cb*Xo2iS9t$*5MdYzSqX;dOX^_VPWe{2<1<7N9 zMiW}hNVh9kXnMyG%9DcRG4+Zu)5yteMs_t4onp+fMDm$L5)l<_9FY}F>?51O6)eWQ zq*)h3RiQH$uuxSPuiIo3_py&)p#p==54i690_&G(jx{IfaPKTt7v103KAF7~Wky&L zfIsu(k4V#E&51fppdazUhQ@Z?s~(W4i=PR?U-1eXFiD3gtne}gXsCcc*yIc`S%(W8 z@MI{UjXPk94(aq8IFtkCUOk7YI`Gf*P!3@Nrs*(@6(Vs6++fvnn6ATU4zP3J09Ot^ zbA}E}IN;8CdnU9b12x`p(u^~+bjU5U-@NtZ+7T?GIT5kuOdSr=FX{LaF#u00D4_(* z(qS_Fz=^MUXbdGFTZfe#P~8svc{SUw**X+*fNiLIDn!5>9X4>l6QLmz-AT^X;cE`C z=ZddW@oSzAr#YZrC;;3FIcTUm!1n74cffodu5tjcI(sUga0le-z(4dthK5;|3v{Sr zg(jE-&!ln{3w0PyKM~@yhu{EZh($V#;(+QiDOUbs9ma6L3n2x+JIN(F?B#%l7{GQb zIppbZ%*lZRlpOMLsyV>kJ8rW?4oh`7$pO)!AzV4cnagyz%K>=?MzCA1h*)#Ej(;1X zRcU9*0S(=ku>zMA2iQxW1D<%c<;W!8I_Olm+ zDE--ToJM6SNIhs`Y{mSYoY6S z-krr-9r(98YFku=Iuy|lS@`UQ&1*(k*z0sC<^bnHm4&@thwU7o7DI6vv1XAD{9_wF zd-sJYryF#*&I*mg2W-?~0R75>uK@<|qEeFFge#u|oC=^MxfxeJ2dJwql;jp2GC1Io z&=4=XXR=s_nH=y61=xNX?tra2T;Tw&gigg4Rj5RVn;cL-G(=}dAU!}lC8z}djA zB;w5NI`pSsi|{RScCeDg4juC8#~5ndyF?Z{by&^;CT78gD_QKqYRUn_>@j$AyzE|= zyLH$`zt`X^=7<_|u}6oo^wKv~B9?fLE>&bvsssO8LT&4EFWx~}!Cv~T@T@agvF1J< z=5v5k1lqX+_Tx-&fNgo0dRnH#QVy{9AJ2p`!~q@nrwm+sLmA>APL(r6n3a79w;u;M z8(0~l9QOtX*xQd+wi0j{3oZxPm&pN24oC3*>f{ino*u>Fjro#yiuxO&}JCiGi z=H>|<4&0`4`li1$rgfzGl%?60*pJ4ZG{44qt|EHc^6#yNl4OwZyej01SX+9h1s36(mGbQHp@!gD%ItRCRn zu(9TOtV|qW*OeMOI@Y{^TgAzN*N~FKMZ8~ffOA)Ot$*vtVvLKCF~1Tjf^k(>&bd%KE~aTTrRfUe;cuA!M6VCTRk<3(qo#hKT27({QH z`vyH4ifHLX#F{toK0P_`5pH;Q+oH))?ZR4mliPmnHmM zR(*)?@Fu|luhK+CVu0)1A8US(cVv2}(`VnZSwVBp!+pF1aKMj4SD^$v&|wV+JRBNA z2?!Wa!U5H1QY?sm2Jj2YH9jJVfHVVkI!S6t_Eji{)&2$?+KY$3O$VVFf-X+5yUOcaQ<6ovUy!Yq1^%8}Ka$*ar``TS+qAfLk2ECp6nEWr!gL ze8&M?V&tL~OD@hFYQO^y=+6=M7Ea8CfoXJ+Q%rIa%y}s#-3N4w2?nO5mzkSRB{5j8dLpj!u zG2m+s;1Xd6yyaFHYrq)};A5bjrE;JiXTVJkcrIj@5-{F?S@dq9?+2kIm4FGDBnR-K zt7aEIelUPv@f61nI|pUaW#Ynj6v7-kCK<4U101&$g~h3mK$(@73|9lGsFr5j&OioUwBCVo z)WZLXK@vTqeac*m_lnu}OK85VX&P?}7x$TK44BNl`_FV1oO0q{XTUsq{R>m1U57V* zXMptvwFuOP@XZAg~W9YS@Y85baW-rAG_;&)D zntKiCM{fn;VYVJ-8DW30ZEEf_U=%m&*o+m2oA=|qa#kiOH?Ib^CwA!$!OS diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-21-09-48-02-239.json b/AndroidLearnProject/build/android-profile/profile-2019-01-21-09-48-02-239.json deleted file mode 100644 index 26951e8..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-21-09-48-02-239.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1548035273583000,"args":{"JVM stats":"heap_memory_usage: 429552912\nnon_heap_memory_usage: 156155592\nloaded_class_count: 17984\nthread_count: 36\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035275032000,"args":{"JVM stats":"heap_memory_usage: 165613136\nnon_heap_memory_usage: 157427376\nloaded_class_count: 18016\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 65\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035276796000,"args":{"JVM stats":"heap_memory_usage: 191163616\nnon_heap_memory_usage: 157708760\nloaded_class_count: 18016\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277044000,"args":{"JVM stats":"heap_memory_usage: 194422608\nnon_heap_memory_usage: 157710696\nloaded_class_count: 18016\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277141000,"args":{"JVM stats":"heap_memory_usage: 196051520\nnon_heap_memory_usage: 157719152\nloaded_class_count: 18016\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277142000,"args":{"JVM stats":"heap_memory_usage: 196051520\nnon_heap_memory_usage: 157720048\nloaded_class_count: 18016\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277143000,"args":{"JVM stats":"heap_memory_usage: 196051520\nnon_heap_memory_usage: 157720048\nloaded_class_count: 18016\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277207000,"args":{"JVM stats":"heap_memory_usage: 201340304\nnon_heap_memory_usage: 157700816\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277231000,"args":{"JVM stats":"heap_memory_usage: 202197888\nnon_heap_memory_usage: 157268112\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277234000,"args":{"JVM stats":"heap_memory_usage: 202197888\nnon_heap_memory_usage: 157261880\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277241000,"args":{"JVM stats":"heap_memory_usage: 202197888\nnon_heap_memory_usage: 156978456\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277243000,"args":{"JVM stats":"heap_memory_usage: 202197888\nnon_heap_memory_usage: 156881352\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277245000,"args":{"JVM stats":"heap_memory_usage: 202740712\nnon_heap_memory_usage: 156718472\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277246000,"args":{"JVM stats":"heap_memory_usage: 202740712\nnon_heap_memory_usage: 156720584\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277255000,"args":{"JVM stats":"heap_memory_usage: 203287616\nnon_heap_memory_usage: 156738688\nloaded_class_count: 18018\nthread_count: 33\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277280000,"args":{"JVM stats":"heap_memory_usage: 207087496\nnon_heap_memory_usage: 156744176\nloaded_class_count: 18019\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277300000,"args":{"JVM stats":"heap_memory_usage: 207937984\nnon_heap_memory_usage: 156779384\nloaded_class_count: 18021\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277378000,"args":{"JVM stats":"heap_memory_usage: 217239072\nnon_heap_memory_usage: 156808704\nloaded_class_count: 18021\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277383000,"args":{"JVM stats":"heap_memory_usage: 218093552\nnon_heap_memory_usage: 156816408\nloaded_class_count: 18021\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277385000,"args":{"JVM stats":"heap_memory_usage: 218093552\nnon_heap_memory_usage: 156819968\nloaded_class_count: 18021\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277386000,"args":{"JVM stats":"heap_memory_usage: 218093552\nnon_heap_memory_usage: 156819968\nloaded_class_count: 18021\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277387000,"args":{"JVM stats":"heap_memory_usage: 218093552\nnon_heap_memory_usage: 156824128\nloaded_class_count: 18021\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277392000,"args":{"JVM stats":"heap_memory_usage: 218093552\nnon_heap_memory_usage: 156843992\nloaded_class_count: 18024\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277416000,"args":{"JVM stats":"heap_memory_usage: 218093552\nnon_heap_memory_usage: 156860040\nloaded_class_count: 18024\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277620000,"args":{"JVM stats":"heap_memory_usage: 234754152\nnon_heap_memory_usage: 156904360\nloaded_class_count: 18025\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277656000,"args":{"JVM stats":"heap_memory_usage: 235997072\nnon_heap_memory_usage: 156920904\nloaded_class_count: 18028\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277676000,"args":{"JVM stats":"heap_memory_usage: 241051464\nnon_heap_memory_usage: 156931464\nloaded_class_count: 18028\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277677000,"args":{"JVM stats":"heap_memory_usage: 241051464\nnon_heap_memory_usage: 156932168\nloaded_class_count: 18028\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277680000,"args":{"JVM stats":"heap_memory_usage: 241051464\nnon_heap_memory_usage: 156934728\nloaded_class_count: 18028\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277708000,"args":{"JVM stats":"heap_memory_usage: 242294744\nnon_heap_memory_usage: 156981248\nloaded_class_count: 18039\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277712000,"args":{"JVM stats":"heap_memory_usage: 242294744\nnon_heap_memory_usage: 156985528\nloaded_class_count: 18039\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277722000,"args":{"JVM stats":"heap_memory_usage: 242294744\nnon_heap_memory_usage: 157032712\nloaded_class_count: 18048\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277724000,"args":{"JVM stats":"heap_memory_usage: 242294744\nnon_heap_memory_usage: 157032712\nloaded_class_count: 18048\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277728000,"args":{"JVM stats":"heap_memory_usage: 242837568\nnon_heap_memory_usage: 157042824\nloaded_class_count: 18049\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277730000,"args":{"JVM stats":"heap_memory_usage: 242837568\nnon_heap_memory_usage: 157043656\nloaded_class_count: 18049\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277753000,"args":{"JVM stats":"heap_memory_usage: 244623688\nnon_heap_memory_usage: 157045184\nloaded_class_count: 18049\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277755000,"args":{"JVM stats":"heap_memory_usage: 244623688\nnon_heap_memory_usage: 157046824\nloaded_class_count: 18049\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277758000,"args":{"JVM stats":"heap_memory_usage: 244623688\nnon_heap_memory_usage: 157046824\nloaded_class_count: 18049\nthread_count: 34\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035277987000,"args":{"JVM stats":"heap_memory_usage: 273218048\nnon_heap_memory_usage: 157276688\nloaded_class_count: 18059\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279782000,"args":{"JVM stats":"heap_memory_usage: 436234888\nnon_heap_memory_usage: 158115952\nloaded_class_count: 18059\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279789000,"args":{"JVM stats":"heap_memory_usage: 437353256\nnon_heap_memory_usage: 158123864\nloaded_class_count: 18060\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279894000,"args":{"JVM stats":"heap_memory_usage: 451272496\nnon_heap_memory_usage: 158215200\nloaded_class_count: 18062\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279898000,"args":{"JVM stats":"heap_memory_usage: 451815432\nnon_heap_memory_usage: 158233400\nloaded_class_count: 18063\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279907000,"args":{"JVM stats":"heap_memory_usage: 453443872\nnon_heap_memory_usage: 158253112\nloaded_class_count: 18063\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279908000,"args":{"JVM stats":"heap_memory_usage: 453986664\nnon_heap_memory_usage: 158253112\nloaded_class_count: 18063\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035279914000,"args":{"JVM stats":"heap_memory_usage: 456158096\nnon_heap_memory_usage: 158254512\nloaded_class_count: 18063\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035280976000,"args":{"JVM stats":"heap_memory_usage: 167882648\nnon_heap_memory_usage: 158326160\nloaded_class_count: 18069\nthread_count: 42\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 60\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 588\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035282223000,"args":{"JVM stats":"heap_memory_usage: 212956400\nnon_heap_memory_usage: 158663216\nloaded_class_count: 18069\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035282224000,"args":{"JVM stats":"heap_memory_usage: 212956400\nnon_heap_memory_usage: 158663216\nloaded_class_count: 18069\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035282225000,"args":{"JVM stats":"heap_memory_usage: 212956400\nnon_heap_memory_usage: 158667536\nloaded_class_count: 18069\nthread_count: 43\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548035282239000,"args":{"JVM stats":"heap_memory_usage: 212956400\nnon_heap_memory_usage: 158667824\nloaded_class_count: 18069\nthread_count: 39\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":1,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035273584000,"dur":23000},{"pid":1,"tid":1,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035273607000,"dur":11000},{"pid":1,"tid":1,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035273618000,"dur":21000},{"pid":1,"tid":1,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035273618000,"dur":21000},{"pid":1,"tid":1,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274293000,"dur":65000},{"pid":1,"tid":1,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274358000,"dur":1000},{"pid":1,"tid":1,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274361000,"dur":1000},{"pid":1,"tid":1,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274362000,"dur":1000},{"pid":1,"tid":1,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274363000,"dur":100},{"pid":1,"tid":1,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274363000,"dur":1000},{"pid":1,"tid":1,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274364000,"dur":1000},{"pid":1,"tid":1,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274365000,"dur":100},{"pid":1,"tid":1,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274365000,"dur":6000},{"pid":1,"tid":1,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274371000,"dur":1000},{"pid":1,"tid":1,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274372000,"dur":2000},{"pid":1,"tid":1,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274374000,"dur":1000},{"pid":1,"tid":1,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274375000,"dur":100},{"pid":1,"tid":1,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274375000,"dur":1000},{"pid":1,"tid":1,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274376000,"dur":5000},{"pid":1,"tid":1,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274381000,"dur":3000},{"pid":1,"tid":1,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274384000,"dur":1000},{"pid":1,"tid":1,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274359000,"dur":26000},{"pid":1,"tid":1,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274385000,"dur":5000},{"pid":1,"tid":1,"id":28,"name":"app task manager create merge manifest task","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274390000,"dur":1000},{"pid":1,"tid":1,"id":29,"name":"app task manager create generate res values task","args":{"span_id":"29","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274391000,"dur":100},{"pid":1,"tid":1,"id":30,"name":"app task manager create create renderscript task","args":{"span_id":"30","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274391000,"dur":100},{"pid":1,"tid":1,"id":31,"name":"app task manager create merge resources task","args":{"span_id":"31","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274391000,"dur":100},{"pid":1,"tid":1,"id":32,"name":"app task manager create merge assets task","args":{"span_id":"32","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274391000,"dur":100},{"pid":1,"tid":1,"id":33,"name":"app task manager create build config task","args":{"span_id":"33","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274391000,"dur":100},{"pid":1,"tid":1,"id":34,"name":"app task manager create process res task","args":{"span_id":"34","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274391000,"dur":2000},{"pid":1,"tid":1,"id":35,"name":"app task manager create aidl task","args":{"span_id":"35","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274393000,"dur":100},{"pid":1,"tid":1,"id":36,"name":"app task manager create shader task","args":{"span_id":"36","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274393000,"dur":100},{"pid":1,"tid":1,"id":37,"name":"app task manager create ndk task","args":{"span_id":"37","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274393000,"dur":100},{"pid":1,"tid":1,"id":38,"name":"app task manager create external native build task","args":{"span_id":"38","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274393000,"dur":100},{"pid":1,"tid":1,"id":39,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"39","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274393000,"dur":1000},{"pid":1,"tid":1,"id":40,"name":"app task manager create compile task","args":{"span_id":"40","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274394000,"dur":3000},{"pid":1,"tid":1,"id":41,"name":"app task manager create packaging task","args":{"span_id":"41","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274397000,"dur":1000},{"pid":1,"tid":1,"id":42,"name":"app task manager create lint task","args":{"span_id":"42","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274398000,"dur":100},{"pid":1,"tid":1,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274390000,"dur":8000},{"pid":1,"tid":1,"id":43,"name":"variant manager create tasks for variant","args":{"span_id":"43","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274398000,"dur":6000},{"pid":1,"tid":1,"id":44,"name":"variant manager create tasks for variant","args":{"span_id":"44","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274404000,"dur":11000},{"pid":1,"tid":1,"id":46,"name":"app task manager create merge manifest task","args":{"span_id":"46","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274416000,"dur":2000},{"pid":1,"tid":1,"id":47,"name":"app task manager create generate res values task","args":{"span_id":"47","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274418000,"dur":100},{"pid":1,"tid":1,"id":48,"name":"app task manager create create renderscript task","args":{"span_id":"48","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274418000,"dur":100},{"pid":1,"tid":1,"id":49,"name":"app task manager create merge resources task","args":{"span_id":"49","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274418000,"dur":1000},{"pid":1,"tid":1,"id":50,"name":"app task manager create merge assets task","args":{"span_id":"50","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274419000,"dur":100},{"pid":1,"tid":1,"id":51,"name":"app task manager create build config task","args":{"span_id":"51","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274419000,"dur":100},{"pid":1,"tid":1,"id":52,"name":"app task manager create process res task","args":{"span_id":"52","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274419000,"dur":2000},{"pid":1,"tid":1,"id":53,"name":"app task manager create aidl task","args":{"span_id":"53","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274421000,"dur":100},{"pid":1,"tid":1,"id":54,"name":"app task manager create shader task","args":{"span_id":"54","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274421000,"dur":100},{"pid":1,"tid":1,"id":55,"name":"app task manager create ndk task","args":{"span_id":"55","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274421000,"dur":1000},{"pid":1,"tid":1,"id":56,"name":"app task manager create external native build task","args":{"span_id":"56","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274422000,"dur":100},{"pid":1,"tid":1,"id":57,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"57","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274422000,"dur":100},{"pid":1,"tid":1,"id":58,"name":"app task manager create compile task","args":{"span_id":"58","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274422000,"dur":3000},{"pid":1,"tid":1,"id":59,"name":"app task manager create packaging task","args":{"span_id":"59","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274425000,"dur":10000},{"pid":1,"tid":1,"id":60,"name":"app task manager create lint task","args":{"span_id":"60","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274435000,"dur":1000},{"pid":1,"tid":1,"id":45,"name":"variant manager create tasks for variant","args":{"span_id":"45","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 3\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274415000,"dur":21000},{"pid":1,"tid":1,"id":61,"name":"variant manager create tasks for variant","args":{"span_id":"61","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274436000,"dur":9000},{"pid":1,"tid":1,"id":63,"name":"app task manager create merge manifest task","args":{"span_id":"63","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274445000,"dur":1000},{"pid":1,"tid":1,"id":64,"name":"app task manager create generate res values task","args":{"span_id":"64","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274446000,"dur":100},{"pid":1,"tid":1,"id":65,"name":"app task manager create create renderscript task","args":{"span_id":"65","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274446000,"dur":100},{"pid":1,"tid":1,"id":66,"name":"app task manager create merge resources task","args":{"span_id":"66","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274446000,"dur":1000},{"pid":1,"tid":1,"id":67,"name":"app task manager create merge assets task","args":{"span_id":"67","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274447000,"dur":100},{"pid":1,"tid":1,"id":68,"name":"app task manager create build config task","args":{"span_id":"68","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274447000,"dur":100},{"pid":1,"tid":1,"id":69,"name":"app task manager create process res task","args":{"span_id":"69","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274447000,"dur":1000},{"pid":1,"tid":1,"id":70,"name":"app task manager create aidl task","args":{"span_id":"70","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274448000,"dur":1000},{"pid":1,"tid":1,"id":71,"name":"app task manager create shader task","args":{"span_id":"71","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274449000,"dur":100},{"pid":1,"tid":1,"id":72,"name":"app task manager create ndk task","args":{"span_id":"72","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274449000,"dur":100},{"pid":1,"tid":1,"id":73,"name":"app task manager create external native build task","args":{"span_id":"73","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274449000,"dur":100},{"pid":1,"tid":1,"id":74,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"74","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274449000,"dur":1000},{"pid":1,"tid":1,"id":75,"name":"app task manager create compile task","args":{"span_id":"75","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274450000,"dur":4000},{"pid":1,"tid":1,"id":76,"name":"app task manager create packaging task","args":{"span_id":"76","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274454000,"dur":1000},{"pid":1,"tid":1,"id":77,"name":"app task manager create lint task","args":{"span_id":"77","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274455000,"dur":100},{"pid":1,"tid":1,"id":62,"name":"variant manager create tasks for variant","args":{"span_id":"62","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 4\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274445000,"dur":10000},{"pid":1,"tid":1,"id":78,"name":"variant manager create tasks for variant","args":{"span_id":"78","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274455000,"dur":15000},{"pid":1,"tid":1,"id":79,"name":"variant manager create tasks for variant","args":{"span_id":"79","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274470000,"dur":13000},{"pid":1,"tid":1,"id":81,"name":"app task manager create merge manifest task","args":{"span_id":"81","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274485000,"dur":100},{"pid":1,"tid":1,"id":82,"name":"app task manager create generate res values task","args":{"span_id":"82","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274485000,"dur":100},{"pid":1,"tid":1,"id":83,"name":"app task manager create create renderscript task","args":{"span_id":"83","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274485000,"dur":100},{"pid":1,"tid":1,"id":84,"name":"app task manager create merge resources task","args":{"span_id":"84","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274485000,"dur":1000},{"pid":1,"tid":1,"id":85,"name":"app task manager create merge assets task","args":{"span_id":"85","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274486000,"dur":100},{"pid":1,"tid":1,"id":86,"name":"app task manager create build config task","args":{"span_id":"86","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274486000,"dur":1000},{"pid":1,"tid":1,"id":87,"name":"app task manager create process res task","args":{"span_id":"87","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274487000,"dur":1000},{"pid":1,"tid":1,"id":88,"name":"app task manager create aidl task","args":{"span_id":"88","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274488000,"dur":100},{"pid":1,"tid":1,"id":89,"name":"app task manager create shader task","args":{"span_id":"89","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274488000,"dur":100},{"pid":1,"tid":1,"id":90,"name":"app task manager create ndk task","args":{"span_id":"90","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274488000,"dur":100},{"pid":1,"tid":1,"id":91,"name":"app task manager create external native build task","args":{"span_id":"91","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274488000,"dur":100},{"pid":1,"tid":1,"id":92,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"92","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274488000,"dur":1000},{"pid":1,"tid":1,"id":93,"name":"app task manager create compile task","args":{"span_id":"93","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274489000,"dur":2000},{"pid":1,"tid":1,"id":94,"name":"app task manager create packaging task","args":{"span_id":"94","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274491000,"dur":1000},{"pid":1,"tid":1,"id":95,"name":"app task manager create lint task","args":{"span_id":"95","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274492000,"dur":100},{"pid":1,"tid":1,"id":80,"name":"variant manager create tasks for variant","args":{"span_id":"80","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 5\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274483000,"dur":9000},{"pid":1,"tid":1,"id":96,"name":"variant manager create tasks for variant","args":{"span_id":"96","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274492000,"dur":5000},{"pid":1,"tid":1,"id":98,"name":"app task manager create merge manifest task","args":{"span_id":"98","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274497000,"dur":1000},{"pid":1,"tid":1,"id":99,"name":"app task manager create generate res values task","args":{"span_id":"99","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274498000,"dur":100},{"pid":1,"tid":1,"id":100,"name":"app task manager create create renderscript task","args":{"span_id":"100","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274498000,"dur":100},{"pid":1,"tid":1,"id":101,"name":"app task manager create merge resources task","args":{"span_id":"101","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274498000,"dur":100},{"pid":1,"tid":1,"id":102,"name":"app task manager create merge assets task","args":{"span_id":"102","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274498000,"dur":100},{"pid":1,"tid":1,"id":103,"name":"app task manager create build config task","args":{"span_id":"103","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274498000,"dur":100},{"pid":1,"tid":1,"id":104,"name":"app task manager create process res task","args":{"span_id":"104","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274498000,"dur":4000},{"pid":1,"tid":1,"id":105,"name":"app task manager create aidl task","args":{"span_id":"105","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274502000,"dur":100},{"pid":1,"tid":1,"id":106,"name":"app task manager create shader task","args":{"span_id":"106","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274503000,"dur":100},{"pid":1,"tid":1,"id":107,"name":"app task manager create ndk task","args":{"span_id":"107","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274503000,"dur":100},{"pid":1,"tid":1,"id":108,"name":"app task manager create external native build task","args":{"span_id":"108","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274503000,"dur":100},{"pid":1,"tid":1,"id":109,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"109","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274503000,"dur":100},{"pid":1,"tid":1,"id":110,"name":"app task manager create compile task","args":{"span_id":"110","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274503000,"dur":3000},{"pid":1,"tid":1,"id":111,"name":"app task manager create packaging task","args":{"span_id":"111","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274506000,"dur":1000},{"pid":1,"tid":1,"id":112,"name":"app task manager create lint task","args":{"span_id":"112","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274507000,"dur":1000},{"pid":1,"tid":1,"id":97,"name":"variant manager create tasks for variant","args":{"span_id":"97","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 6\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274497000,"dur":11000},{"pid":1,"tid":1,"id":113,"name":"variant manager create tasks for variant","args":{"span_id":"113","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274508000,"dur":87000},{"pid":1,"tid":1,"id":114,"name":"variant manager create tasks for variant","args":{"span_id":"114","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274595000,"dur":49000},{"pid":1,"tid":1,"id":116,"name":"app task manager create merge manifest task","args":{"span_id":"116","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274647000,"dur":100},{"pid":1,"tid":1,"id":117,"name":"app task manager create generate res values task","args":{"span_id":"117","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274647000,"dur":100},{"pid":1,"tid":1,"id":118,"name":"app task manager create create renderscript task","args":{"span_id":"118","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274647000,"dur":1000},{"pid":1,"tid":1,"id":119,"name":"app task manager create merge resources task","args":{"span_id":"119","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274648000,"dur":100},{"pid":1,"tid":1,"id":120,"name":"app task manager create merge assets task","args":{"span_id":"120","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274648000,"dur":100},{"pid":1,"tid":1,"id":121,"name":"app task manager create build config task","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274648000,"dur":100},{"pid":1,"tid":1,"id":122,"name":"app task manager create process res task","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274648000,"dur":1000},{"pid":1,"tid":1,"id":123,"name":"app task manager create aidl task","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274649000,"dur":1000},{"pid":1,"tid":1,"id":124,"name":"app task manager create shader task","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274650000,"dur":100},{"pid":1,"tid":1,"id":125,"name":"app task manager create ndk task","args":{"span_id":"125","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274650000,"dur":100},{"pid":1,"tid":1,"id":126,"name":"app task manager create external native build task","args":{"span_id":"126","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274650000,"dur":100},{"pid":1,"tid":1,"id":127,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"127","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274650000,"dur":1000},{"pid":1,"tid":1,"id":128,"name":"app task manager create compile task","args":{"span_id":"128","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274651000,"dur":2000},{"pid":1,"tid":1,"id":129,"name":"app task manager create packaging task","args":{"span_id":"129","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274653000,"dur":1000},{"pid":1,"tid":1,"id":130,"name":"app task manager create lint task","args":{"span_id":"130","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274654000,"dur":100},{"pid":1,"tid":1,"id":115,"name":"variant manager create tasks for variant","args":{"span_id":"115","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 7\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274644000,"dur":10000},{"pid":1,"tid":1,"id":131,"name":"variant manager create tasks for variant","args":{"span_id":"131","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274654000,"dur":4000},{"pid":1,"tid":1,"id":133,"name":"app task manager create merge manifest task","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274663000,"dur":100},{"pid":1,"tid":1,"id":134,"name":"app task manager create generate res values task","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274663000,"dur":100},{"pid":1,"tid":1,"id":135,"name":"app task manager create create renderscript task","args":{"span_id":"135","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274663000,"dur":1000},{"pid":1,"tid":1,"id":136,"name":"app task manager create merge resources task","args":{"span_id":"136","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274664000,"dur":100},{"pid":1,"tid":1,"id":137,"name":"app task manager create merge assets task","args":{"span_id":"137","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274664000,"dur":100},{"pid":1,"tid":1,"id":138,"name":"app task manager create build config task","args":{"span_id":"138","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274664000,"dur":100},{"pid":1,"tid":1,"id":139,"name":"app task manager create process res task","args":{"span_id":"139","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274664000,"dur":1000},{"pid":1,"tid":1,"id":140,"name":"app task manager create aidl task","args":{"span_id":"140","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274665000,"dur":100},{"pid":1,"tid":1,"id":141,"name":"app task manager create shader task","args":{"span_id":"141","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274665000,"dur":100},{"pid":1,"tid":1,"id":142,"name":"app task manager create ndk task","args":{"span_id":"142","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274665000,"dur":1000},{"pid":1,"tid":1,"id":143,"name":"app task manager create external native build task","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274666000,"dur":100},{"pid":1,"tid":1,"id":144,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274666000,"dur":100},{"pid":1,"tid":1,"id":145,"name":"app task manager create compile task","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274666000,"dur":2000},{"pid":1,"tid":1,"id":146,"name":"app task manager create packaging task","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274668000,"dur":1000},{"pid":1,"tid":1,"id":147,"name":"app task manager create lint task","args":{"span_id":"147","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274669000,"dur":100},{"pid":1,"tid":1,"id":132,"name":"variant manager create tasks for variant","args":{"span_id":"132","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 8\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274658000,"dur":11000},{"pid":1,"tid":1,"id":148,"name":"variant manager create tasks for variant","args":{"span_id":"148","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274669000,"dur":6000},{"pid":1,"tid":1,"id":149,"name":"variant manager create tasks for variant","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274675000,"dur":8000},{"pid":1,"tid":1,"id":151,"name":"app task manager create merge manifest task","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274684000,"dur":1000},{"pid":1,"tid":1,"id":152,"name":"app task manager create generate res values task","args":{"span_id":"152","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274685000,"dur":1000},{"pid":1,"tid":1,"id":153,"name":"app task manager create create renderscript task","args":{"span_id":"153","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274686000,"dur":100},{"pid":1,"tid":1,"id":154,"name":"app task manager create merge resources task","args":{"span_id":"154","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274686000,"dur":1000},{"pid":1,"tid":1,"id":155,"name":"app task manager create merge assets task","args":{"span_id":"155","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274687000,"dur":1000},{"pid":1,"tid":1,"id":156,"name":"app task manager create build config task","args":{"span_id":"156","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274688000,"dur":1000},{"pid":1,"tid":1,"id":157,"name":"app task manager create process res task","args":{"span_id":"157","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274689000,"dur":1000},{"pid":1,"tid":1,"id":158,"name":"app task manager create aidl task","args":{"span_id":"158","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274690000,"dur":100},{"pid":1,"tid":1,"id":159,"name":"app task manager create shader task","args":{"span_id":"159","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274690000,"dur":1000},{"pid":1,"tid":1,"id":160,"name":"app task manager create ndk task","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274691000,"dur":100},{"pid":1,"tid":1,"id":161,"name":"app task manager create external native build task","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274691000,"dur":100},{"pid":1,"tid":1,"id":162,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"162","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274691000,"dur":100},{"pid":1,"tid":1,"id":163,"name":"app task manager create compile task","args":{"span_id":"163","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274691000,"dur":2000},{"pid":1,"tid":1,"id":164,"name":"app task manager create packaging task","args":{"span_id":"164","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274693000,"dur":1000},{"pid":1,"tid":1,"id":165,"name":"app task manager create lint task","args":{"span_id":"165","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274694000,"dur":100},{"pid":1,"tid":1,"id":150,"name":"variant manager create tasks for variant","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274683000,"dur":11000},{"pid":1,"tid":1,"id":166,"name":"variant manager create tasks for variant","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274694000,"dur":3000},{"pid":1,"tid":1,"id":168,"name":"app task manager create merge manifest task","args":{"span_id":"168","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274698000,"dur":100},{"pid":1,"tid":1,"id":169,"name":"app task manager create generate res values task","args":{"span_id":"169","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274699000,"dur":100},{"pid":1,"tid":1,"id":170,"name":"app task manager create create renderscript task","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274699000,"dur":100},{"pid":1,"tid":1,"id":171,"name":"app task manager create merge resources task","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274699000,"dur":100},{"pid":1,"tid":1,"id":172,"name":"app task manager create merge assets task","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274699000,"dur":1000},{"pid":1,"tid":1,"id":173,"name":"app task manager create build config task","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274700000,"dur":100},{"pid":1,"tid":1,"id":174,"name":"app task manager create process res task","args":{"span_id":"174","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274700000,"dur":1000},{"pid":1,"tid":1,"id":175,"name":"app task manager create aidl task","args":{"span_id":"175","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274701000,"dur":100},{"pid":1,"tid":1,"id":176,"name":"app task manager create shader task","args":{"span_id":"176","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274701000,"dur":1000},{"pid":1,"tid":1,"id":177,"name":"app task manager create ndk task","args":{"span_id":"177","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274702000,"dur":100},{"pid":1,"tid":1,"id":178,"name":"app task manager create external native build task","args":{"span_id":"178","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274702000,"dur":100},{"pid":1,"tid":1,"id":179,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"179","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274702000,"dur":1000},{"pid":1,"tid":1,"id":180,"name":"app task manager create compile task","args":{"span_id":"180","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274703000,"dur":4000},{"pid":1,"tid":1,"id":181,"name":"app task manager create packaging task","args":{"span_id":"181","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274707000,"dur":1000},{"pid":1,"tid":1,"id":182,"name":"app task manager create lint task","args":{"span_id":"182","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274708000,"dur":1000},{"pid":1,"tid":1,"id":167,"name":"variant manager create tasks for variant","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 10\nis_debug: false\nminify_enabled: true\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274697000,"dur":12000},{"pid":1,"tid":1,"id":183,"name":"variant manager create tasks for variant","args":{"span_id":"183","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274709000,"dur":3000},{"pid":1,"tid":1,"id":184,"name":"variant manager create tasks for variant","args":{"span_id":"184","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274712000,"dur":8000},{"pid":1,"tid":1,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274292000,"dur":435000},{"pid":1,"tid":1,"id":185,"name":"variant manager external native config values","args":{"span_id":"185","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274727000,"dur":100},{"pid":1,"tid":1,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035273655000,"dur":1072000},{"pid":1,"tid":1,"id":186,"name":"base plugin project configure","args":{"span_id":"186","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274734000,"dur":6000},{"pid":1,"tid":1,"id":187,"name":"base plugin project base extension creation","args":{"span_id":"187","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274740000,"dur":6000},{"pid":1,"tid":1,"id":189,"name":"task manager create tasks","args":{"span_id":"189","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274746000,"dur":3000},{"pid":1,"tid":1,"id":188,"name":"base plugin project tasks creation","args":{"span_id":"188","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274746000,"dur":3000},{"pid":1,"tid":1,"id":192,"name":"variant manager create variants","args":{"span_id":"192","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274784000,"dur":4000},{"pid":1,"tid":1,"id":193,"name":"variant manager create tests tasks","args":{"span_id":"193","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274788000,"dur":1000},{"pid":1,"tid":1,"id":195,"name":"lib task manager create generate res values task","args":{"span_id":"195","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274789000,"dur":100},{"pid":1,"tid":1,"id":196,"name":"lib task manager create merge manifest task","args":{"span_id":"196","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274789000,"dur":1000},{"pid":1,"tid":1,"id":197,"name":"lib task manager create create renderscript task","args":{"span_id":"197","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274790000,"dur":100},{"pid":1,"tid":1,"id":198,"name":"lib task manager create merge resources task","args":{"span_id":"198","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274790000,"dur":1000},{"pid":1,"tid":1,"id":199,"name":"lib task manager create merge assets task","args":{"span_id":"199","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274791000,"dur":100},{"pid":1,"tid":1,"id":200,"name":"lib task manager create build config task","args":{"span_id":"200","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274791000,"dur":100},{"pid":1,"tid":1,"id":201,"name":"lib task manager create process res task","args":{"span_id":"201","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274791000,"dur":4000},{"pid":1,"tid":1,"id":202,"name":"lib task manager create aidl task","args":{"span_id":"202","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274795000,"dur":100},{"pid":1,"tid":1,"id":203,"name":"lib task manager create shader task","args":{"span_id":"203","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274795000,"dur":1000},{"pid":1,"tid":1,"id":204,"name":"lib task manager create compile task","args":{"span_id":"204","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274796000,"dur":100},{"pid":1,"tid":1,"id":205,"name":"lib task manager create ndk task","args":{"span_id":"205","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274796000,"dur":1000},{"pid":1,"tid":1,"id":206,"name":"lib task manager create external native build task","args":{"span_id":"206","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274797000,"dur":100},{"pid":1,"tid":1,"id":207,"name":"lib task manager create packaging task","args":{"span_id":"207","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274798000,"dur":100},{"pid":1,"tid":1,"id":208,"name":"lib task manager create merge proguard file task","args":{"span_id":"208","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274798000,"dur":1000},{"pid":1,"tid":1,"id":209,"name":"lib task manager create post compilation task","args":{"span_id":"209","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274801000,"dur":2000},{"pid":1,"tid":1,"id":210,"name":"lib task manager create lint task","args":{"span_id":"210","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274803000,"dur":100},{"pid":1,"tid":1,"id":194,"name":"variant manager create tasks for variant","args":{"span_id":"194","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274789000,"dur":14000},{"pid":1,"tid":1,"id":211,"name":"variant manager create tasks for variant","args":{"span_id":"211","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274803000,"dur":4000},{"pid":1,"tid":1,"id":213,"name":"lib task manager create generate res values task","args":{"span_id":"213","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274808000,"dur":100},{"pid":1,"tid":1,"id":214,"name":"lib task manager create merge manifest task","args":{"span_id":"214","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274808000,"dur":100},{"pid":1,"tid":1,"id":215,"name":"lib task manager create create renderscript task","args":{"span_id":"215","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274808000,"dur":100},{"pid":1,"tid":1,"id":216,"name":"lib task manager create merge resources task","args":{"span_id":"216","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274808000,"dur":1000},{"pid":1,"tid":1,"id":217,"name":"lib task manager create merge assets task","args":{"span_id":"217","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274809000,"dur":100},{"pid":1,"tid":1,"id":218,"name":"lib task manager create build config task","args":{"span_id":"218","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274809000,"dur":100},{"pid":1,"tid":1,"id":219,"name":"lib task manager create process res task","args":{"span_id":"219","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274809000,"dur":2000},{"pid":1,"tid":1,"id":220,"name":"lib task manager create aidl task","args":{"span_id":"220","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274811000,"dur":100},{"pid":1,"tid":1,"id":221,"name":"lib task manager create shader task","args":{"span_id":"221","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274811000,"dur":100},{"pid":1,"tid":1,"id":222,"name":"lib task manager create compile task","args":{"span_id":"222","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274811000,"dur":1000},{"pid":1,"tid":1,"id":223,"name":"lib task manager create ndk task","args":{"span_id":"223","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274812000,"dur":100},{"pid":1,"tid":1,"id":224,"name":"lib task manager create external native build task","args":{"span_id":"224","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274812000,"dur":100},{"pid":1,"tid":1,"id":225,"name":"lib task manager create packaging task","args":{"span_id":"225","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274812000,"dur":100},{"pid":1,"tid":1,"id":226,"name":"lib task manager create merge proguard file task","args":{"span_id":"226","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274812000,"dur":1000},{"pid":1,"tid":1,"id":227,"name":"lib task manager create post compilation task","args":{"span_id":"227","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274813000,"dur":1000},{"pid":1,"tid":1,"id":228,"name":"lib task manager create lint task","args":{"span_id":"228","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274815000,"dur":100},{"pid":1,"tid":1,"id":212,"name":"variant manager create tasks for variant","args":{"span_id":"212","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274807000,"dur":8000},{"pid":1,"tid":1,"id":229,"name":"variant manager create tasks for variant","args":{"span_id":"229","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274815000,"dur":2000},{"pid":1,"tid":1,"id":230,"name":"variant manager create tasks for variant","args":{"span_id":"230","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274817000,"dur":15000},{"pid":1,"tid":1,"id":191,"name":"variant manager create android tasks","args":{"span_id":"191","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274784000,"dur":50000},{"pid":1,"tid":1,"id":231,"name":"variant manager external native config values","args":{"span_id":"231","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274834000,"dur":100},{"pid":1,"tid":1,"id":190,"name":"base plugin create android tasks","args":{"span_id":"190","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035274783000,"dur":51000},{"pid":1,"tid":1,"id":232,"name":"base plugin project configure","args":{"span_id":"232","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274871000,"dur":7000},{"pid":1,"tid":1,"id":233,"name":"base plugin project base extension creation","args":{"span_id":"233","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274878000,"dur":4000},{"pid":1,"tid":1,"id":235,"name":"task manager create tasks","args":{"span_id":"235","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274882000,"dur":1000},{"pid":1,"tid":1,"id":234,"name":"base plugin project tasks creation","args":{"span_id":"234","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274882000,"dur":1000},{"pid":1,"tid":1,"id":238,"name":"variant manager create variants","args":{"span_id":"238","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274888000,"dur":3000},{"pid":1,"tid":1,"id":239,"name":"variant manager create tests tasks","args":{"span_id":"239","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274891000,"dur":1000},{"pid":1,"tid":1,"id":241,"name":"lib task manager create generate res values task","args":{"span_id":"241","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274894000,"dur":100},{"pid":1,"tid":1,"id":242,"name":"lib task manager create merge manifest task","args":{"span_id":"242","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274894000,"dur":1000},{"pid":1,"tid":1,"id":243,"name":"lib task manager create create renderscript task","args":{"span_id":"243","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274895000,"dur":100},{"pid":1,"tid":1,"id":244,"name":"lib task manager create merge resources task","args":{"span_id":"244","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274895000,"dur":1000},{"pid":1,"tid":1,"id":245,"name":"lib task manager create merge assets task","args":{"span_id":"245","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274896000,"dur":100},{"pid":1,"tid":1,"id":246,"name":"lib task manager create build config task","args":{"span_id":"246","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274896000,"dur":100},{"pid":1,"tid":1,"id":247,"name":"lib task manager create process res task","args":{"span_id":"247","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274896000,"dur":4000},{"pid":1,"tid":1,"id":248,"name":"lib task manager create aidl task","args":{"span_id":"248","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274900000,"dur":100},{"pid":1,"tid":1,"id":249,"name":"lib task manager create shader task","args":{"span_id":"249","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274900000,"dur":1000},{"pid":1,"tid":1,"id":250,"name":"lib task manager create compile task","args":{"span_id":"250","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274901000,"dur":1000},{"pid":1,"tid":1,"id":251,"name":"lib task manager create ndk task","args":{"span_id":"251","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274902000,"dur":1000},{"pid":1,"tid":1,"id":252,"name":"lib task manager create external native build task","args":{"span_id":"252","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274903000,"dur":100},{"pid":1,"tid":1,"id":253,"name":"lib task manager create packaging task","args":{"span_id":"253","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274903000,"dur":2000},{"pid":1,"tid":1,"id":254,"name":"lib task manager create merge proguard file task","args":{"span_id":"254","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274905000,"dur":1000},{"pid":1,"tid":1,"id":255,"name":"lib task manager create post compilation task","args":{"span_id":"255","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274906000,"dur":2000},{"pid":1,"tid":1,"id":256,"name":"lib task manager create lint task","args":{"span_id":"256","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274908000,"dur":100},{"pid":1,"tid":1,"id":240,"name":"variant manager create tasks for variant","args":{"span_id":"240","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274892000,"dur":16000},{"pid":1,"tid":1,"id":257,"name":"variant manager create tasks for variant","args":{"span_id":"257","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274908000,"dur":4000},{"pid":1,"tid":1,"id":259,"name":"lib task manager create generate res values task","args":{"span_id":"259","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274912000,"dur":100},{"pid":1,"tid":1,"id":260,"name":"lib task manager create merge manifest task","args":{"span_id":"260","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274912000,"dur":3000},{"pid":1,"tid":1,"id":261,"name":"lib task manager create create renderscript task","args":{"span_id":"261","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274915000,"dur":100},{"pid":1,"tid":1,"id":262,"name":"lib task manager create merge resources task","args":{"span_id":"262","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274915000,"dur":1000},{"pid":1,"tid":1,"id":263,"name":"lib task manager create merge assets task","args":{"span_id":"263","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274916000,"dur":100},{"pid":1,"tid":1,"id":264,"name":"lib task manager create build config task","args":{"span_id":"264","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274918000,"dur":1000},{"pid":1,"tid":1,"id":265,"name":"lib task manager create process res task","args":{"span_id":"265","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274919000,"dur":4000},{"pid":1,"tid":1,"id":266,"name":"lib task manager create aidl task","args":{"span_id":"266","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274923000,"dur":1000},{"pid":1,"tid":1,"id":267,"name":"lib task manager create shader task","args":{"span_id":"267","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274924000,"dur":100},{"pid":1,"tid":1,"id":268,"name":"lib task manager create compile task","args":{"span_id":"268","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274924000,"dur":100},{"pid":1,"tid":1,"id":269,"name":"lib task manager create ndk task","args":{"span_id":"269","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274924000,"dur":1000},{"pid":1,"tid":1,"id":270,"name":"lib task manager create external native build task","args":{"span_id":"270","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274925000,"dur":100},{"pid":1,"tid":1,"id":271,"name":"lib task manager create packaging task","args":{"span_id":"271","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274925000,"dur":100},{"pid":1,"tid":1,"id":272,"name":"lib task manager create merge proguard file task","args":{"span_id":"272","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274925000,"dur":1000},{"pid":1,"tid":1,"id":273,"name":"lib task manager create post compilation task","args":{"span_id":"273","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274927000,"dur":2000},{"pid":1,"tid":1,"id":274,"name":"lib task manager create lint task","args":{"span_id":"274","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274929000,"dur":1000},{"pid":1,"tid":1,"id":258,"name":"variant manager create tasks for variant","args":{"span_id":"258","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548035274912000,"dur":18000},{"pid":1,"tid":1,"id":275,"name":"variant manager create tasks for variant","args":{"span_id":"275","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274930000,"dur":15000},{"pid":1,"tid":1,"id":276,"name":"variant manager create tasks for variant","args":{"span_id":"276","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274945000,"dur":12000},{"pid":1,"tid":1,"id":237,"name":"variant manager create android tasks","args":{"span_id":"237","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274888000,"dur":70000},{"pid":1,"tid":1,"id":277,"name":"variant manager external native config values","args":{"span_id":"277","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274959000,"dur":100},{"pid":1,"tid":1,"id":236,"name":"base plugin create android tasks","args":{"span_id":"236","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035274887000,"dur":72000},{"pid":1,"tid":0,"id":278,"name":"task: delete","args":{"span_id":"278","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035275025000,"dur":7000},{"pid":1,"tid":0,"id":279,"name":"task: delete","args":{"span_id":"279","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035275033000,"dur":1763000},{"pid":1,"tid":0,"id":280,"name":"task: delete","args":{"span_id":"280","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035276797000,"dur":247000},{"pid":1,"tid":0,"id":281,"name":"task: delete","args":{"span_id":"281","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 104\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277045000,"dur":96000},{"pid":1,"tid":0,"id":282,"name":"task: unknown task type","args":{"span_id":"282","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277141000,"dur":1000},{"pid":1,"tid":0,"id":283,"name":"task: unknown task type","args":{"span_id":"283","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277142000,"dur":1000},{"pid":1,"tid":0,"id":284,"name":"task: aidl compile","args":{"span_id":"284","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277144000,"dur":62000},{"pid":1,"tid":0,"id":285,"name":"task: renderscript compile","args":{"span_id":"285","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277208000,"dur":22000},{"pid":1,"tid":0,"id":286,"name":"task: check manifest","args":{"span_id":"286","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277231000,"dur":3000},{"pid":1,"tid":0,"id":287,"name":"task: generate build config","args":{"span_id":"287","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277235000,"dur":6000},{"pid":1,"tid":0,"id":288,"name":"task: prepare lint jar","args":{"span_id":"288","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277242000,"dur":1000},{"pid":1,"tid":0,"id":289,"name":"task: generate res values","args":{"span_id":"289","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277244000,"dur":1000},{"pid":1,"tid":0,"id":290,"name":"task: unknown task type","args":{"span_id":"290","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277246000,"dur":100},{"pid":1,"tid":0,"id":291,"name":"task: merge resources","args":{"span_id":"291","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277248000,"dur":7000},{"pid":1,"tid":0,"id":292,"name":"task: platform attr extractor","args":{"span_id":"292","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277256000,"dur":24000},{"pid":1,"tid":0,"id":293,"name":"task: process manifest","args":{"span_id":"293","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277282000,"dur":18000},{"pid":1,"tid":0,"id":294,"name":"task: process android resources","args":{"span_id":"294","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277303000,"dur":75000},{"pid":1,"tid":0,"id":295,"name":"task: unknown task type","args":{"span_id":"295","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277382000,"dur":1000},{"pid":1,"tid":0,"id":296,"name":"task: unknown task type","args":{"span_id":"296","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277384000,"dur":1000},{"pid":1,"tid":0,"id":297,"name":"task: unknown task type","args":{"span_id":"297","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277386000,"dur":100},{"pid":1,"tid":0,"id":298,"name":"task: unknown task type","args":{"span_id":"298","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277387000,"dur":100},{"pid":1,"tid":0,"id":299,"name":"task: check manifest","args":{"span_id":"299","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277388000,"dur":4000},{"pid":1,"tid":0,"id":300,"name":"task: process manifest","args":{"span_id":"300","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277393000,"dur":23000},{"pid":1,"tid":0,"id":301,"name":"task: app pre build","args":{"span_id":"301","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277417000,"dur":203000},{"pid":1,"tid":0,"id":302,"name":"task: aidl compile","args":{"span_id":"302","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277622000,"dur":34000},{"pid":1,"tid":0,"id":303,"name":"task: aidl compile","args":{"span_id":"303","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277658000,"dur":17000},{"pid":1,"tid":0,"id":304,"name":"task: unknown task type","args":{"span_id":"304","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277677000,"dur":100},{"pid":1,"tid":0,"id":305,"name":"task: unknown task type","args":{"span_id":"305","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277678000,"dur":1000},{"pid":1,"tid":0,"id":306,"name":"task: renderscript compile","args":{"span_id":"306","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277682000,"dur":26000},{"pid":1,"tid":0,"id":307,"name":"task: check manifest","args":{"span_id":"307","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277709000,"dur":3000},{"pid":1,"tid":0,"id":308,"name":"task: generate build config","args":{"span_id":"308","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277713000,"dur":9000},{"pid":1,"tid":0,"id":309,"name":"task: prepare lint jar","args":{"span_id":"309","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035277723000,"dur":1000},{"pid":1,"tid":0,"id":310,"name":"task: generate res values","args":{"span_id":"310","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277725000,"dur":3000},{"pid":1,"tid":0,"id":311,"name":"task: unknown task type","args":{"span_id":"311","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277730000,"dur":100},{"pid":1,"tid":0,"id":312,"name":"task: renderscript compile","args":{"span_id":"312","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277732000,"dur":21000},{"pid":1,"tid":0,"id":313,"name":"task: generate res values","args":{"span_id":"313","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277753000,"dur":2000},{"pid":1,"tid":0,"id":314,"name":"task: unknown task type","args":{"span_id":"314","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277757000,"dur":100},{"pid":1,"tid":0,"id":315,"name":"task: merge resources","args":{"span_id":"315","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277759000,"dur":228000},{"pid":1,"tid":0,"id":316,"name":"task: merge resources","args":{"span_id":"316","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035277989000,"dur":1793000},{"pid":1,"tid":0,"id":317,"name":"task: compatible screens manifest","args":{"span_id":"317","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035279784000,"dur":5000},{"pid":1,"tid":0,"id":318,"name":"task: merge manifests","args":{"span_id":"318","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035279791000,"dur":103000},{"pid":1,"tid":0,"id":319,"name":"task: splits discovery","args":{"span_id":"319","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035279895000,"dur":3000},{"pid":1,"tid":0,"id":321,"name":"task: generate build config","args":{"span_id":"321","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035279903000,"dur":3000},{"pid":1,"tid":0,"id":322,"name":"task: prepare lint jar","args":{"span_id":"322","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548035279907000,"dur":1000},{"pid":1,"tid":0,"id":320,"name":"task: platform attr extractor","args":{"span_id":"320","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 109\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035279899000,"dur":15000},{"pid":1,"tid":0,"id":323,"name":"task: process android resources","args":{"span_id":"323","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035279917000,"dur":1058000},{"pid":1,"tid":0,"id":324,"name":"task: process android resources","args":{"span_id":"324","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 9\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035280978000,"dur":1245000},{"pid":1,"tid":0,"id":325,"name":"task: unknown task type","args":{"span_id":"325","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035282224000,"dur":100},{"pid":1,"tid":0,"id":326,"name":"task: unknown task type","args":{"span_id":"326","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548035282225000,"dur":100},{"pid":1,"tid":1,"id":327,"name":"base plugin build finished","args":{"span_id":"327","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035282232000,"dur":100},{"pid":1,"tid":1,"id":328,"name":"base plugin build finished","args":{"span_id":"328","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548035282232000,"dur":100},{"pid":1,"tid":1,"id":329,"name":"base plugin build finished","args":{"span_id":"329","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548035282232000,"dur":100}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-21-09-48-02-239.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-21-09-48-02-239.rawproto deleted file mode 100644 index db80dc1c5b65a93090031d3f5cea1f0e3d51eab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12797 zcmbu_dwdqvnFsLqoHq%FfG}L%yhpkl-nwm_rAsymNP^q7q229v!`jlayV}-n2@s(- zb)j3k?kz+LQEma1gb12)ja($$G#DV^ra=?}a*4Jof|sCxL6M+>>@&~voS8G&d_GM1 zPtW(9XU@!T&dI#P^oG;943tef0&V%lb=(NH))+z!W=_{rl0OlKL*ne3c>U~oaXHF+o9#i)4K$5LI7 z>fZIJZe3Gm*9C*b!sivfcK40Y@4x+8$F#vW6spR1Pre|WmP^kR>*kpv^`$|5GJA{~ zof09kwPe!IN8ejodXLw3Uy-i<08138)`b_p>ea{<);Y#0+w)rFIUF+;D)zrV*6H{VDx84(;fAYU7w1fc=A93Xb1qDKqgcNct-_9} zd{5Rc+&jT3J9RvAh38C#jpfDtd*@rb5fXgTHc`mqf477^+ZL zAHBl1YpgIrFL?m(s6thCZb`XtDmPv()-&Kze(q7MtH+=bdU+L>s5m^ORX823>qlaV zL09`1V}xE~O4Oa-4JF!UZy2d(!Ysae^(E$4^DOGORUH*hZCk@gJsV0ym_>~#QPJ7} zB^ut|JW|hzR$_@MQCq&S4N8kEK#63PVO#s>Zcx}5?7sRk*>ey3hP1@ zDwju}LsO_ieH~Z0@hb1ka?wvo-GM)uQb|`9ilW#k;kCx~^mn}9FsUAH+_WZCx|62o zQG3G8Fzx-6)tY8n6G}PV^rll-WrW)^Xzvc~=c!$|JxqI+>fvPSk4<}fHvr*HCQJ1M z_{6|T3$6qBlpyB5YeBC7g!`Tay#X$oQl~6%04|wQr!D9cK!$t9g1!LvpT^S@?)w(> z1DHx6-3u1<2bg9?oV6eUFr6Uger!Qj0K)CGAPG=GBhuXt3pBtig1Gyk1=j;qnuDMB zA)zuMj!ruB0d9A5)e~v}w9hq%@Y;J&8h_?|LC-gZFeXXx=Kxg%F&ATE$hHAvVi;%x z#>9}a0b^qLq74`m!wmsQiizPb02Y{8VN48PvH@da__7Tc6T??*z?c|r41i-|Z~X(s28@rPAOPWFd<=yEPnl8}AH#4PaFsFK90141@HYUPsZ=JdGKQ}K>?9B_ z#)ptlgCUN!1PP3T+y55YcTszHZ0|*BeBHT4zi0|!Olbr~0Q(4dl`)L40b^qLMgSZW z!#4r;n^G7P!{6C}F){po0D@K-!?yrh&2%v)hJOG!V2*(?F?`zwjEUhNZNQiqiUZ(P z#xN4#ARQx(RvE)T0UR;2!d1p_E5K1RD~t&tp>BaV__AkW9NhjLXy*aFvAwsKMnZiT z+TW%^*I~OuDSgiwr9UzU!1&S$zHbArGKSGMV0;Y!90141@Gk)8%`q@OhJOt}xELS9 zZ2+A#g5zVj9pHi~h4C@`zy^$u;fFS0d<;Lb0pnx1BLI$%;l}_U)4?Uh$MA0epPK1n zd<;JUxM-$}@gXGCD2U@j0$NSnJ_g!(Ksv_Mhte49l;|mE_-{DIltC~KpqzkL8N+xR zFeZjl8}M%#!<{x@Obiojz?c{&29QRpjNzvM)6A?eCWfB@OgDfrG5p*HjEUhFHegH) zzqA22Lx#Ho;LVWXZh!~PMZ}mG?g5x#0AoT(s1k^SFFXBh;`V=s_L(%`HjJsSmqtQO zg7y>Co`>!ID5YOHlXcbm7+;M3mUSce4;yfmG5k6JK~Ibf_X1R#QWzh@Z*0K$82-}+ zjE~{I0C<%#{1?CiItD*6GW<6{jX5~R$M8QkV0;Y!YXio|@P7gDDnm%BG6C`^9fX$| z%M?!*nR#J=EbyCqvVP1=3=>32sL7DX!vwTXVtbalUjXokG>odhmxxxs70y(lSD0G3 z))djSFkxIw({19wm@1I!OhJr{>47j|XiN`=31efLVG{?(G!y9wb1YnWOtZp-;W5p& zi62Fn<{+&!1u;OT$}r&yWSVOeXUH@UX*CrT^hm<=5YifREKCt8OHK9CT1-LOzv zcnCdJCTL+j;=u+QL64zX6k?Td<_o>WOaSxkPE?Jw)ez>(v;b)v5&wi^s&Ql#Bx^0-KumLWZBrh)k)WvTgIT8$)>FT-*Vct{+VX_B(46V3{upEt!Y z#!R9okoFqF7@1av3I8lItqKz^Q>N862^V8zT7&e0ITpsq^rTI^Oqtdqy=X>Zj7;@5 zag0pskoK8T7$ejAFky^L8*Jj8mT4o>ek#Zhq)eNTULxXU%JdY{Aww7=QkGibrL~8o zC#J>lv?8r=S*|lG$++o;cOB56OuT*I`RkD&1t4NshWk; zBy?>D{%uc#w?{l6skWmmCGp-Lv1qkZI6H)1MiO%m^ajE=NLuZ(Nw}>R?M7N|Mjf>1 zS(}9Wl10xUtuUhwS=17y!xrtaDa}1%(ep^FOu?fT?X^j`$1Q>{9N?5!n^A2Ry=aqg zU$$r;(i$`Bghl(2o;37(i{RBa9E(Y~f3WBP(mEO?-B&F-h_t~Je8Z=t+JQ-OUcKPH z=D3pTB@`ayJx0hP{JE^vVc{GSy1|sgjPXT?R!72w88gBAa(fhJ%mgp71LBOC;N>*X zW^*jenCX=;Va80qw@FgQOn*RXGzBqZrdPv+88f|RlW;L(rq_|Sn1Yxw)3GpN#!PR7 z2{UFoZWCwBbOLEB9ZOKgOm8AJnQ36gNJ(`FlYE-U+lgcm%UdWsNTT3x?WB4eWjl@W zer?Ml{27;2O~Tpc?+W>_efhh>J17Uu6eb$!uVBFA)I0?CFMr=@7rK+0yTSeyH~ZH~ zp+BSMG{^W)$4pKAjH}+}l2N+JyU; zPZy9LHU;6{_UU7raR2h@6QoCI6yDoDeTp>S5Zv27T|}xf$AWv?r%N_T7w&DJK0{hy z3c~*7(`BR@BHX`xDwAF)3(c|M-eyXw4oq?;kpuUsFH@wKJ`eKtuejO2?w3xv)U~D@ z>|b$O5L!*ODenD^^69roOUx+DnAhGkn>b^p=}1e>D9o6t0%VMoOx3Op^2Ji%GIPgtDFndAn4+i1)9DQMQwK&uekBf1MW2DSub^ z7VKaCuJDNTWIv7Zp1=GZ37V%<^S5FD;^u5MU+TH|onoq++p93GC{~=QCOSgLysuZw z#Xwah^#bZ};yUO74{lfXsFwN?eyEu06wm{<#&C~pwLt2R@I%DZ80Y}UzOqA&)byPp zd_HPA#NabZ_+HhUMYeiWYWj?@s}2jLZo{txQ@3CR0f!L5d1R|aQdi?ATd6F+!!WzU zV^Y&MeyO;&)PSu{(H^9AH;iEH!-{2Up*| z4xC1|S|W8bRq*11jRGpTc7>%!dzI6@oj4E(CX2FZBo1VSs;#&|SMh>RI@G4BoYL7NHBV5f(Ug z=P1%`B6Qb2Ej4{Qz= zY_(PDI{Zc_mF{&7ixu|p)`qo!2dZ6CAH*+TQm+R0gw-Qk z?UwvmN>_Z#}a>bp^dGuG$N!@@Sl|YB|;OBlzs2NVrd!5i}Psr3FI@hnLSjf$7lfE>LLT-7wzVyW5~Wq7wz?sU_(B`4TH9g* z0^t#gghwC<;b{sMLU@IT7^Ol0(GUa!BogbVG(6OxpF%=Fd+wZ>d*`O)^T}oVA35JM zzd3Wxnc3YLdU%rK69aT)aGZbCX#beIq7oD06BFZ8?(Uu#pBA6+NaE1Iketv{q2P0& z5ix6O+?wmUXhckKVs_3mk7o}Fq}=by2~u}Qq`S2*Z6Uk#*iMP@ zf%w$KoRO5sDToz);3j(PxLey-@FrnZ^$*w<6|&*KYCp7h0w&uLYj-Y2K9*P0;Z9{oF_-W7z#aW*g#=LZUZWm zoh_cEmHvB42KxXM^o}c(N`>lgwolR;F9?N!9aq>W74i!|x-o@KVJqyA3ZiJelS>f6>E%te)5V(wz+>HI%P90)&(5A71w%bYLd zw3Nu5UsOP}=J(fRu#>P;9kkXZDN$RnW)9IR=ao8^XtqmKFLf@_YL}?^(7D8WQ^huG zD6N|hr&ddu1O20gDg9~{>N>tBUUPQE_?OPn@Vx3*0 zcDHkh^=%{$JD1pKm#AoQE>V&%)495!m}sTt+Z^X&Mfeh{!k1WMmuTGXd?6=ih+I_H zuUQVKR&j;nTpXVxB<612zlUfI-|TfPadDxPShoKo*r~0@P+~~OzoHZ_krE#)ISUQG zw>E>-!$;BoNDy}0b$>++XDg*dN!5>! zdv=M+i_W9C&_?1+T?RXSy#{Z;wGJ+md!%sDWuoQpn>vzx3KH=h-)4uym-s|VG|&4N zMA2|$I!2Mu@hEm(77Hn^4cXnK2kCdqRd{N$wNgR|Cl{43ZME>qV zjH08L29rro>K3;j{_eUvjSO>T62t0Yd6$ek5r1dhBduN zOQ{yc)?Vf+(Rvrl9u4-5X!q!yr9GB*)?(OhX>W`IK#X8wX%_%*BXH?w6>yUUh<;81 zT>(_esn08*8-N1{-1-FtXaEjL@VNrI12~KzM*l(qJpg=+z@>kwfSwlc=*mHd z!sfT(2N6I`UGk3 zMLV%_Y^Hr~-3UnZ-p#C_g)g8FbfjBaeQYgS2SY~+tC#wRq#FRyk+)mGtye2R2QW*Hs8PT`3lRON z0tNw?Ek}H$fIBQe^kWJb44?o))iE?;p z3fPz80Lty6Bh$20)+B{^{dfz<(sTe95xB5^0^FqnUOxf8X8}<^0lp95D>(Y5Hro$bG!cIBCp{JOV%k4lqs{Vedt6Vb^fm?;>#02y;(* zFRQxBXZ6BK6#?*L4fBcM}F@Q4ba zQ%&$FfP6VQoHQl~0+=BIbgBum0L(8Wf0zN6s5q|)%6+x=b>&HiUX$a~x55ZVoCt-g9>=)1; z$?f8#c@gXv(H_g~;-tycM#+7=$T(@tjrR!x|Aoqcp-?#*6A?ax;CItwJ7Y@_{P<6I+kmWAap$|CyB`cX93leV6ex zDfR!t%8^F_htEymHvLI#r!_xvoBk^d-{nBh7~e+UM{@~#7X=1fZvr39BkUYHbO8t0 zPxc6WbTVO=(ZN_EIw&Fd=oG^6Ig7^tnYFLcM_(oEDk?;q3d$nm=v2a{@z*T>1~+(M z859p6okkcwR*5>vISBj>b@I{agyB06kQNikX+Z3-6)`AXJEut-jI64o?i4F%WiQBEF_t8Sa_VK%IkxHvt zd{_DCe8`mLpk_)qEFkP4I&?FakzxhmqYEJs=ztr`XxqN3!y>})p@8Qae#3~aG;>`< zSRE?#gDJ3_wkZ}9hVKMQL)fNRLKt4*x7Sj|urqK9t7CLE$fbn6%5Saxx0>a&#qc^| zrRZR!8aJOUhGm4|)p>g@wVbdwQNd~{C5AX!LRc9(G+E_TJbZKoVR)-8QfcJ+L3J4` z30ui8oRxY%tvakCY&AMqJ411ZqpJzSD{KE&YoSS2PsPzSgw^vKX@85+`dBZU$6CT_ z`GvE8v5{^(MQk2#5cU~3?qnio) z93AR02xFZd%fm;vz-h>D1l!C(;BPqe`_XNL)u02>t9u6`jE`1hs!WeTw-a_0X|#T% z4fWBjgnfWiGvga>%^pW9;3P$dQ)74*jrg7y9&q2{qdTBb{GyMi8N2BoOQILuN!UB+ z;L;@0|PI&Bx~R>3?v(bMCvD z-@9jK-mv)SvUG(Wmzh*Leq!m_WAoDGW$AQT)#=6QvYN8;^U`A~Mm1(H&Soylo>@>a zrY!h>eR+C9Q`4q<6KAiOetv9ftnnNjAC{;rqfXB$RU>mNs_5SpV~^I#Ri!aMRvxQS z^^P8Lp`(wvQZ*?>jT!CyKT8iCeCdb=E`4rpx~!tC zI^DR`(aKyy4cLAn+Y1ly`V+X>w$7LE(gnr4uJ*F3(Pzl6CXE z?8xB-MN}G>X}oCS71```*YR#tSDofPxcqRiLXEy-W%n6w$7{Eyy+u<>OGXYGxI(VC zSAAj$={-OPNb(ivs3?y|v!Tk3DC-{Y?UZM-#0&laacjpnPU^^wch@j;I zG$j0;792$|i=oKhWx)`Fg$yV8?^-aF;0cD~{M{C~1Zx=Oi$apx;~^IRTRT zSc>BnhAPA%_0LoN2-gcyFACB~>Mu}z_F=?y2I@y~N@eaSZxz=S#}{Y#BEf0~iBF(B z0*Ox`P0((ZLVN-h1Z&Jvh)1{^bi(GkQsK7la=>&!K9%mk_k)*C>40@Vba3=SVN zff|C1W>+|70<{q+j!$4LK^J!va(n_`BG|={%kc?(nP8u}2I2!G^(cyCCBq4bL+W3l z`hKqGqdtVw_^NxV*KZcWDa&D~vjNjk;Is%NCV|rlj+mtolfc&^P&^FMj!EDQf)>+(m;}B_(8>_=5tG2T2(C7OQzr0j8xWJgnGr}#0^cEM4#X$$!w4ikfgce(V>)ok1b!TWoHBv4 z37#_@h)>|02o%RBa4x~~rUUT_{KN*tC-Bne5hzdNHR_?`FKU{CXLNxeSvCI?NRilR!fR4u6&jWC_-r zr4W6K~5PUsWTKuJHs)EL+Zbv`W~)p)Q1IW zBy}Uz4|4r@)Q59QzjQD27Jnpj3PUoF;a3Dp8051|;Bp)Al~Le|2o!&16u6S$CbJac z6Zo|ah)>|E2ogLb1%5+tn^_9+3H&w!Ib{OBBe>oCfjDIXzbClEEQR<4{t$u02T18A zMRF&%xSXHJj6jyM$T<^f4&)JY85}f7QeQ@iEMzD}BB+<>7DezV0}sj(K_Z^MTDh&t zdzMAcnr4~_T4pYT(F60 z(t4Vu7%>Vg3_x1)07*Vrivnopjv;^&4)I3iE>_-l7RfiCX$feD*#Pntx@jQcKnmS# zlN?E*TR`3BTF6)ER?tpE$XDo(pj}KdSA}i^?KV3^zCyR#B>4*60qQYb$XDpjfrNa8 z{$!KnEA(ejFE5zOXH@7fp!b<%$_o7zbkJ-A`GQLH;vlVeScW4lfx7~b7S1=tS^Z79 zcPsA*w@8cyO!t7AKE}9}sVa0YsF_KQsnC6(7Sn}eDs=xqLX1Lx2eq0m#3=NDO%kKf zgP@sa8;DWpAyAuH5MM-vmf9pAl0pxIW|=O;DD=oc!jE&IM{P=Qj6#or=JJAaOojdd znrE(s7(pfa?jWsx&V;|#2s|FZd~V@s>jhbr=zj)q6T`^}{%D3gH`jZBpUTWF@^$p| z-B9xb;YrM@Yq0}5j~;2&HU;jdUWKN@{`Kz;c_uOI+AiqKds!S zl-JMV(8Hs!!7k^Ra!M~#?z774m=QeVDlMePN8wV>LAJ6u^Z-f3(=RCZdF6GpDF4l& zM0kYc=@&t}n1=f+EqV#m&lL0DvS>Nz2vgi&Wzh;yb2IiA^H*E+GN{E+yG5^nTA8%J z#-e|N<}fLLtwsL!5{9F@LK?Z-5q=u1+{SP3bh=9=u9RK{Y3HT{1V5KO-LBl#%Ijo_ zamIKM;^{RuDb84EEog)3LdHTJHaVQJ&^plDrVAMht+z?}$XKWo)WuzrvCsz44kpQ1 zXd|fG5Hc2e8?=)t&KV1Jfp(iNWGu7^)Wakh3vCAV8bZcGTWnICvCvk~9vb9%3H?`nkHDd)E>xYvs9rGPw!LiUgd3N!QCA<6KuatxVuAo z546p6(cK-=`!=cI?hfe#&~~#6y1PR<0NP;|q`Nz$gEl3C2^P{J&~DR36D*`Yo0Ly? zcSwgpJ!Ts;!9w~F)N6?D?vOqL?J?J)2^P}FpuL9Z?hdKnCfwa29Rcm*uAE?kh1BE( zp&T#^(%mhT(tDBQ7N!w&r-m}a3DTFQ;2T!FP9|83<2E~9zgdnxrQ&=fJl$%OWGqMQ zYS0nWg^Yz}+9VkZwSk)2qED&tTC)ZcGM27uY>IQnLbE|FWw3@}CdpX37JwF*E@TW! z>1HJPF~9RkBq?$OM4EyL7O#^Dwh*#}mkS;^#d(6IbdPd(hf`r34X|)3EOG+5%WPq) zkrA58Yx(lyX?}%sXR+hG_!5$>^b^q+vl|`n5SJB|!)dp~@!FQ-)j=7HEKqfmGwIsO zib<2QmE|>=?4ZC z;SQ;~JtzhW0VJK!=Tgt~(tG;$zxVdOSLGG{Ce(kXRAEzF1ZpSywL?(5qg^`%Y74yV zXDF#{@@CY=sBqiYQf-e)YkO2`+mzmR!T940-dC$|p=#Jwd6UzyX>GpVetRr>WvBFZy?V!b_bGj#{GMCOosbS) z**U#EG+kHP|IXe6%FFNb+MvMlqgVI1Nij7w97i zRj4-=>TBz~3d<6%PclI&)y!Gc?5Z0KY1WM|(9H=whYi6BOIi}H zus2v?XLVJ9KAq4UT1)NDw&!nupCaQ>nzj6QAl1>Qyd!G!OkI#^-uh$j+# zl9Nn@eQU-I5zgEt30IifszPJJ70#XG=TN`&@G#*t4ciI3`>qQ==}YueBhGlAHASlV z;LhuvBhz*i>e_ptK7S0C>G*u^DVDLy>%dir?8C35`xWMBVTVVLb78nsIP_aAVTWB0(p22~t zzRtkihZ0R;bD%)|n2!qe9PdE5;N7@#EYG0g*oixxn#t>m^tyW!DX`uYXgXDO7komk zO{_qP{`S-=LF7zHs^x0sA`ot?tde+Qg|8AH=^Sm*|deMCs z{1^s_E=uwr0)rV0L9DAAHmwnr>?G;a)ZWfbG3{NH)tY2lBT6}` zdiZwlqa&8;wvV@`L3<^&huwCjJ*wI{>3X7RZ|n#lyvamWdw^#Mgxg@jB>-*|8DzEr5kIAmrX=+A~y& zeq|e$sR+BNrn!sC(W`c2^W|{VNORQW>b=yO0!IzEMpV9&rw>!RgrmmqZM7zu)`%)} zy6YBGrG31;2-*kk;kDh)v`1ABr&tf7_K*uJRhpybY8zms`fyDggtt{t>mOVmqHSKX-cSW@_jBcrW}S4){?aOBk*LIBhPC`7!(wpoPHoP8xs2 zuK=EVAJ61t7r<)-As6%GQooLar2H6u12E5w!2B3`$AR->_$|PEGXnEt_#MCk z1DGGf^)_IB48M;9=f`jZz(P|B^JBOXU=e}zP8$Et{{XPrjKKVGL`3z3oKDa~EW@0* z{g2Sj11LW}X>Nk{?NrG71d%0t(sXy=?_=7>#|4};{&DapfJ5fWx0&_~1wW2Z_fG_z zH2x{^XMLVJw}X==Y)+b+_3#fcPw%AR)`%)~ZqXIg?wvG#Z>u%Qv_@55r;lDiy(dce zR^yi`2iUO}%O}CN8g7rOTb+J-pK0Hh3c%lLZUZ<(5OVihaJvl$EV#plgBIKgaM+YO zWWilF9Jb)@IHb5AS#S@)aZ~DJ3+}a{*@FAxAl#!C`~~0>Q|hz@{cSj9!ToVac8^%_ zSAZ5OCEVi{{0-oYxyDH!BB~$6v4=pz3gf39Q4c^n4@k!LcJvwdpff<%?!)*(F2=;0 z;h{JPiizQ2fI2e*V`BKb4Hy%{KWxC582%Xt;bKe-{{omr*ANsF!@mJ$8^D+lx+?eu zcz~W`riD4N!0(ZkU{EaZmxCpk6bt-z=ZkPLDi-)HYJh%?u9HStu{`R@5|S{5#qyXZ z%gx*{EtH5F0I57ea4n{S?NRl(0N@dqAhf5rhI-IIBQ8g{!~?B{3ulgzVg}E|~ zwMn=bEYmoo@n#ez%QQYn7%fwkO`I*$6G&B5Fp0utdJ^d=BHoHj)kqV}G%#MIsDd92 z`{<+e;J=P(F+Ak~54i%N1I0K|I1_|kY>MHA#Lo_`p0v%4 zG~v7=^r!>&fs5Y(w3;3y{A6T$)h6DiOf!&1n}V1x)65`YzD%_?@zKjvhct!?@@FK| zETk%PEzFl`c93wJGR+AR=F9Y2kT74Sxi+QJ5zI6X>1moqC)%b=^O2?zalT9okfxi- zW4=gH^@^9)2$C;hS_}(4;34f1I#G9l29hSXrLg)uTMM`|?J!fnd5!Y2LLV42-# zm@m^iHgUd8n~`RlQJ61N6Ve<*m@m`2LBf2Q-U|}u%e2L&G}@+2TagyiwNh!DGHpXz zMIo)lM(1CaRZ> zX)zq}fQNKKhll%zNVi+U= zct{FDSITOLbOuY^Y>MG&n@;p-kZ_waJ!X@nzg?IfM`|$z@w8Z*7@0=e#9w-uMj@S}QOOh|(`cl@hxsca#>g}#NceXtQw7ox8l`BP zGF2jtB;qecOks>XZpB*9k^E+y#W zl%~5?+PRbjVT@q+UxM zUKH3vKnW3_M3$N;^>KVXE;b{KvuM>LQ#~#9bbNa))~(e=;GI+NJ|;@;H@m}g zQqy~1Z9VM&NZmjc{^8HTwJSUi74U7P7~O?8hr8_#FTlUjQisldg#x?7i&F2W4xOL_ z{C*A<0uSoHQlFs?-fdEcz+Fs{n%=o;Yel>y^+0@;2>zwmR0!O~RH?^O2k$Ou$pr4= zWvS_fD7;OYLm;eIq@GL_+WD8TZZk_wlX@C;Xrya+_nGeq9fDcIipf&br55{Y>ao2D69GBaV>QU~eZXkf|IN=}!~0U<1#Rx{fa4!X?5bY0%*&JMh_3Z>0{G_#Ld>m#OAReSkW6+tWTH zcyGNX^&#ru_!R<6X0Fs{se^Z$G>1T3^I%2bnAY)h1A2SISkGG4;&e4rPL#-SwS-_pk89EDCt+4+ao`(PoMJqoZ`~*K4k@YWu--Z wi%N3}3v&9F7UuRVD=I22FUl|OQQo~r-@ZM1^vEeM?^jTkS5#11nwQ_>e<$cnZ2$lO diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-01-49-664.json b/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-01-49-664.json deleted file mode 100644 index c247dd1..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-01-49-664.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1548061270119000,"args":{"JVM stats":"heap_memory_usage: 45942768\nnon_heap_memory_usage: 48937872\nloaded_class_count: 7353\nthread_count: 21\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 6\n gc_time: 70\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 49\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277630000,"args":{"JVM stats":"heap_memory_usage: 82724600\nnon_heap_memory_usage: 84236792\nloaded_class_count: 11193\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 4\n gc_time: 96\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 85\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277749000,"args":{"JVM stats":"heap_memory_usage: 84718576\nnon_heap_memory_usage: 84773480\nloaded_class_count: 11320\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277774000,"args":{"JVM stats":"heap_memory_usage: 85381400\nnon_heap_memory_usage: 84818984\nloaded_class_count: 11326\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277776000,"args":{"JVM stats":"heap_memory_usage: 85381400\nnon_heap_memory_usage: 84823128\nloaded_class_count: 11326\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277788000,"args":{"JVM stats":"heap_memory_usage: 85456624\nnon_heap_memory_usage: 84848152\nloaded_class_count: 11326\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277797000,"args":{"JVM stats":"heap_memory_usage: 85456624\nnon_heap_memory_usage: 84890488\nloaded_class_count: 11326\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277799000,"args":{"JVM stats":"heap_memory_usage: 85456624\nnon_heap_memory_usage: 84892888\nloaded_class_count: 11326\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277888000,"args":{"JVM stats":"heap_memory_usage: 86595512\nnon_heap_memory_usage: 84990048\nloaded_class_count: 11326\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277920000,"args":{"JVM stats":"heap_memory_usage: 86599624\nnon_heap_memory_usage: 85099760\nloaded_class_count: 11332\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277928000,"args":{"JVM stats":"heap_memory_usage: 86599624\nnon_heap_memory_usage: 84697520\nloaded_class_count: 11332\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277931000,"args":{"JVM stats":"heap_memory_usage: 86599624\nnon_heap_memory_usage: 84697520\nloaded_class_count: 11332\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061277940000,"args":{"JVM stats":"heap_memory_usage: 86674824\nnon_heap_memory_usage: 84387344\nloaded_class_count: 11332\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278736000,"args":{"JVM stats":"heap_memory_usage: 118216352\nnon_heap_memory_usage: 85716136\nloaded_class_count: 11424\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278737000,"args":{"JVM stats":"heap_memory_usage: 118216352\nnon_heap_memory_usage: 85717096\nloaded_class_count: 11424\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278739000,"args":{"JVM stats":"heap_memory_usage: 118216352\nnon_heap_memory_usage: 85718360\nloaded_class_count: 11424\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278740000,"args":{"JVM stats":"heap_memory_usage: 118216352\nnon_heap_memory_usage: 85718360\nloaded_class_count: 11424\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278748000,"args":{"JVM stats":"heap_memory_usage: 118216352\nnon_heap_memory_usage: 85734032\nloaded_class_count: 11426\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278767000,"args":{"JVM stats":"heap_memory_usage: 118954304\nnon_heap_memory_usage: 85763184\nloaded_class_count: 11428\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278770000,"args":{"JVM stats":"heap_memory_usage: 118954304\nnon_heap_memory_usage: 85768832\nloaded_class_count: 11428\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278771000,"args":{"JVM stats":"heap_memory_usage: 118954304\nnon_heap_memory_usage: 85769968\nloaded_class_count: 11428\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278776000,"args":{"JVM stats":"heap_memory_usage: 118954304\nnon_heap_memory_usage: 85774968\nloaded_class_count: 11428\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278790000,"args":{"JVM stats":"heap_memory_usage: 119617000\nnon_heap_memory_usage: 85789584\nloaded_class_count: 11428\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278900000,"args":{"JVM stats":"heap_memory_usage: 122976984\nnon_heap_memory_usage: 86039456\nloaded_class_count: 11431\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278904000,"args":{"JVM stats":"heap_memory_usage: 122976984\nnon_heap_memory_usage: 86043104\nloaded_class_count: 11431\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061278917000,"args":{"JVM stats":"heap_memory_usage: 123715024\nnon_heap_memory_usage: 86105416\nloaded_class_count: 11437\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061279951000,"args":{"JVM stats":"heap_memory_usage: 51570352\nnon_heap_memory_usage: 87549592\nloaded_class_count: 11648\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 41\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 345\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061279961000,"args":{"JVM stats":"heap_memory_usage: 54686016\nnon_heap_memory_usage: 87560936\nloaded_class_count: 11649\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061279967000,"args":{"JVM stats":"heap_memory_usage: 54686016\nnon_heap_memory_usage: 87565440\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061279995000,"args":{"JVM stats":"heap_memory_usage: 56569344\nnon_heap_memory_usage: 87590568\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061279999000,"args":{"JVM stats":"heap_memory_usage: 56924192\nnon_heap_memory_usage: 87595408\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280000000,"args":{"JVM stats":"heap_memory_usage: 56924192\nnon_heap_memory_usage: 87595408\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280060000,"args":{"JVM stats":"heap_memory_usage: 59146392\nnon_heap_memory_usage: 87673960\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280088000,"args":{"JVM stats":"heap_memory_usage: 59146392\nnon_heap_memory_usage: 87677576\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280089000,"args":{"JVM stats":"heap_memory_usage: 59146392\nnon_heap_memory_usage: 87677576\nloaded_class_count: 11650\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280142000,"args":{"JVM stats":"heap_memory_usage: 61947432\nnon_heap_memory_usage: 87743232\nloaded_class_count: 11651\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280295000,"args":{"JVM stats":"heap_memory_usage: 71213544\nnon_heap_memory_usage: 87861704\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280299000,"args":{"JVM stats":"heap_memory_usage: 71213544\nnon_heap_memory_usage: 87870832\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280300000,"args":{"JVM stats":"heap_memory_usage: 71213544\nnon_heap_memory_usage: 87870832\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280313000,"args":{"JVM stats":"heap_memory_usage: 71568392\nnon_heap_memory_usage: 87913848\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280592000,"args":{"JVM stats":"heap_memory_usage: 89277104\nnon_heap_memory_usage: 88245472\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280597000,"args":{"JVM stats":"heap_memory_usage: 89277104\nnon_heap_memory_usage: 88250752\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280603000,"args":{"JVM stats":"heap_memory_usage: 89277104\nnon_heap_memory_usage: 88253792\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061280606000,"args":{"JVM stats":"heap_memory_usage: 89277104\nnon_heap_memory_usage: 88259872\nloaded_class_count: 11652\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061281018000,"args":{"JVM stats":"heap_memory_usage: 102007880\nnon_heap_memory_usage: 89046488\nloaded_class_count: 11726\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061282684000,"args":{"JVM stats":"heap_memory_usage: 178296912\nnon_heap_memory_usage: 93336504\nloaded_class_count: 11909\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284337000,"args":{"JVM stats":"heap_memory_usage: 76487968\nnon_heap_memory_usage: 94598224\nloaded_class_count: 12024\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 26\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284365000,"args":{"JVM stats":"heap_memory_usage: 79043272\nnon_heap_memory_usage: 94727592\nloaded_class_count: 12026\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284379000,"args":{"JVM stats":"heap_memory_usage: 80061832\nnon_heap_memory_usage: 94750584\nloaded_class_count: 12027\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284400000,"args":{"JVM stats":"heap_memory_usage: 80768712\nnon_heap_memory_usage: 94771856\nloaded_class_count: 12027\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284417000,"args":{"JVM stats":"heap_memory_usage: 82746824\nnon_heap_memory_usage: 94793312\nloaded_class_count: 12027\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284421000,"args":{"JVM stats":"heap_memory_usage: 82746824\nnon_heap_memory_usage: 94802312\nloaded_class_count: 12027\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284426000,"args":{"JVM stats":"heap_memory_usage: 82746824\nnon_heap_memory_usage: 94825912\nloaded_class_count: 12028\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284427000,"args":{"JVM stats":"heap_memory_usage: 82746824\nnon_heap_memory_usage: 94827496\nloaded_class_count: 12028\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284431000,"args":{"JVM stats":"heap_memory_usage: 82746824\nnon_heap_memory_usage: 94829656\nloaded_class_count: 12028\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284434000,"args":{"JVM stats":"heap_memory_usage: 83053592\nnon_heap_memory_usage: 94856408\nloaded_class_count: 12028\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284438000,"args":{"JVM stats":"heap_memory_usage: 83053592\nnon_heap_memory_usage: 94859352\nloaded_class_count: 12028\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284439000,"args":{"JVM stats":"heap_memory_usage: 83053592\nnon_heap_memory_usage: 94861144\nloaded_class_count: 12028\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284463000,"args":{"JVM stats":"heap_memory_usage: 84131520\nnon_heap_memory_usage: 94853496\nloaded_class_count: 12029\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284576000,"args":{"JVM stats":"heap_memory_usage: 86954520\nnon_heap_memory_usage: 94779424\nloaded_class_count: 12032\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284580000,"args":{"JVM stats":"heap_memory_usage: 86954520\nnon_heap_memory_usage: 94779424\nloaded_class_count: 12032\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061284597000,"args":{"JVM stats":"heap_memory_usage: 86954520\nnon_heap_memory_usage: 94802336\nloaded_class_count: 12034\nthread_count: 31\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061309560000,"args":{"JVM stats":"heap_memory_usage: 203778920\nnon_heap_memory_usage: 104526080\nloaded_class_count: 13603\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061309572000,"args":{"JVM stats":"heap_memory_usage: 204131680\nnon_heap_memory_usage: 104473592\nloaded_class_count: 13607\nthread_count: 37\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548061309670000,"args":{"JVM stats":"heap_memory_usage: 206794768\nnon_heap_memory_usage: 104446128\nloaded_class_count: 13687\nthread_count: 32\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":1,"tid":1,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061270174000,"dur":809000},{"pid":1,"tid":1,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061270984000,"dur":523000},{"pid":1,"tid":1,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061271514000,"dur":154000},{"pid":1,"tid":1,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061271512000,"dur":157000},{"pid":1,"tid":1,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061274480000,"dur":140000},{"pid":1,"tid":1,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061274621000,"dur":35000},{"pid":1,"tid":1,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274746000,"dur":38000},{"pid":1,"tid":1,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274785000,"dur":6000},{"pid":1,"tid":1,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274792000,"dur":14000},{"pid":1,"tid":1,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274806000,"dur":61000},{"pid":1,"tid":1,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274868000,"dur":13000},{"pid":1,"tid":1,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274881000,"dur":21000},{"pid":1,"tid":1,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274903000,"dur":95000},{"pid":1,"tid":1,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274998000,"dur":9000},{"pid":1,"tid":1,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275007000,"dur":22000},{"pid":1,"tid":1,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275031000,"dur":11000},{"pid":1,"tid":1,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275042000,"dur":1000},{"pid":1,"tid":1,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275044000,"dur":35000},{"pid":1,"tid":1,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275081000,"dur":205000},{"pid":1,"tid":1,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275287000,"dur":67000},{"pid":1,"tid":1,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061275355000,"dur":11000},{"pid":1,"tid":1,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061274659000,"dur":707000},{"pid":1,"tid":1,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061275366000,"dur":93000},{"pid":1,"tid":1,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061275459000,"dur":83000},{"pid":1,"tid":1,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061274476000,"dur":1192000},{"pid":1,"tid":1,"id":28,"name":"variant manager external native config values","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061275686000,"dur":100},{"pid":1,"tid":1,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061272046000,"dur":3640000},{"pid":1,"tid":1,"id":29,"name":"base plugin project configure","args":{"span_id":"29","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061275737000,"dur":40000},{"pid":1,"tid":1,"id":30,"name":"base plugin project base extension creation","args":{"span_id":"30","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061275777000,"dur":29000},{"pid":1,"tid":1,"id":32,"name":"task manager create tasks","args":{"span_id":"32","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061275806000,"dur":4000},{"pid":1,"tid":1,"id":31,"name":"base plugin project tasks creation","args":{"span_id":"31","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061275806000,"dur":4000},{"pid":1,"tid":1,"id":35,"name":"variant manager create variants","args":{"span_id":"35","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276140000,"dur":14000},{"pid":1,"tid":1,"id":36,"name":"variant manager create tests tasks","args":{"span_id":"36","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276154000,"dur":5000},{"pid":1,"tid":1,"id":38,"name":"lib task manager create generate res values task","args":{"span_id":"38","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276186000,"dur":4000},{"pid":1,"tid":1,"id":39,"name":"lib task manager create merge manifest task","args":{"span_id":"39","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276193000,"dur":57000},{"pid":1,"tid":1,"id":40,"name":"lib task manager create create renderscript task","args":{"span_id":"40","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276250000,"dur":1000},{"pid":1,"tid":1,"id":41,"name":"lib task manager create merge resources task","args":{"span_id":"41","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276252000,"dur":3000},{"pid":1,"tid":1,"id":42,"name":"lib task manager create merge assets task","args":{"span_id":"42","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276255000,"dur":1000},{"pid":1,"tid":1,"id":43,"name":"lib task manager create build config task","args":{"span_id":"43","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276257000,"dur":1000},{"pid":1,"tid":1,"id":44,"name":"lib task manager create process res task","args":{"span_id":"44","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276260000,"dur":13000},{"pid":1,"tid":1,"id":45,"name":"lib task manager create aidl task","args":{"span_id":"45","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276273000,"dur":1000},{"pid":1,"tid":1,"id":46,"name":"lib task manager create shader task","args":{"span_id":"46","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276274000,"dur":1000},{"pid":1,"tid":1,"id":47,"name":"lib task manager create compile task","args":{"span_id":"47","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276276000,"dur":6000},{"pid":1,"tid":1,"id":48,"name":"lib task manager create ndk task","args":{"span_id":"48","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276283000,"dur":1000},{"pid":1,"tid":1,"id":49,"name":"lib task manager create external native build task","args":{"span_id":"49","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276284000,"dur":100},{"pid":1,"tid":1,"id":50,"name":"lib task manager create packaging task","args":{"span_id":"50","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276286000,"dur":3000},{"pid":1,"tid":1,"id":51,"name":"lib task manager create merge proguard file task","args":{"span_id":"51","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276289000,"dur":8000},{"pid":1,"tid":1,"id":52,"name":"lib task manager create post compilation task","args":{"span_id":"52","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276328000,"dur":15000},{"pid":1,"tid":1,"id":53,"name":"lib task manager create lint task","args":{"span_id":"53","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276347000,"dur":100},{"pid":1,"tid":1,"id":37,"name":"variant manager create tasks for variant","args":{"span_id":"37","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276159000,"dur":188000},{"pid":1,"tid":1,"id":54,"name":"variant manager create tasks for variant","args":{"span_id":"54","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276347000,"dur":9000},{"pid":1,"tid":1,"id":56,"name":"lib task manager create generate res values task","args":{"span_id":"56","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276358000,"dur":100},{"pid":1,"tid":1,"id":57,"name":"lib task manager create merge manifest task","args":{"span_id":"57","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276358000,"dur":2000},{"pid":1,"tid":1,"id":58,"name":"lib task manager create create renderscript task","args":{"span_id":"58","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276360000,"dur":1000},{"pid":1,"tid":1,"id":59,"name":"lib task manager create merge resources task","args":{"span_id":"59","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276361000,"dur":4000},{"pid":1,"tid":1,"id":60,"name":"lib task manager create merge assets task","args":{"span_id":"60","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276365000,"dur":1000},{"pid":1,"tid":1,"id":61,"name":"lib task manager create build config task","args":{"span_id":"61","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276366000,"dur":100},{"pid":1,"tid":1,"id":62,"name":"lib task manager create process res task","args":{"span_id":"62","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276366000,"dur":9000},{"pid":1,"tid":1,"id":63,"name":"lib task manager create aidl task","args":{"span_id":"63","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276376000,"dur":100},{"pid":1,"tid":1,"id":64,"name":"lib task manager create shader task","args":{"span_id":"64","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276377000,"dur":1000},{"pid":1,"tid":1,"id":65,"name":"lib task manager create compile task","args":{"span_id":"65","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276378000,"dur":4000},{"pid":1,"tid":1,"id":66,"name":"lib task manager create ndk task","args":{"span_id":"66","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276383000,"dur":1000},{"pid":1,"tid":1,"id":67,"name":"lib task manager create external native build task","args":{"span_id":"67","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276384000,"dur":100},{"pid":1,"tid":1,"id":68,"name":"lib task manager create packaging task","args":{"span_id":"68","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276386000,"dur":1000},{"pid":1,"tid":1,"id":69,"name":"lib task manager create merge proguard file task","args":{"span_id":"69","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276387000,"dur":100},{"pid":1,"tid":1,"id":70,"name":"lib task manager create post compilation task","args":{"span_id":"70","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276388000,"dur":7000},{"pid":1,"tid":1,"id":71,"name":"lib task manager create lint task","args":{"span_id":"71","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276402000,"dur":1000},{"pid":1,"tid":1,"id":55,"name":"variant manager create tasks for variant","args":{"span_id":"55","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276356000,"dur":47000},{"pid":1,"tid":1,"id":72,"name":"variant manager create tasks for variant","args":{"span_id":"72","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276403000,"dur":9000},{"pid":1,"tid":1,"id":73,"name":"variant manager create tasks for variant","args":{"span_id":"73","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276412000,"dur":27000},{"pid":1,"tid":1,"id":34,"name":"variant manager create android tasks","args":{"span_id":"34","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276139000,"dur":318000},{"pid":1,"tid":1,"id":74,"name":"variant manager external native config values","args":{"span_id":"74","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276458000,"dur":100},{"pid":1,"tid":1,"id":33,"name":"base plugin create android tasks","args":{"span_id":"33","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061276137000,"dur":321000},{"pid":1,"tid":1,"id":75,"name":"base plugin project configure","args":{"span_id":"75","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276873000,"dur":20000},{"pid":1,"tid":1,"id":76,"name":"base plugin project base extension creation","args":{"span_id":"76","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276893000,"dur":8000},{"pid":1,"tid":1,"id":78,"name":"task manager create tasks","args":{"span_id":"78","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276901000,"dur":3000},{"pid":1,"tid":1,"id":77,"name":"base plugin project tasks creation","args":{"span_id":"77","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276901000,"dur":3000},{"pid":1,"tid":1,"id":81,"name":"variant manager create variants","args":{"span_id":"81","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276949000,"dur":35000},{"pid":1,"tid":1,"id":82,"name":"variant manager create tests tasks","args":{"span_id":"82","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276984000,"dur":1000},{"pid":1,"tid":1,"id":84,"name":"lib task manager create generate res values task","args":{"span_id":"84","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276986000,"dur":1000},{"pid":1,"tid":1,"id":85,"name":"lib task manager create merge manifest task","args":{"span_id":"85","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276987000,"dur":100},{"pid":1,"tid":1,"id":86,"name":"lib task manager create create renderscript task","args":{"span_id":"86","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276987000,"dur":1000},{"pid":1,"tid":1,"id":87,"name":"lib task manager create merge resources task","args":{"span_id":"87","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276988000,"dur":2000},{"pid":1,"tid":1,"id":88,"name":"lib task manager create merge assets task","args":{"span_id":"88","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276990000,"dur":4000},{"pid":1,"tid":1,"id":89,"name":"lib task manager create build config task","args":{"span_id":"89","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276994000,"dur":100},{"pid":1,"tid":1,"id":90,"name":"lib task manager create process res task","args":{"span_id":"90","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276995000,"dur":6000},{"pid":1,"tid":1,"id":91,"name":"lib task manager create aidl task","args":{"span_id":"91","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277001000,"dur":1000},{"pid":1,"tid":1,"id":92,"name":"lib task manager create shader task","args":{"span_id":"92","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277002000,"dur":1000},{"pid":1,"tid":1,"id":93,"name":"lib task manager create compile task","args":{"span_id":"93","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277003000,"dur":1000},{"pid":1,"tid":1,"id":94,"name":"lib task manager create ndk task","args":{"span_id":"94","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277005000,"dur":100},{"pid":1,"tid":1,"id":95,"name":"lib task manager create external native build task","args":{"span_id":"95","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277005000,"dur":100},{"pid":1,"tid":1,"id":96,"name":"lib task manager create packaging task","args":{"span_id":"96","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277006000,"dur":1000},{"pid":1,"tid":1,"id":97,"name":"lib task manager create merge proguard file task","args":{"span_id":"97","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277007000,"dur":100},{"pid":1,"tid":1,"id":98,"name":"lib task manager create post compilation task","args":{"span_id":"98","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277018000,"dur":13000},{"pid":1,"tid":1,"id":99,"name":"lib task manager create lint task","args":{"span_id":"99","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277031000,"dur":1000},{"pid":1,"tid":1,"id":83,"name":"variant manager create tasks for variant","args":{"span_id":"83","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061276985000,"dur":47000},{"pid":1,"tid":1,"id":100,"name":"variant manager create tasks for variant","args":{"span_id":"100","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061277032000,"dur":7000},{"pid":1,"tid":1,"id":102,"name":"lib task manager create generate res values task","args":{"span_id":"102","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277041000,"dur":1000},{"pid":1,"tid":1,"id":103,"name":"lib task manager create merge manifest task","args":{"span_id":"103","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277042000,"dur":100},{"pid":1,"tid":1,"id":104,"name":"lib task manager create create renderscript task","args":{"span_id":"104","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277042000,"dur":1000},{"pid":1,"tid":1,"id":105,"name":"lib task manager create merge resources task","args":{"span_id":"105","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277043000,"dur":2000},{"pid":1,"tid":1,"id":106,"name":"lib task manager create merge assets task","args":{"span_id":"106","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277045000,"dur":100},{"pid":1,"tid":1,"id":107,"name":"lib task manager create build config task","args":{"span_id":"107","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277046000,"dur":100},{"pid":1,"tid":1,"id":108,"name":"lib task manager create process res task","args":{"span_id":"108","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277047000,"dur":8000},{"pid":1,"tid":1,"id":109,"name":"lib task manager create aidl task","args":{"span_id":"109","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277055000,"dur":12000},{"pid":1,"tid":1,"id":110,"name":"lib task manager create shader task","args":{"span_id":"110","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277070000,"dur":1000},{"pid":1,"tid":1,"id":111,"name":"lib task manager create compile task","args":{"span_id":"111","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277071000,"dur":1000},{"pid":1,"tid":1,"id":112,"name":"lib task manager create ndk task","args":{"span_id":"112","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277072000,"dur":1000},{"pid":1,"tid":1,"id":113,"name":"lib task manager create external native build task","args":{"span_id":"113","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277073000,"dur":100},{"pid":1,"tid":1,"id":114,"name":"lib task manager create packaging task","args":{"span_id":"114","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277074000,"dur":100},{"pid":1,"tid":1,"id":115,"name":"lib task manager create merge proguard file task","args":{"span_id":"115","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277075000,"dur":100},{"pid":1,"tid":1,"id":116,"name":"lib task manager create post compilation task","args":{"span_id":"116","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277076000,"dur":6000},{"pid":1,"tid":1,"id":117,"name":"lib task manager create lint task","args":{"span_id":"117","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277082000,"dur":1000},{"pid":1,"tid":1,"id":101,"name":"variant manager create tasks for variant","args":{"span_id":"101","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548061277039000,"dur":44000},{"pid":1,"tid":1,"id":118,"name":"variant manager create tasks for variant","args":{"span_id":"118","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061277083000,"dur":7000},{"pid":1,"tid":1,"id":119,"name":"variant manager create tasks for variant","args":{"span_id":"119","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061277091000,"dur":21000},{"pid":1,"tid":1,"id":80,"name":"variant manager create android tasks","args":{"span_id":"80","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276949000,"dur":164000},{"pid":1,"tid":1,"id":120,"name":"variant manager external native config values","args":{"span_id":"120","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061277114000,"dur":100},{"pid":1,"tid":1,"id":79,"name":"base plugin create android tasks","args":{"span_id":"79","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061276926000,"dur":188000},{"pid":1,"tid":0,"id":121,"name":"task: build info loader","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 7\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061277586000,"dur":30000},{"pid":1,"tid":0,"id":122,"name":"task: merge source set folders","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277635000,"dur":114000},{"pid":1,"tid":0,"id":123,"name":"task: shader compile","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277752000,"dur":22000},{"pid":1,"tid":0,"id":124,"name":"task: unknown task type","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277775000,"dur":100},{"pid":1,"tid":0,"id":125,"name":"task: merge source set folders","args":{"span_id":"125","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277777000,"dur":11000},{"pid":1,"tid":0,"id":126,"name":"task: shader compile","args":{"span_id":"126","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277789000,"dur":8000},{"pid":1,"tid":0,"id":127,"name":"task: unknown task type","args":{"span_id":"127","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277798000,"dur":1000},{"pid":1,"tid":0,"id":128,"name":"task: merge source set folders","args":{"span_id":"128","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277800000,"dur":88000},{"pid":1,"tid":0,"id":129,"name":"task: merge source set folders","args":{"span_id":"129","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277891000,"dur":29000},{"pid":1,"tid":0,"id":130,"name":"task: shader compile","args":{"span_id":"130","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277922000,"dur":6000},{"pid":1,"tid":0,"id":131,"name":"task: unknown task type","args":{"span_id":"131","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277930000,"dur":1000},{"pid":1,"tid":0,"id":132,"name":"task: merge source set folders","args":{"span_id":"132","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277932000,"dur":7000},{"pid":1,"tid":0,"id":133,"name":"task: merge source set folders","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061277943000,"dur":793000},{"pid":1,"tid":0,"id":134,"name":"task: unknown task type","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278737000,"dur":100},{"pid":1,"tid":0,"id":135,"name":"task: unknown task type","args":{"span_id":"135","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278738000,"dur":100},{"pid":1,"tid":0,"id":136,"name":"task: unknown task type","args":{"span_id":"136","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278740000,"dur":100},{"pid":1,"tid":0,"id":137,"name":"task: check manifest","args":{"span_id":"137","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278741000,"dur":7000},{"pid":1,"tid":0,"id":138,"name":"task: process manifest","args":{"span_id":"138","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278750000,"dur":17000},{"pid":1,"tid":0,"id":139,"name":"task: unknown task type","args":{"span_id":"139","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278769000,"dur":1000},{"pid":1,"tid":0,"id":140,"name":"task: unknown task type","args":{"span_id":"140","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278771000,"dur":100},{"pid":1,"tid":0,"id":141,"name":"task: check manifest","args":{"span_id":"141","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278773000,"dur":3000},{"pid":1,"tid":0,"id":142,"name":"task: process manifest","args":{"span_id":"142","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278779000,"dur":10000},{"pid":1,"tid":0,"id":143,"name":"task: app pre build","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278791000,"dur":109000},{"pid":1,"tid":0,"id":144,"name":"task: check manifest","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278902000,"dur":2000},{"pid":1,"tid":0,"id":145,"name":"task: compatible screens manifest","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061278905000,"dur":12000},{"pid":1,"tid":0,"id":146,"name":"task: merge manifests","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061278919000,"dur":1032000},{"pid":1,"tid":0,"id":147,"name":"task: unknown task type","args":{"span_id":"147","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061279952000,"dur":8000},{"pid":1,"tid":0,"id":148,"name":"task: unknown task type","args":{"span_id":"148","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061279966000,"dur":1000},{"pid":1,"tid":0,"id":149,"name":"task: renderscript compile","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061279970000,"dur":25000},{"pid":1,"tid":0,"id":150,"name":"task: generate res values","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061279996000,"dur":3000},{"pid":1,"tid":0,"id":151,"name":"task: unknown task type","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280000000,"dur":100},{"pid":1,"tid":0,"id":152,"name":"task: renderscript compile","args":{"span_id":"152","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280001000,"dur":59000},{"pid":1,"tid":0,"id":153,"name":"task: generate res values","args":{"span_id":"153","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280079000,"dur":9000},{"pid":1,"tid":0,"id":154,"name":"task: unknown task type","args":{"span_id":"154","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280089000,"dur":100},{"pid":1,"tid":0,"id":155,"name":"task: merge resources","args":{"span_id":"155","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280092000,"dur":50000},{"pid":1,"tid":0,"id":156,"name":"task: renderscript compile","args":{"span_id":"156","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280144000,"dur":150000},{"pid":1,"tid":0,"id":157,"name":"task: generate res values","args":{"span_id":"157","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280296000,"dur":3000},{"pid":1,"tid":0,"id":158,"name":"task: unknown task type","args":{"span_id":"158","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280300000,"dur":100},{"pid":1,"tid":0,"id":159,"name":"task: merge resources","args":{"span_id":"159","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280302000,"dur":11000},{"pid":1,"tid":0,"id":160,"name":"task: merge resources","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280318000,"dur":274000},{"pid":1,"tid":0,"id":161,"name":"task: splits discovery","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280593000,"dur":4000},{"pid":1,"tid":0,"id":162,"name":"task: platform attr extractor","args":{"span_id":"162","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280598000,"dur":5000},{"pid":1,"tid":0,"id":163,"name":"task: platform attr extractor","args":{"span_id":"163","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061280604000,"dur":2000},{"pid":1,"tid":0,"id":164,"name":"task: process android resources","args":{"span_id":"164","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061280608000,"dur":408000},{"pid":1,"tid":0,"id":165,"name":"task: process android resources","args":{"span_id":"165","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061281022000,"dur":1661000},{"pid":1,"tid":0,"id":166,"name":"task: process android resources","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061282687000,"dur":1650000},{"pid":1,"tid":0,"id":167,"name":"task: package application","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284339000,"dur":26000},{"pid":1,"tid":0,"id":168,"name":"task: aidl compile","args":{"span_id":"168","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284367000,"dur":12000},{"pid":1,"tid":0,"id":169,"name":"task: aidl compile","args":{"span_id":"169","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284380000,"dur":20000},{"pid":1,"tid":0,"id":170,"name":"task: aidl compile","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284401000,"dur":16000},{"pid":1,"tid":0,"id":171,"name":"task: generate build config","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284418000,"dur":3000},{"pid":1,"tid":0,"id":172,"name":"task: prepare lint jar","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284422000,"dur":4000},{"pid":1,"tid":0,"id":173,"name":"task: unknown task type","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061284426000,"dur":1000},{"pid":1,"tid":0,"id":174,"name":"task: generate build config","args":{"span_id":"174","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284428000,"dur":3000},{"pid":1,"tid":0,"id":175,"name":"task: generate build config","args":{"span_id":"175","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284432000,"dur":2000},{"pid":1,"tid":0,"id":176,"name":"task: prepare lint jar","args":{"span_id":"176","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284435000,"dur":3000},{"pid":1,"tid":0,"id":177,"name":"task: unknown task type","args":{"span_id":"177","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061284439000,"dur":100},{"pid":1,"tid":0,"id":178,"name":"task: java pre compile","args":{"span_id":"178","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284440000,"dur":23000},{"pid":1,"tid":0,"id":179,"name":"task: android java compile","args":{"span_id":"179","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284466000,"dur":110000},{"pid":1,"tid":0,"id":180,"name":"task: unknown task type","args":{"span_id":"180","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061284579000,"dur":1000},{"pid":1,"tid":0,"id":181,"name":"task: transform","args":{"span_id":"181","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548061284586000,"dur":11000},{"pid":1,"tid":0,"id":182,"name":"task: kotlin compile","args":{"span_id":"182","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n","task":"type: 116\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: true\n"},"ph":"X","ts":1548061284601000,"dur":24959000},{"pid":1,"tid":0,"id":183,"name":"task: build info writer","args":{"span_id":"183","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 70\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548061309566000,"dur":6000},{"pid":1,"tid":1,"id":184,"name":"base plugin build finished","args":{"span_id":"184","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061309592000,"dur":25000},{"pid":1,"tid":1,"id":185,"name":"base plugin build finished","args":{"span_id":"185","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\nkotlin_plugin_version: \"1.2.71\"\n"},"ph":"X","ts":1548061309617000,"dur":1000},{"pid":1,"tid":1,"id":186,"name":"base plugin build finished","args":{"span_id":"186","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548061309619000,"dur":1000}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-01-49-664.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-01-49-664.rawproto deleted file mode 100644 index ded746603b147a280a1247bd5a92bb418f0a5407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9691 zcmbuEdwdne702(~ye8qbKyEmITvia+q$cJD$OCIdZEZ`nQmGXms5fv?QPD=L*1iIQ z1{DYaBnG7sP$E7EAeaQo2aJyZ@{)=Hf?Rne0!j$42myL_&dlCjAfJz0{)6-V&2P@k zIXjy>+bL>5S|Eep8XT$LHcTHrC@zqm76_ze-qf!=Su+v0H;fmuqlb85GQ3n5-3kF~@BNg%gVCVJdxpQMOjL{fGgjce!chX%2&i zuxo?q4ujf*t_@~fuEFaLgTnod2F!J}2aA-!>LqpAT4PO<0rOoMEO8j*pKxuk)M3zg z*0n)}!=QQoF}F+jOc^vBnvkOv&N}Ya;KPZs6KhXw8Kjkd^n5ZbaJ7jQ4ukMk*9M;| zgUx5o4bp0=UQCAfU1TsAHcb{w$l~Q2)`M2OVRtg*-*fT9#2`7P^F?o_?OuE_Y$u0I zzIxB3Zd$`z;ba(h35V9-EV~^B`D@W&yeoq<${@e4rJGhZd5>Fz^U9#Kyr{cYxYV^l z{uFg2{htOal|k{ik}I@^;(E7BsC5_=EOTwJ{c;VaOqF|3*78XYEr0o;WO&|H85a~v zgNEwUS86p|o04IID}#3(28|`h+#0-hxdxTWprE+0m)3mngxd@@7s)*+pSU(f3r~6} z#pND+e^tZ!yvrQwZS(IgVNKk4NlLLdr(vGWx7^-rYZ$Cy6S_Lxzb>B`S?4u ziu%=8!^9C6pJ}b1NJke*gVL&%S81CYCZ|I42)*Zpe{D19*2*8tlgrf-meuyr%6867 zh0~WXXg!13%AjEVt9`ZRDYH`Hj4Ok3Wl*zgO<%2WS+QG#HI~7Os(xCy?lrdtpE?W* z=9RcLSm!XP*f~2DT3qeHdWS(ny=#L_4ujfe*9KoIgW}>1{j}P(Z@68;Hm5<@wZYd; zgCATQ98m_V&rUJ4<|Sxw)>Re4i{-OWJby*9R@#W2n1A2J4^!*U!oJHjIN>xfJ8`_L z44RKmr(YZm+hzu}{5^*PFmH_B=fd-#^(9O=Aq~PM?*_Hz&l>`;z?H!PWl$L2kgJs+ zJrICXV|4u|W-y*5axctTWB&Nm--$K6*=(?9C^N%RQ1iJ6zZ`8usc;gH(V}6;dI3t9 z5vxEVkA_+bzrl=X6;9$@i-X2JLjMXg+A84V@d(cD6`;4#M#YnO8!Z7&?-TL9MnfC| zW+s%x+ah>#zW}kucQ()tK^cMe#z7lsk6<~0>x@G-&;h}50_}{$HlQIGcRj9B+$kA( z6^5CRXu!_A2W%&?fosn8kL-A;AN=t2vMysfg_ttvB;UmJO zJ+`Ffauvo;Q#=M+QpS^bU#$<6GzxvRv84k7*^>Pbyh$L(*lYs^f*k~y@udwUBd8+~ zWo)&96a>4~i2vHa&k%g8z*jbKHG+Kv+8NtyAQiz;HR5XHm60gv&m z4fMe}ou@jjWY~JL9zLFlK#qtPaoLjDS{8h!oJ0Xd4=3@Q2=Gz?B^ZRDhDOK&N^mWL zwFIK6fD-&1!3H%#6i|Ze5NuSFivmjUiwKCP0!nZ_f?72~6i|Y}2)3&^L;)qZ0l^Le z(NsVQZbYzKjSvNt;3foNHHRpm1iwVEM~x5#l;Bqg_No!0fD+t{U>|`vDxd_vM$n|J zL;(fx@hq&J$N!)Wg_$RXcW*puESK9cUO{n&M~#dp@jq(Api0HDQ=`;Ta|ePI1UzP^ zTHsF+AUf3ocOqCxBfMs(T3|SWRRp39>{JWfh2Uc~2X?9j?nY2eAlB?u3*3WXEdgd= zr&{1%1nU&QPPM=Y1nU*Rqs9XFA=p5`V_>IR;C?&6PPM=T2sSD!>{JT`5o}Uc*r^uC zMX-ZFJF`!PMk8eXBp8F>gt8L#li(2qClwI&li*PVrwDMWp9GH~I8UH0)lY)4 z2&SA8eaj3{KM5X3FjWCjKM9^dP^f^Yp9FtKFpYqCRYVPzAP+&20-}BrJc(es0-}Br zJcVEefmo`a1b;zLLV%gC3OR?5hp3{xrsC(*UZUJZYZ6_&kdHgkGLB zL$%w~b3C8nNn<_8&myRz0p>{~I7f#BzMLdd{&(0!+#|RL{XKU657u@B6yWpZ%)rmbGuT6d zSW93_!Ox#(aF7IM4!GgYHTwAk28T%yXF1q%=*cHCI7Ncj%sHqGHie(Rz<|C5VO>nY zMRUB!ph$cq5CVLWT$n@w1NxTJnqU%xndD$*Nu}VCQu+By4Cauaqa_$%7re}1F$r4P zh*ucUw-k}XC3b2ugJt9pg;P*5963y3uz~~$mcWt2R0f}u;4u`?PTp%zvXH@Y@hL+0 zS^~!u(->5epsgi{k2v(?MK}cs3e2XYIr>E&8b6=TV6(WW*QskG#Sl-GpU+_M4GAvX zDJhtVO-F*R))bkMB>enU1}!8ocZzc8W*5w2KzIGEbxbjXapERjzZM;+-i|3=W3Y(? z@s_|bMF|7Ci*K!^W;3WGhYZWXh$PvQzs{ggT*m9K(ngq1pCgGk7?c&7*D`vfBOFQ0 zVL+GRt@YHu8GJwv<`F|Z@g z^`=Pc+7y1ifWa|wW2|?x7Lsbuvy8!1agC;%4zyX!E_jE*>m*3Dl5hwX;vql+&6>g? zc$dM)B#3k_*r#}p!Dl3(-8MJ#8N1+p26W?!FCnuW>hY2Q?Hqz~23sQzR4+#kiy6>`-S6*p74<{<~)=YvB9H*ft>ysBS(h% zr)LL4BXb920uc}bA|`;)fN0o5LL?ysLLd@k3xe{_t#j+%+o5|tT>ZSy{Nd-L z=X>t2PSrVeZl&wmBCtzDWEAh4Fx2@%f9K%1kjPFEk&zMIdN+@Zh>7U*=g6*69h2Ro z+zDgc&xJ;HjZptPu~THfl$7#S!Gmv6vhzQlmMUTxzL2s!;+Im4(k}z?ZtrPn>KFqrJZjx zi@z8f8a*`W^*2V2awkW;nvm>t;eSO8A31i!n~4#LZ@&JXZI?MJi4h|jY{+oOB*u*!-bW9jM zI%#ae*pW%2JHC;eG}Jw2Op+E*Qu6SK;mL0I=;Wltq_J`T@`NPeyVTW1H;5)3+^s<%P_1falIQlM_<`aw!vUUhf4;X?qO{Ro_p0vR(a2PyT} zYq~?~dv{0RU!dgI3RFn}PtMIjO74ma-673V1T|8i{JW`xmGVs}Fx8U41uuc@ZI%Ug zWN2wj+pzm3rTW0F?y%uK=WiOO(f=YImja$+r(aUaSNzl+Hd_*?kOIZ26Nf0Cxj$PK zIPEQvX<49F3S^&}J47kEWm%vwTU*591^eGo(k`v+0oyID!44_l$t!(F@m#emuu}>Y zc`p1Sfn8n#X%lm-PQl|PP@QX8Amu~3h&yxtq2!$|=mACJtW@GeFM&Gi0+YQ3E?ACW zs+WLgZeb5NXlV*LQlM^K&OepBEjxO^5laHKQo!@|v2lv$@ZKJ9+>*d$DNuCg>^LR= zhGl_?%e6FC->x60)E(O21Iouae|xVDr5Bu9DFmXqXWyJurlhQy^b}mOq)_3lP+x9Y zq4HNN%*@edky5gL3cl?NraT2#EX`t`w?f^He}lpy8AJWX+BBR+>eQ#;M@zFf?yca- zK!sbD6iR=!Lit)P7sdHIx+-;NN_)b(iOkudVNEg^>GP=33o_Sh3K^CApH@86&iGOA z_nPblA9^Wd9Qk)BY?LwNe_s2vl2=pJ6E^x<2miBJvtO=5byjC3V`5P}+(w0nyI1m$ zepd1usgSn2wu_Qia3UV2P4c1OKZaFbYcZr{7Q`soWmWO8%$mY6so=@p604+LJ{J!w ztSQVmpv92Aa$THKlzHB=LXK3(UG9lfic2oWL$0+LR(mPr&Z)7iuvID)RaC?&DYI}E zA6tu|P%7m8P!*?mcHv5{vZiqD8*L@4*HrYtY#Qim!<8zb5W~|y+SEc%B>WfU__NwH^6GBXOt2Qihh7RPb*M1Wn!;MCkiB+uj8ag$ zv=2zt84qRiG>PI3dzYca=Cl`Jp%sZ+_S{=J90g5tt-aAJm(!90F~Axu1Sf!tCLGGtM8w*EHNvkkTzLe;WSm^K-mDO zvKB>_l*lWar%KE_Wm%$pmKH_z=H)YOO7+YM1L2&tD9%fXys|YYQGCa$L~mG;C8CJs zc}q@jVM^{ND+j^_jN*yAYs(Ypr?$3|Mhq_~T=Y3p@^9u2gd0NR9t)#4tlX@Hk+Q8E z_iFL{9|yvjrOX+5cNj;QpD?zOMhq|ZY{sAei|TLUf(ng$3?m-CkP`V{?*4@m1yZ8u z>S2_qpMf)}wiZRPlt^EF93`sHSeHo2*NQ89-*+fcS9NP3)L4t+M4^4{v>+C+O0w&mgoNXmHM04sdGc%AWC#> zxEKs3``adUd$cg}zTN&AhOs>DWhnL)h7BI`vlxp!nnd;oTQ@PKVB7mI!+Bp4{$>&n zi+{bul3y=zJa1tHpJ1En@;}#ci-s-1RwAn9CN!dIj`jsyPsH zuBlgm&eMUeKxq!+!AcNJy(vHsS0ia}$#v^ft{`a*<6H@Wl~dHCvGXlgQ^VdE?U`x9 z-oe#G+FSD`N+?X5D(o#?)gcI&8cl276hRgN#dY2U?nAJSKpR($2{c2nk3d(~1rxX* zLCQ2SMpM^C6HpM$B=C@{)&!a(SW6(%^}PwSKyZpci0hIGv_x=Lj!|y{tq@!x(8P7w z1i}zZnJ%JYuA3&%8bKO?Hm(~c@Bo741O~h6OaKtvCJ^hoVge5$*fc|o5#qXT0->0W zJ(P~?fv(1K*~54n1Ygh-?S$Q?rX!4pqrHUePYQb=r71*d1S=@t=^-vI6C1|cA~-us z3?1MaA?>YrBUpG#6w`s0E;S%gd@Xr9_;|K(4#kqRNvj<;khM8hq-G7{PQ?Mc$leGm zQuj7lgQPW#|3-NjHl_>hN3bGwmEWTM1lb#7MQZle{88l*s3LoS>)`zew2FKT!C3;} zDl!2Vf}aU6*C7*Vk09lJF*I`>Hh~TZCJ+d49WjB&5loWcs0sWBg2@DeUB^tIBZBF2 zjN>K{fnXK^o9na*Jb@rxf?^ZsgkUa#0M`iB!K|Rp9bO#pyf{kPa-IjQX+pE=#Jn!2}J%h&;!9KIflre2A(oNQ_7zPdLppt-OIQK$J&w67we z$AmqYI?cn%LvkOlv0^o8k4itdBek0v_7~AUbDq`)nn-(V{@+S} zm`!%kX#!=Z8DIdWR;msLB1o4?*lBby2*LXVY-*>`!C(Y)fnD2 z5U5tF4qigAKn{+Ts)Hd2GNcq%st#T@fX#)Ks)PSUut+|Em8ye3n*mm;4*r5*F+CwF zRR;+OmddEGQgx7sV3~XZJB<#8B3Le;z)ICX81IjHnnj>BR-SGjhV~U?ZzJqlr+Gzj zLjl>f{Aqh(xEYB2X<&o_M5hVtrGb$M3P~!M@~44U5$u*@i2P~bH8T+T)4(VMd*}%p zU@By8UlxKS}lwVb?m%TWGH& zdsAT-ohFR;Q(ln!`0vhI)Uw>gNr0EKo>9#VCUl*c*JK^&il~; zx081Sc0Pf@333S09ZVtE`9ucvDVT@>7rbE%lNeNy0@oExF*x{S2A9a;kU9pX!Q^4* zsSM~-s|M?c-)E|Mvhyhn=u@f&3!yutF`!SS{5ecz@Rj%!${C0;P%5~QN(Z0DU@tjr zX1Yfg!^6&}GngPg!)dS*dJr=hO!}7&Ga00kgBk>7!xV&_&tfo*9NOv*UNOvO@DVvY zgATNmL(D;@Gx**Zf*ibtc%Q)!3y;R7O{A22vW4(;_Jx|xTV&mcWV>|AxFXc}$I4htC2mpCGZySAR4 zXE6AH6ndZnCERO>g$xdpgR%L%hFHX)gdEh}eb?@D@Wl*HlEWmm^l1#25v7AK!G#cC zxi~*JGVT>cCW9>T{fDSaDhaPBvY7UfN`tD?dW@YfWw3%2j4kdJL^gxX@#P@ z80t#UVn1&lB9Fl$a!{l6vAsTJu!J1cA&kn^_uqO3*@gpcugCGlr8{h3u$&y4paMB~ zwd{=y@(cwkeJ_R27;GSiI1xjGH%~aCxnElu>TUTk zovsfic@uWZX{u&BKh9u=xCC~N)MpnjI-WRUhVv8Hj>P?}Opn@*^u1KV zU?R~F8s0?hyqG~fiK{OKs&mum;rt{vWP04xjCAob6BVsaZAKck^HO{<(zEJo&4>6Y zJWP>87o(A?dBHBwmX|Zg7_VN+Igd3pLf5c^f5%`cJzS{D)7~(}Zs!%aiN%$%lQxgs z8``@foLAx&oh?QP_A&k$TpOah@AEPKX$Cc+#!NzqR;c3y{nR*{3TJYi;s%XkDP2lYir$$8Ll2ItIut}^(P z==MgmekSbTKj4-leB5X`Uh8)qU(-88dV(lD?KF8zPdk1C|F|W(_jC~Ho4Au-!}Gbg zk9Kamte)|G6xU7cX&cr1W@if;;9+fmAa#Hr87v^WbC;GP6L<1@+&tp8+L^uEPg}c< z=cFIi%V=kF8o+MMpe_H2K_Ss~3QfR-9sCyNN8DsPe>Q%AFfEXs|BOo@E}5N1k^D~4 zQyk7yY*0ZCHX8o{V}fn@cpID{dg%cg--I3f4yK>*9pg}L8b6#*w81%XL+xxr@?f6c zBpdudbc?osOxVFE*x)4LgGT+Cp&b4;weYwWOLv9Yn8-0oMpBt}JdNl1w59Q%JrsAgpV diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.json b/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.json deleted file mode 100644 index 48e8bb2..0000000 --- a/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.json +++ /dev/null @@ -1 +0,0 @@ -[{"pid":0,"ph":"i","name":"Memory sample","ts":1548062456458000,"args":{"JVM stats":"heap_memory_usage: 110846912\nnon_heap_memory_usage: 49063800\nloaded_class_count: 7350\nthread_count: 21\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 4\n gc_time: 86\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 78\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466873000,"args":{"JVM stats":"heap_memory_usage: 161508376\nnon_heap_memory_usage: 81386392\nloaded_class_count: 10907\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 3\n gc_time: 56\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 129\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466940000,"args":{"JVM stats":"heap_memory_usage: 164172896\nnon_heap_memory_usage: 81879136\nloaded_class_count: 11037\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466953000,"args":{"JVM stats":"heap_memory_usage: 164172896\nnon_heap_memory_usage: 81941704\nloaded_class_count: 11043\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466955000,"args":{"JVM stats":"heap_memory_usage: 164172896\nnon_heap_memory_usage: 81944368\nloaded_class_count: 11043\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466969000,"args":{"JVM stats":"heap_memory_usage: 164703472\nnon_heap_memory_usage: 81989680\nloaded_class_count: 11043\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466978000,"args":{"JVM stats":"heap_memory_usage: 164703472\nnon_heap_memory_usage: 82037048\nloaded_class_count: 11043\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062466980000,"args":{"JVM stats":"heap_memory_usage: 164703472\nnon_heap_memory_usage: 82041544\nloaded_class_count: 11043\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467006000,"args":{"JVM stats":"heap_memory_usage: 165280112\nnon_heap_memory_usage: 82115592\nloaded_class_count: 11043\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467025000,"args":{"JVM stats":"heap_memory_usage: 166032072\nnon_heap_memory_usage: 82193536\nloaded_class_count: 11049\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467030000,"args":{"JVM stats":"heap_memory_usage: 166032072\nnon_heap_memory_usage: 82207512\nloaded_class_count: 11049\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467032000,"args":{"JVM stats":"heap_memory_usage: 166032072\nnon_heap_memory_usage: 82219840\nloaded_class_count: 11049\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467049000,"args":{"JVM stats":"heap_memory_usage: 166032072\nnon_heap_memory_usage: 82249408\nloaded_class_count: 11049\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467811000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83901576\nloaded_class_count: 11159\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 51\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467813000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83904888\nloaded_class_count: 11159\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467816000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83906936\nloaded_class_count: 11159\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467818000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83906936\nloaded_class_count: 11159\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467826000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83924792\nloaded_class_count: 11161\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467840000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83943792\nloaded_class_count: 11163\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467842000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83943792\nloaded_class_count: 11163\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467844000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83946288\nloaded_class_count: 11163\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467848000,"args":{"JVM stats":"heap_memory_usage: 82564928\nnon_heap_memory_usage: 83949040\nloaded_class_count: 11163\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467858000,"args":{"JVM stats":"heap_memory_usage: 83375816\nnon_heap_memory_usage: 83971512\nloaded_class_count: 11163\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467953000,"args":{"JVM stats":"heap_memory_usage: 87842024\nnon_heap_memory_usage: 84114048\nloaded_class_count: 11164\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467962000,"args":{"JVM stats":"heap_memory_usage: 87842024\nnon_heap_memory_usage: 84114048\nloaded_class_count: 11164\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062467975000,"args":{"JVM stats":"heap_memory_usage: 87842024\nnon_heap_memory_usage: 84159824\nloaded_class_count: 11170\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468035000,"args":{"JVM stats":"heap_memory_usage: 89215008\nnon_heap_memory_usage: 83821744\nloaded_class_count: 11174\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468037000,"args":{"JVM stats":"heap_memory_usage: 89215008\nnon_heap_memory_usage: 83824136\nloaded_class_count: 11174\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468040000,"args":{"JVM stats":"heap_memory_usage: 89215008\nnon_heap_memory_usage: 83828640\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468088000,"args":{"JVM stats":"heap_memory_usage: 90587624\nnon_heap_memory_usage: 83860024\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468091000,"args":{"JVM stats":"heap_memory_usage: 90927360\nnon_heap_memory_usage: 83862144\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468092000,"args":{"JVM stats":"heap_memory_usage: 90927360\nnon_heap_memory_usage: 83868672\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468144000,"args":{"JVM stats":"heap_memory_usage: 92646720\nnon_heap_memory_usage: 83948992\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468151000,"args":{"JVM stats":"heap_memory_usage: 92646720\nnon_heap_memory_usage: 83948992\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468152000,"args":{"JVM stats":"heap_memory_usage: 92646720\nnon_heap_memory_usage: 83948992\nloaded_class_count: 11175\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468226000,"args":{"JVM stats":"heap_memory_usage: 95293160\nnon_heap_memory_usage: 84028336\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468389000,"args":{"JVM stats":"heap_memory_usage: 104469952\nnon_heap_memory_usage: 84175624\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468394000,"args":{"JVM stats":"heap_memory_usage: 105156192\nnon_heap_memory_usage: 84180464\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468395000,"args":{"JVM stats":"heap_memory_usage: 105156192\nnon_heap_memory_usage: 84184680\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468406000,"args":{"JVM stats":"heap_memory_usage: 105156192\nnon_heap_memory_usage: 84194256\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468726000,"args":{"JVM stats":"heap_memory_usage: 125858032\nnon_heap_memory_usage: 84346032\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468730000,"args":{"JVM stats":"heap_memory_usage: 125858032\nnon_heap_memory_usage: 84358552\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468734000,"args":{"JVM stats":"heap_memory_usage: 125858032\nnon_heap_memory_usage: 84362248\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468739000,"args":{"JVM stats":"heap_memory_usage: 125858032\nnon_heap_memory_usage: 84370744\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468778000,"args":{"JVM stats":"heap_memory_usage: 126793600\nnon_heap_memory_usage: 84472032\nloaded_class_count: 11176\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468845000,"args":{"JVM stats":"heap_memory_usage: 130148656\nnon_heap_memory_usage: 84617240\nloaded_class_count: 11178\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468925000,"args":{"JVM stats":"heap_memory_usage: 134641384\nnon_heap_memory_usage: 84691256\nloaded_class_count: 11178\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468962000,"args":{"JVM stats":"heap_memory_usage: 135321232\nnon_heap_memory_usage: 84799704\nloaded_class_count: 11197\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062468981000,"args":{"JVM stats":"heap_memory_usage: 136007496\nnon_heap_memory_usage: 84815952\nloaded_class_count: 11198\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469001000,"args":{"JVM stats":"heap_memory_usage: 137033536\nnon_heap_memory_usage: 84855560\nloaded_class_count: 11198\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469032000,"args":{"JVM stats":"heap_memory_usage: 138420040\nnon_heap_memory_usage: 84887264\nloaded_class_count: 11198\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469038000,"args":{"JVM stats":"heap_memory_usage: 138420040\nnon_heap_memory_usage: 84892504\nloaded_class_count: 11198\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469045000,"args":{"JVM stats":"heap_memory_usage: 138420040\nnon_heap_memory_usage: 84899456\nloaded_class_count: 11199\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469046000,"args":{"JVM stats":"heap_memory_usage: 138420040\nnon_heap_memory_usage: 84899456\nloaded_class_count: 11199\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469050000,"args":{"JVM stats":"heap_memory_usage: 138420040\nnon_heap_memory_usage: 84899456\nloaded_class_count: 11199\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469053000,"args":{"JVM stats":"heap_memory_usage: 138759936\nnon_heap_memory_usage: 84899456\nloaded_class_count: 11199\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469054000,"args":{"JVM stats":"heap_memory_usage: 138759936\nnon_heap_memory_usage: 84900160\nloaded_class_count: 11199\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469091000,"args":{"JVM stats":"heap_memory_usage: 140443360\nnon_heap_memory_usage: 85000672\nloaded_class_count: 11199\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469117000,"args":{"JVM stats":"heap_memory_usage: 141122832\nnon_heap_memory_usage: 85012872\nloaded_class_count: 11200\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469122000,"args":{"JVM stats":"heap_memory_usage: 141122832\nnon_heap_memory_usage: 85016120\nloaded_class_count: 11200\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469126000,"args":{"JVM stats":"heap_memory_usage: 141122832\nnon_heap_memory_usage: 85096760\nloaded_class_count: 11200\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469127000,"args":{"JVM stats":"heap_memory_usage: 141122832\nnon_heap_memory_usage: 85096760\nloaded_class_count: 11200\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469152000,"args":{"JVM stats":"heap_memory_usage: 142072136\nnon_heap_memory_usage: 85125728\nloaded_class_count: 11201\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469208000,"args":{"JVM stats":"heap_memory_usage: 144170648\nnon_heap_memory_usage: 85222736\nloaded_class_count: 11204\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469210000,"args":{"JVM stats":"heap_memory_usage: 144170648\nnon_heap_memory_usage: 85224144\nloaded_class_count: 11204\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469223000,"args":{"JVM stats":"heap_memory_usage: 144517152\nnon_heap_memory_usage: 85247432\nloaded_class_count: 11206\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469317000,"args":{"JVM stats":"heap_memory_usage: 150315736\nnon_heap_memory_usage: 85471816\nloaded_class_count: 11207\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469449000,"args":{"JVM stats":"heap_memory_usage: 157298432\nnon_heap_memory_usage: 85523072\nloaded_class_count: 11207\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469451000,"args":{"JVM stats":"heap_memory_usage: 157298432\nnon_heap_memory_usage: 85524320\nloaded_class_count: 11207\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469459000,"args":{"JVM stats":"heap_memory_usage: 157644968\nnon_heap_memory_usage: 85534504\nloaded_class_count: 11207\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469489000,"args":{"JVM stats":"heap_memory_usage: 162040832\nnon_heap_memory_usage: 85553616\nloaded_class_count: 11207\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469643000,"args":{"JVM stats":"heap_memory_usage: 169410448\nnon_heap_memory_usage: 85621112\nloaded_class_count: 11208\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469681000,"args":{"JVM stats":"heap_memory_usage: 172413104\nnon_heap_memory_usage: 85536416\nloaded_class_count: 11218\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469740000,"args":{"JVM stats":"heap_memory_usage: 175377336\nnon_heap_memory_usage: 85451656\nloaded_class_count: 11220\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469899000,"args":{"JVM stats":"heap_memory_usage: 186726888\nnon_heap_memory_usage: 85567528\nloaded_class_count: 11221\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469930000,"args":{"JVM stats":"heap_memory_usage: 188860448\nnon_heap_memory_usage: 85628112\nloaded_class_count: 11221\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469937000,"args":{"JVM stats":"heap_memory_usage: 188860448\nnon_heap_memory_usage: 85634976\nloaded_class_count: 11222\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469944000,"args":{"JVM stats":"heap_memory_usage: 188860448\nnon_heap_memory_usage: 85643264\nloaded_class_count: 11222\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469948000,"args":{"JVM stats":"heap_memory_usage: 189296744\nnon_heap_memory_usage: 85650336\nloaded_class_count: 11222\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469961000,"args":{"JVM stats":"heap_memory_usage: 189296744\nnon_heap_memory_usage: 85728960\nloaded_class_count: 11224\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469970000,"args":{"JVM stats":"heap_memory_usage: 189643248\nnon_heap_memory_usage: 85748328\nloaded_class_count: 11224\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469977000,"args":{"JVM stats":"heap_memory_usage: 189643248\nnon_heap_memory_usage: 85766712\nloaded_class_count: 11224\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469979000,"args":{"JVM stats":"heap_memory_usage: 189643248\nnon_heap_memory_usage: 85765680\nloaded_class_count: 11224\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469985000,"args":{"JVM stats":"heap_memory_usage: 190204192\nnon_heap_memory_usage: 85767216\nloaded_class_count: 11224\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062469996000,"args":{"JVM stats":"heap_memory_usage: 190204192\nnon_heap_memory_usage: 85781064\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470001000,"args":{"JVM stats":"heap_memory_usage: 190550696\nnon_heap_memory_usage: 85790760\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470090000,"args":{"JVM stats":"heap_memory_usage: 195428552\nnon_heap_memory_usage: 85896688\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470092000,"args":{"JVM stats":"heap_memory_usage: 195428552\nnon_heap_memory_usage: 85899312\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470181000,"args":{"JVM stats":"heap_memory_usage: 199973304\nnon_heap_memory_usage: 85947256\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470187000,"args":{"JVM stats":"heap_memory_usage: 199973304\nnon_heap_memory_usage: 85953792\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470420000,"args":{"JVM stats":"heap_memory_usage: 216278936\nnon_heap_memory_usage: 86071272\nloaded_class_count: 11228\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470433000,"args":{"JVM stats":"heap_memory_usage: 217312416\nnon_heap_memory_usage: 86081824\nloaded_class_count: 11231\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470434000,"args":{"JVM stats":"heap_memory_usage: 217312416\nnon_heap_memory_usage: 86081824\nloaded_class_count: 11231\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470436000,"args":{"JVM stats":"heap_memory_usage: 217312416\nnon_heap_memory_usage: 86087792\nloaded_class_count: 11232\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470439000,"args":{"JVM stats":"heap_memory_usage: 217312416\nnon_heap_memory_usage: 86095048\nloaded_class_count: 11232\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470444000,"args":{"JVM stats":"heap_memory_usage: 217560072\nnon_heap_memory_usage: 86106360\nloaded_class_count: 11233\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470691000,"args":{"JVM stats":"heap_memory_usage: 72237744\nnon_heap_memory_usage: 86246536\nloaded_class_count: 11239\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 69\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470910000,"args":{"JVM stats":"heap_memory_usage: 89886832\nnon_heap_memory_usage: 86525984\nloaded_class_count: 11240\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470945000,"args":{"JVM stats":"heap_memory_usage: 92752424\nnon_heap_memory_usage: 86548736\nloaded_class_count: 11240\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470987000,"args":{"JVM stats":"heap_memory_usage: 95615112\nnon_heap_memory_usage: 86624480\nloaded_class_count: 11240\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470989000,"args":{"JVM stats":"heap_memory_usage: 95615112\nnon_heap_memory_usage: 86632840\nloaded_class_count: 11240\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062470993000,"args":{"JVM stats":"heap_memory_usage: 96719280\nnon_heap_memory_usage: 86641512\nloaded_class_count: 11240\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062471001000,"args":{"JVM stats":"heap_memory_usage: 96719280\nnon_heap_memory_usage: 86658800\nloaded_class_count: 11240\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062471036000,"args":{"JVM stats":"heap_memory_usage: 97037880\nnon_heap_memory_usage: 86831728\nloaded_class_count: 11251\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062471067000,"args":{"JVM stats":"heap_memory_usage: 99079232\nnon_heap_memory_usage: 87145608\nloaded_class_count: 11284\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062471069000,"args":{"JVM stats":"heap_memory_usage: 99079232\nnon_heap_memory_usage: 87145608\nloaded_class_count: 11284\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062471071000,"args":{"JVM stats":"heap_memory_usage: 99079232\nnon_heap_memory_usage: 87145640\nloaded_class_count: 11284\nthread_count: 27\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 0\n gc_time: 0\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 0\n gc_time: 0\n}\n"}},{"pid":0,"ph":"i","name":"Memory sample","ts":1548062471802000,"args":{"JVM stats":"heap_memory_usage: 55224016\nnon_heap_memory_usage: 88930064\nloaded_class_count: 11602\nthread_count: 22\ngarbage_collection_stats {\n name: \"PS Scavenge\"\n gc_collections: 1\n gc_time: 55\n}\ngarbage_collection_stats {\n name: \"PS MarkSweep\"\n gc_collections: 1\n gc_time: 337\n}\n"}},{"pid":1,"tid":1,"id":2,"name":"base plugin project configure","args":{"span_id":"2","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062456605000,"dur":1749000},{"pid":1,"tid":1,"id":3,"name":"base plugin project base extension creation","args":{"span_id":"3","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062458355000,"dur":1197000},{"pid":1,"tid":1,"id":5,"name":"task manager create tasks","args":{"span_id":"5","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062459554000,"dur":229000},{"pid":1,"tid":1,"id":4,"name":"base plugin project tasks creation","args":{"span_id":"4","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062459552000,"dur":233000},{"pid":1,"tid":1,"id":8,"name":"variant manager create variants","args":{"span_id":"8","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062464093000,"dur":278000},{"pid":1,"tid":1,"id":9,"name":"variant manager create tests tasks","args":{"span_id":"9","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062464373000,"dur":52000},{"pid":1,"tid":1,"id":11,"name":"app task manager create merge manifest task","args":{"span_id":"11","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464500000,"dur":30000},{"pid":1,"tid":1,"id":12,"name":"app task manager create generate res values task","args":{"span_id":"12","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464531000,"dur":6000},{"pid":1,"tid":1,"id":13,"name":"app task manager create create renderscript task","args":{"span_id":"13","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464538000,"dur":12000},{"pid":1,"tid":1,"id":14,"name":"app task manager create merge resources task","args":{"span_id":"14","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464551000,"dur":47000},{"pid":1,"tid":1,"id":15,"name":"app task manager create merge assets task","args":{"span_id":"15","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464599000,"dur":10000},{"pid":1,"tid":1,"id":16,"name":"app task manager create build config task","args":{"span_id":"16","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464609000,"dur":13000},{"pid":1,"tid":1,"id":17,"name":"app task manager create process res task","args":{"span_id":"17","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464622000,"dur":72000},{"pid":1,"tid":1,"id":18,"name":"app task manager create aidl task","args":{"span_id":"18","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464695000,"dur":19000},{"pid":1,"tid":1,"id":19,"name":"app task manager create shader task","args":{"span_id":"19","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464715000,"dur":13000},{"pid":1,"tid":1,"id":20,"name":"app task manager create ndk task","args":{"span_id":"20","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464728000,"dur":14000},{"pid":1,"tid":1,"id":21,"name":"app task manager create external native build task","args":{"span_id":"21","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464743000,"dur":1000},{"pid":1,"tid":1,"id":22,"name":"app task manager create merge jnilibs folders task","args":{"span_id":"22","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464745000,"dur":39000},{"pid":1,"tid":1,"id":23,"name":"app task manager create compile task","args":{"span_id":"23","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464786000,"dur":165000},{"pid":1,"tid":1,"id":24,"name":"app task manager create packaging task","args":{"span_id":"24","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464952000,"dur":67000},{"pid":1,"tid":1,"id":25,"name":"app task manager create lint task","args":{"span_id":"25","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465019000,"dur":6000},{"pid":1,"tid":1,"id":10,"name":"variant manager create tasks for variant","args":{"span_id":"10","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062464429000,"dur":596000},{"pid":1,"tid":1,"id":26,"name":"variant manager create tasks for variant","args":{"span_id":"26","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465025000,"dur":112000},{"pid":1,"tid":1,"id":27,"name":"variant manager create tasks for variant","args":{"span_id":"27","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465137000,"dur":68000},{"pid":1,"tid":1,"id":7,"name":"variant manager create android tasks","args":{"span_id":"7","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062464090000,"dur":1263000},{"pid":1,"tid":1,"id":28,"name":"variant manager external native config values","args":{"span_id":"28","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465357000,"dur":100},{"pid":1,"tid":1,"id":6,"name":"base plugin create android tasks","args":{"span_id":"6","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062460503000,"dur":4854000},{"pid":1,"tid":1,"id":29,"name":"base plugin project configure","args":{"span_id":"29","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465390000,"dur":28000},{"pid":1,"tid":1,"id":30,"name":"base plugin project base extension creation","args":{"span_id":"30","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465418000,"dur":30000},{"pid":1,"tid":1,"id":32,"name":"task manager create tasks","args":{"span_id":"32","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465448000,"dur":4000},{"pid":1,"tid":1,"id":31,"name":"base plugin project tasks creation","args":{"span_id":"31","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465448000,"dur":4000},{"pid":1,"tid":1,"id":35,"name":"variant manager create variants","args":{"span_id":"35","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465602000,"dur":25000},{"pid":1,"tid":1,"id":36,"name":"variant manager create tests tasks","args":{"span_id":"36","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465627000,"dur":5000},{"pid":1,"tid":1,"id":38,"name":"lib task manager create generate res values task","args":{"span_id":"38","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465636000,"dur":5000},{"pid":1,"tid":1,"id":39,"name":"lib task manager create merge manifest task","args":{"span_id":"39","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465643000,"dur":20000},{"pid":1,"tid":1,"id":40,"name":"lib task manager create create renderscript task","args":{"span_id":"40","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465663000,"dur":14000},{"pid":1,"tid":1,"id":41,"name":"lib task manager create merge resources task","args":{"span_id":"41","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465689000,"dur":5000},{"pid":1,"tid":1,"id":42,"name":"lib task manager create merge assets task","args":{"span_id":"42","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465695000,"dur":5000},{"pid":1,"tid":1,"id":43,"name":"lib task manager create build config task","args":{"span_id":"43","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465700000,"dur":1000},{"pid":1,"tid":1,"id":44,"name":"lib task manager create process res task","args":{"span_id":"44","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465703000,"dur":29000},{"pid":1,"tid":1,"id":45,"name":"lib task manager create aidl task","args":{"span_id":"45","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465732000,"dur":3000},{"pid":1,"tid":1,"id":46,"name":"lib task manager create shader task","args":{"span_id":"46","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465735000,"dur":2000},{"pid":1,"tid":1,"id":47,"name":"lib task manager create compile task","args":{"span_id":"47","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465739000,"dur":3000},{"pid":1,"tid":1,"id":48,"name":"lib task manager create ndk task","args":{"span_id":"48","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465743000,"dur":100},{"pid":1,"tid":1,"id":49,"name":"lib task manager create external native build task","args":{"span_id":"49","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465744000,"dur":100},{"pid":1,"tid":1,"id":50,"name":"lib task manager create packaging task","args":{"span_id":"50","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465759000,"dur":10000},{"pid":1,"tid":1,"id":51,"name":"lib task manager create merge proguard file task","args":{"span_id":"51","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465771000,"dur":21000},{"pid":1,"tid":1,"id":52,"name":"lib task manager create post compilation task","args":{"span_id":"52","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465871000,"dur":17000},{"pid":1,"tid":1,"id":53,"name":"lib task manager create lint task","args":{"span_id":"53","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465890000,"dur":100},{"pid":1,"tid":1,"id":37,"name":"variant manager create tasks for variant","args":{"span_id":"37","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465632000,"dur":258000},{"pid":1,"tid":1,"id":54,"name":"variant manager create tasks for variant","args":{"span_id":"54","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465890000,"dur":13000},{"pid":1,"tid":1,"id":56,"name":"lib task manager create generate res values task","args":{"span_id":"56","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465911000,"dur":100},{"pid":1,"tid":1,"id":57,"name":"lib task manager create merge manifest task","args":{"span_id":"57","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465911000,"dur":1000},{"pid":1,"tid":1,"id":58,"name":"lib task manager create create renderscript task","args":{"span_id":"58","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465912000,"dur":1000},{"pid":1,"tid":1,"id":59,"name":"lib task manager create merge resources task","args":{"span_id":"59","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465913000,"dur":2000},{"pid":1,"tid":1,"id":60,"name":"lib task manager create merge assets task","args":{"span_id":"60","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465915000,"dur":2000},{"pid":1,"tid":1,"id":61,"name":"lib task manager create build config task","args":{"span_id":"61","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465917000,"dur":1000},{"pid":1,"tid":1,"id":62,"name":"lib task manager create process res task","args":{"span_id":"62","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465918000,"dur":16000},{"pid":1,"tid":1,"id":63,"name":"lib task manager create aidl task","args":{"span_id":"63","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465934000,"dur":1000},{"pid":1,"tid":1,"id":64,"name":"lib task manager create shader task","args":{"span_id":"64","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465935000,"dur":1000},{"pid":1,"tid":1,"id":65,"name":"lib task manager create compile task","args":{"span_id":"65","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465936000,"dur":12000},{"pid":1,"tid":1,"id":66,"name":"lib task manager create ndk task","args":{"span_id":"66","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465949000,"dur":100},{"pid":1,"tid":1,"id":67,"name":"lib task manager create external native build task","args":{"span_id":"67","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465949000,"dur":100},{"pid":1,"tid":1,"id":68,"name":"lib task manager create packaging task","args":{"span_id":"68","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465950000,"dur":1000},{"pid":1,"tid":1,"id":69,"name":"lib task manager create merge proguard file task","args":{"span_id":"69","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465951000,"dur":1000},{"pid":1,"tid":1,"id":70,"name":"lib task manager create post compilation task","args":{"span_id":"70","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465954000,"dur":4000},{"pid":1,"tid":1,"id":71,"name":"lib task manager create lint task","args":{"span_id":"71","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465978000,"dur":1000},{"pid":1,"tid":1,"id":55,"name":"variant manager create tasks for variant","args":{"span_id":"55","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062465903000,"dur":76000},{"pid":1,"tid":1,"id":72,"name":"variant manager create tasks for variant","args":{"span_id":"72","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465979000,"dur":20000},{"pid":1,"tid":1,"id":73,"name":"variant manager create tasks for variant","args":{"span_id":"73","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465999000,"dur":39000},{"pid":1,"tid":1,"id":34,"name":"variant manager create android tasks","args":{"span_id":"34","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465601000,"dur":451000},{"pid":1,"tid":1,"id":74,"name":"variant manager external native config values","args":{"span_id":"74","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466053000,"dur":100},{"pid":1,"tid":1,"id":33,"name":"base plugin create android tasks","args":{"span_id":"33","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062465599000,"dur":454000},{"pid":1,"tid":1,"id":75,"name":"base plugin project configure","args":{"span_id":"75","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466208000,"dur":33000},{"pid":1,"tid":1,"id":76,"name":"base plugin project base extension creation","args":{"span_id":"76","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466241000,"dur":10000},{"pid":1,"tid":1,"id":78,"name":"task manager create tasks","args":{"span_id":"78","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466251000,"dur":3000},{"pid":1,"tid":1,"id":77,"name":"base plugin project tasks creation","args":{"span_id":"77","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466251000,"dur":3000},{"pid":1,"tid":1,"id":81,"name":"variant manager create variants","args":{"span_id":"81","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466284000,"dur":10000},{"pid":1,"tid":1,"id":82,"name":"variant manager create tests tasks","args":{"span_id":"82","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466294000,"dur":100},{"pid":1,"tid":1,"id":84,"name":"lib task manager create generate res values task","args":{"span_id":"84","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466296000,"dur":100},{"pid":1,"tid":1,"id":85,"name":"lib task manager create merge manifest task","args":{"span_id":"85","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466296000,"dur":100},{"pid":1,"tid":1,"id":86,"name":"lib task manager create create renderscript task","args":{"span_id":"86","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466296000,"dur":1000},{"pid":1,"tid":1,"id":87,"name":"lib task manager create merge resources task","args":{"span_id":"87","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466297000,"dur":1000},{"pid":1,"tid":1,"id":88,"name":"lib task manager create merge assets task","args":{"span_id":"88","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466298000,"dur":1000},{"pid":1,"tid":1,"id":89,"name":"lib task manager create build config task","args":{"span_id":"89","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466299000,"dur":1000},{"pid":1,"tid":1,"id":90,"name":"lib task manager create process res task","args":{"span_id":"90","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466300000,"dur":4000},{"pid":1,"tid":1,"id":91,"name":"lib task manager create aidl task","args":{"span_id":"91","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466304000,"dur":1000},{"pid":1,"tid":1,"id":92,"name":"lib task manager create shader task","args":{"span_id":"92","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466305000,"dur":1000},{"pid":1,"tid":1,"id":93,"name":"lib task manager create compile task","args":{"span_id":"93","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466306000,"dur":1000},{"pid":1,"tid":1,"id":94,"name":"lib task manager create ndk task","args":{"span_id":"94","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466307000,"dur":1000},{"pid":1,"tid":1,"id":95,"name":"lib task manager create external native build task","args":{"span_id":"95","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466308000,"dur":100},{"pid":1,"tid":1,"id":96,"name":"lib task manager create packaging task","args":{"span_id":"96","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466308000,"dur":1000},{"pid":1,"tid":1,"id":97,"name":"lib task manager create merge proguard file task","args":{"span_id":"97","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466309000,"dur":1000},{"pid":1,"tid":1,"id":98,"name":"lib task manager create post compilation task","args":{"span_id":"98","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466310000,"dur":9000},{"pid":1,"tid":1,"id":99,"name":"lib task manager create lint task","args":{"span_id":"99","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466320000,"dur":1000},{"pid":1,"tid":1,"id":83,"name":"variant manager create tasks for variant","args":{"span_id":"83","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466294000,"dur":27000},{"pid":1,"tid":1,"id":100,"name":"variant manager create tasks for variant","args":{"span_id":"100","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466321000,"dur":9000},{"pid":1,"tid":1,"id":102,"name":"lib task manager create generate res values task","args":{"span_id":"102","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466334000,"dur":1000},{"pid":1,"tid":1,"id":103,"name":"lib task manager create merge manifest task","args":{"span_id":"103","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466335000,"dur":100},{"pid":1,"tid":1,"id":104,"name":"lib task manager create create renderscript task","args":{"span_id":"104","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466335000,"dur":1000},{"pid":1,"tid":1,"id":105,"name":"lib task manager create merge resources task","args":{"span_id":"105","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466336000,"dur":2000},{"pid":1,"tid":1,"id":106,"name":"lib task manager create merge assets task","args":{"span_id":"106","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466338000,"dur":100},{"pid":1,"tid":1,"id":107,"name":"lib task manager create build config task","args":{"span_id":"107","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466338000,"dur":1000},{"pid":1,"tid":1,"id":108,"name":"lib task manager create process res task","args":{"span_id":"108","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466339000,"dur":3000},{"pid":1,"tid":1,"id":109,"name":"lib task manager create aidl task","args":{"span_id":"109","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466342000,"dur":100},{"pid":1,"tid":1,"id":110,"name":"lib task manager create shader task","args":{"span_id":"110","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466342000,"dur":1000},{"pid":1,"tid":1,"id":111,"name":"lib task manager create compile task","args":{"span_id":"111","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466343000,"dur":1000},{"pid":1,"tid":1,"id":112,"name":"lib task manager create ndk task","args":{"span_id":"112","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466344000,"dur":1000},{"pid":1,"tid":1,"id":113,"name":"lib task manager create external native build task","args":{"span_id":"113","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466345000,"dur":100},{"pid":1,"tid":1,"id":114,"name":"lib task manager create packaging task","args":{"span_id":"114","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466346000,"dur":1000},{"pid":1,"tid":1,"id":115,"name":"lib task manager create merge proguard file task","args":{"span_id":"115","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466347000,"dur":1000},{"pid":1,"tid":1,"id":116,"name":"lib task manager create post compilation task","args":{"span_id":"116","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466349000,"dur":3000},{"pid":1,"tid":1,"id":117,"name":"lib task manager create lint task","args":{"span_id":"117","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466353000,"dur":100},{"pid":1,"tid":1,"id":101,"name":"variant manager create tasks for variant","args":{"span_id":"101","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 2\nis_debug: false\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n"},"ph":"X","ts":1548062466330000,"dur":23000},{"pid":1,"tid":1,"id":118,"name":"variant manager create tasks for variant","args":{"span_id":"118","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466353000,"dur":7000},{"pid":1,"tid":1,"id":119,"name":"variant manager create tasks for variant","args":{"span_id":"119","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466360000,"dur":23000},{"pid":1,"tid":1,"id":80,"name":"variant manager create android tasks","args":{"span_id":"80","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466284000,"dur":101000},{"pid":1,"tid":1,"id":120,"name":"variant manager external native config values","args":{"span_id":"120","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466386000,"dur":100},{"pid":1,"tid":1,"id":79,"name":"base plugin create android tasks","args":{"span_id":"79","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062466282000,"dur":104000},{"pid":1,"tid":0,"id":121,"name":"task: build info loader","args":{"span_id":"121","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 7\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062466796000,"dur":65000},{"pid":1,"tid":0,"id":122,"name":"task: merge source set folders","args":{"span_id":"122","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466877000,"dur":63000},{"pid":1,"tid":0,"id":123,"name":"task: shader compile","args":{"span_id":"123","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466942000,"dur":11000},{"pid":1,"tid":0,"id":124,"name":"task: unknown task type","args":{"span_id":"124","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466954000,"dur":1000},{"pid":1,"tid":0,"id":125,"name":"task: merge source set folders","args":{"span_id":"125","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466956000,"dur":13000},{"pid":1,"tid":0,"id":126,"name":"task: shader compile","args":{"span_id":"126","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466971000,"dur":7000},{"pid":1,"tid":0,"id":127,"name":"task: unknown task type","args":{"span_id":"127","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466979000,"dur":100},{"pid":1,"tid":0,"id":128,"name":"task: merge source set folders","args":{"span_id":"128","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062466981000,"dur":24000},{"pid":1,"tid":0,"id":129,"name":"task: merge source set folders","args":{"span_id":"129","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467007000,"dur":18000},{"pid":1,"tid":0,"id":130,"name":"task: shader compile","args":{"span_id":"130","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 55\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467026000,"dur":4000},{"pid":1,"tid":0,"id":131,"name":"task: unknown task type","args":{"span_id":"131","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467031000,"dur":100},{"pid":1,"tid":0,"id":132,"name":"task: merge source set folders","args":{"span_id":"132","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467034000,"dur":14000},{"pid":1,"tid":0,"id":133,"name":"task: merge source set folders","args":{"span_id":"133","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467052000,"dur":759000},{"pid":1,"tid":0,"id":134,"name":"task: unknown task type","args":{"span_id":"134","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467812000,"dur":1000},{"pid":1,"tid":0,"id":135,"name":"task: unknown task type","args":{"span_id":"135","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467816000,"dur":100},{"pid":1,"tid":0,"id":136,"name":"task: unknown task type","args":{"span_id":"136","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467817000,"dur":100},{"pid":1,"tid":0,"id":137,"name":"task: check manifest","args":{"span_id":"137","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467819000,"dur":7000},{"pid":1,"tid":0,"id":138,"name":"task: process manifest","args":{"span_id":"138","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467828000,"dur":11000},{"pid":1,"tid":0,"id":139,"name":"task: unknown task type","args":{"span_id":"139","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467842000,"dur":100},{"pid":1,"tid":0,"id":140,"name":"task: unknown task type","args":{"span_id":"140","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467843000,"dur":100},{"pid":1,"tid":0,"id":141,"name":"task: check manifest","args":{"span_id":"141","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467845000,"dur":2000},{"pid":1,"tid":0,"id":142,"name":"task: process manifest","args":{"span_id":"142","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 52\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467850000,"dur":7000},{"pid":1,"tid":0,"id":143,"name":"task: app pre build","args":{"span_id":"143","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 92\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467859000,"dur":94000},{"pid":1,"tid":0,"id":144,"name":"task: check manifest","args":{"span_id":"144","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 8\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467954000,"dur":3000},{"pid":1,"tid":0,"id":145,"name":"task: compatible screens manifest","args":{"span_id":"145","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 9\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467963000,"dur":12000},{"pid":1,"tid":0,"id":146,"name":"task: merge manifests","args":{"span_id":"146","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 39\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062467979000,"dur":55000},{"pid":1,"tid":0,"id":147,"name":"task: unknown task type","args":{"span_id":"147","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062468036000,"dur":1000},{"pid":1,"tid":0,"id":148,"name":"task: unknown task type","args":{"span_id":"148","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062468039000,"dur":1000},{"pid":1,"tid":0,"id":149,"name":"task: renderscript compile","args":{"span_id":"149","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468042000,"dur":46000},{"pid":1,"tid":0,"id":150,"name":"task: generate res values","args":{"span_id":"150","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468089000,"dur":2000},{"pid":1,"tid":0,"id":151,"name":"task: unknown task type","args":{"span_id":"151","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468092000,"dur":100},{"pid":1,"tid":0,"id":152,"name":"task: renderscript compile","args":{"span_id":"152","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468098000,"dur":46000},{"pid":1,"tid":0,"id":153,"name":"task: generate res values","args":{"span_id":"153","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468145000,"dur":6000},{"pid":1,"tid":0,"id":154,"name":"task: unknown task type","args":{"span_id":"154","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468152000,"dur":100},{"pid":1,"tid":0,"id":155,"name":"task: merge resources","args":{"span_id":"155","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468154000,"dur":72000},{"pid":1,"tid":0,"id":156,"name":"task: renderscript compile","args":{"span_id":"156","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 54\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468227000,"dur":162000},{"pid":1,"tid":0,"id":157,"name":"task: generate res values","args":{"span_id":"157","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 26\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468391000,"dur":2000},{"pid":1,"tid":0,"id":158,"name":"task: unknown task type","args":{"span_id":"158","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468394000,"dur":1000},{"pid":1,"tid":0,"id":159,"name":"task: merge resources","args":{"span_id":"159","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468397000,"dur":9000},{"pid":1,"tid":0,"id":160,"name":"task: merge resources","args":{"span_id":"160","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 40\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468408000,"dur":318000},{"pid":1,"tid":0,"id":161,"name":"task: splits discovery","args":{"span_id":"161","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 87\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468727000,"dur":3000},{"pid":1,"tid":0,"id":162,"name":"task: platform attr extractor","args":{"span_id":"162","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468731000,"dur":3000},{"pid":1,"tid":0,"id":163,"name":"task: platform attr extractor","args":{"span_id":"163","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 109\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468736000,"dur":2000},{"pid":1,"tid":0,"id":164,"name":"task: process android resources","args":{"span_id":"164","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468740000,"dur":38000},{"pid":1,"tid":0,"id":165,"name":"task: process android resources","args":{"span_id":"165","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468780000,"dur":65000},{"pid":1,"tid":0,"id":166,"name":"task: process android resources","args":{"span_id":"166","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 51\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468847000,"dur":77000},{"pid":1,"tid":0,"id":167,"name":"task: package application","args":{"span_id":"167","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468926000,"dur":36000},{"pid":1,"tid":0,"id":168,"name":"task: aidl compile","args":{"span_id":"168","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468965000,"dur":15000},{"pid":1,"tid":0,"id":169,"name":"task: aidl compile","args":{"span_id":"169","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062468982000,"dur":19000},{"pid":1,"tid":0,"id":170,"name":"task: aidl compile","args":{"span_id":"170","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 1\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469004000,"dur":28000},{"pid":1,"tid":0,"id":171,"name":"task: generate build config","args":{"span_id":"171","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469033000,"dur":5000},{"pid":1,"tid":0,"id":172,"name":"task: prepare lint jar","args":{"span_id":"172","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469040000,"dur":5000},{"pid":1,"tid":0,"id":173,"name":"task: unknown task type","args":{"span_id":"173","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469046000,"dur":100},{"pid":1,"tid":0,"id":174,"name":"task: generate build config","args":{"span_id":"174","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469047000,"dur":3000},{"pid":1,"tid":0,"id":175,"name":"task: prepare lint jar","args":{"span_id":"175","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469051000,"dur":2000},{"pid":1,"tid":0,"id":176,"name":"task: unknown task type","args":{"span_id":"176","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469054000,"dur":100},{"pid":1,"tid":0,"id":177,"name":"task: unknown task type","args":{"span_id":"177","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469055000,"dur":36000},{"pid":1,"tid":0,"id":178,"name":"task: unknown task type","args":{"span_id":"178","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469098000,"dur":19000},{"pid":1,"tid":0,"id":179,"name":"task: generate build config","args":{"span_id":"179","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 24\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469119000,"dur":3000},{"pid":1,"tid":0,"id":180,"name":"task: prepare lint jar","args":{"span_id":"180","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 119\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469123000,"dur":3000},{"pid":1,"tid":0,"id":181,"name":"task: unknown task type","args":{"span_id":"181","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469127000,"dur":100},{"pid":1,"tid":0,"id":182,"name":"task: java pre compile","args":{"span_id":"182","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469128000,"dur":24000},{"pid":1,"tid":0,"id":183,"name":"task: android java compile","args":{"span_id":"183","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469156000,"dur":52000},{"pid":1,"tid":0,"id":184,"name":"task: unknown task type","args":{"span_id":"184","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469209000,"dur":1000},{"pid":1,"tid":0,"id":185,"name":"task: transform","args":{"span_id":"185","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469214000,"dur":9000},{"pid":1,"tid":0,"id":186,"name":"task: java pre compile","args":{"span_id":"186","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469224000,"dur":92000},{"pid":1,"tid":0,"id":187,"name":"task: android java compile","args":{"span_id":"187","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469319000,"dur":130000},{"pid":1,"tid":0,"id":188,"name":"task: unknown task type","args":{"span_id":"188","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469450000,"dur":1000},{"pid":1,"tid":0,"id":189,"name":"task: transform","args":{"span_id":"189","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469452000,"dur":7000},{"pid":1,"tid":0,"id":190,"name":"task: java pre compile","args":{"span_id":"190","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 76\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469460000,"dur":29000},{"pid":1,"tid":0,"id":191,"name":"task: android java compile","args":{"span_id":"191","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 3\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469490000,"dur":153000},{"pid":1,"tid":0,"id":192,"name":"task: check manifest in instant run mode","args":{"span_id":"192","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 72\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469644000,"dur":37000},{"pid":1,"tid":0,"id":193,"name":"task: transform","args":{"span_id":"193","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469682000,"dur":58000},{"pid":1,"tid":0,"id":194,"name":"task: transform","args":{"span_id":"194","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469741000,"dur":158000},{"pid":1,"tid":0,"id":195,"name":"task: transform","args":{"span_id":"195","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469900000,"dur":29000},{"pid":1,"tid":0,"id":196,"name":"task: ndk compile","args":{"span_id":"196","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469933000,"dur":4000},{"pid":1,"tid":0,"id":197,"name":"task: merge source set folders","args":{"span_id":"197","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469938000,"dur":6000},{"pid":1,"tid":0,"id":198,"name":"task: ndk compile","args":{"span_id":"198","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469947000,"dur":1000},{"pid":1,"tid":0,"id":199,"name":"task: merge source set folders","args":{"span_id":"199","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469949000,"dur":11000},{"pid":1,"tid":0,"id":200,"name":"task: transform","args":{"span_id":"200","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469962000,"dur":8000},{"pid":1,"tid":0,"id":201,"name":"task: transform","args":{"span_id":"201","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469971000,"dur":6000},{"pid":1,"tid":0,"id":202,"name":"task: ndk compile","args":{"span_id":"202","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 43\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062469978000,"dur":1000},{"pid":1,"tid":0,"id":203,"name":"task: merge source set folders","args":{"span_id":"203","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 41\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469980000,"dur":5000},{"pid":1,"tid":0,"id":204,"name":"task: transform","args":{"span_id":"204","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469986000,"dur":9000},{"pid":1,"tid":0,"id":205,"name":"task: transform","args":{"span_id":"205","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: LIBRARY\nmin_sdk_version {\n api_level: 14\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062469997000,"dur":4000},{"pid":1,"tid":0,"id":206,"name":"task: transform","args":{"span_id":"206","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470003000,"dur":86000},{"pid":1,"tid":0,"id":207,"name":"task: unknown task type","args":{"span_id":"207","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062470091000,"dur":1000},{"pid":1,"tid":0,"id":208,"name":"task: transform","args":{"span_id":"208","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470094000,"dur":87000},{"pid":1,"tid":0,"id":209,"name":"task: transform","args":{"span_id":"209","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470183000,"dur":4000},{"pid":1,"tid":0,"id":210,"name":"task: transform","args":{"span_id":"210","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470188000,"dur":232000},{"pid":1,"tid":0,"id":211,"name":"task: transform","args":{"span_id":"211","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470423000,"dur":10000},{"pid":1,"tid":0,"id":212,"name":"task: unknown task type","args":{"span_id":"212","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470434000,"dur":100},{"pid":1,"tid":0,"id":213,"name":"task: pre cold swap","args":{"span_id":"213","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 48\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062470435000,"dur":1000},{"pid":1,"tid":0,"id":214,"name":"task: fast deploy runtime extractor","args":{"span_id":"214","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 21\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470437000,"dur":2000},{"pid":1,"tid":0,"id":215,"name":"task: generate instant run app info","args":{"span_id":"215","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 25\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470440000,"dur":3000},{"pid":1,"tid":0,"id":216,"name":"task: transform","args":{"span_id":"216","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470445000,"dur":246000},{"pid":1,"tid":0,"id":217,"name":"task: transform","args":{"span_id":"217","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470693000,"dur":216000},{"pid":1,"tid":0,"id":218,"name":"task: transform","args":{"span_id":"218","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470911000,"dur":34000},{"pid":1,"tid":0,"id":219,"name":"task: transform","args":{"span_id":"219","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470946000,"dur":40000},{"pid":1,"tid":0,"id":220,"name":"task: validate signing","args":{"span_id":"220","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 67\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062470987000,"dur":1000},{"pid":1,"tid":0,"id":221,"name":"task: transform","args":{"span_id":"221","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470989000,"dur":4000},{"pid":1,"tid":0,"id":222,"name":"task: transform","args":{"span_id":"222","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 65\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062470994000,"dur":7000},{"pid":1,"tid":0,"id":223,"name":"task: package application","args":{"span_id":"223","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 45\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062471004000,"dur":32000},{"pid":1,"tid":0,"id":224,"name":"task: build info writer","args":{"span_id":"224","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","variant":"id: 1\nis_debug: true\nminify_enabled: false\nuse_multidex: false\nuse_legacy_multidex: false\nvariant_type: APPLICATION\nmin_sdk_version {\n api_level: 15\n}\ntarget_sdk_version {\n api_level: 26\n}\ndex_builder: DX_DEXER\ndex_merger: DX_MERGER\n","task":"type: 70\ndid_work: true\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062471036000,"dur":31000},{"pid":1,"tid":0,"id":225,"name":"task: unknown task type","args":{"span_id":"225","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: true\nup_to_date: true\nfailed: false\n"},"ph":"X","ts":1548062471068000,"dur":1000},{"pid":1,"tid":0,"id":226,"name":"task: unknown task type","args":{"span_id":"226","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n","task":"type: 0\ndid_work: false\nskipped: false\nup_to_date: false\nfailed: false\n"},"ph":"X","ts":1548062471070000,"dur":100},{"pid":1,"tid":1,"id":227,"name":"base plugin build finished","args":{"span_id":"227","project":"id: 1\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: APPLICATION\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062471336000,"dur":34000},{"pid":1,"tid":1,"id":228,"name":"base plugin build finished","args":{"span_id":"228","project":"id: 2\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062471370000,"dur":1000},{"pid":1,"tid":1,"id":229,"name":"base plugin build finished","args":{"span_id":"229","project":"id: 3\nandroid_plugin_version: \"3.0.1\"\nandroid_plugin: LIBRARY\nplugin_generation: FIRST\nbuild_tools_version: \"26.0.2\"\ncompile_sdk: \"android-26\"\nsplits {\n}\n"},"ph":"X","ts":1548062471371000,"dur":1000}] \ No newline at end of file diff --git a/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.rawproto b/AndroidLearnProject/build/android-profile/profile-2019-01-21-17-21-11-796.rawproto deleted file mode 100644 index b128febece0a022831507601b4ae999d644d7250..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13952 zcmbuFdvq05md5W%0vsY>2}#_jT&_%ODkw1tF(HnlD0a7_f{aZ2VC=R7MCh08&@*kf zJu`g?uK?1q0lamwE9=|O)v0q}+E6ES0^ckJ? z+pNq#WIYv~@?fI%?_o*FgM-2PCGB2peB+nCQNGbH@yM?2`X=I)5D{R#+oz=A|EE0E zoil?4e5NnS*N+X0;9Y(l!SDDJ3o?c%!tk|-o{G+VZN%u`|7t{^l(gq8>xh5E`qtL1 zU38Q6Bb-TV)=Jhs%(}Jf-+UA%e^+~bLZ4n~yll&vRHJG8irZmTMj*ELZPB+39ugQb zJoArPuZ_$yqTu=7U86f;Xkg~(-wb&pE9-TG!Js$$!)KfKSqAAmzh=xpBY*Yrdtuhk z0(ahQ5DEQycWY)ahG7cV$RUl_7cCfM)R&Eqhl1yuJNUrYECr0A!K5uB1>2x}@uYZ| zuVpYrF(@w8Hkcs|8f!NWGKxcQ>1I%<7=-iQ)-_n57?gjiZBXhMTsS_+$Z2|4H-nwh zp#0c-&lg0bq!9a22*G28XVbXPh#0eAIBRxmxCs} z|3dRoX3)2lQ9h;^H06zH*`W2k(4ZO=Y8#wvtHA}uApB9b2{T%#LF=~=-0m%6W3$tlpyVC-)1Erhpf8!V9q!E4@HHTK4P@xbgqEg;K?!?1FX;j!1+0>sPUjV>jv+@wzm~U9)h2k#htM%Cx$W zU1Lw8FbH4MHkhCqT=-HqgNbc52uXwT6?FrQ`sxZ3)@#+EMjGUo)IDKTZry3ZMlFMV zs=;n;gX7X5RQc@_M){OoCT!NqU{kH##+prgerl8-tv6wdmcf_%Y=hvz;M4e9`G~GT zgDL)&1NG$=a%-qS|W_M^HPoR+&V zD4sX#IV1En-a?g@!D(p_e!p^vk+Y@Fgla8=DF^LaXt+4;C8MbF8xwYG87z?oq1=f> zjmpI*bq$s)2BA7M*rSy}STP8OPU#waE)5#$=M6PNd$kR|R1C^W8cnFtx`irf(0Fmx zP@|#xyskm5Vh}!hLDyivVo-cQ+u)Ei2<6odHHsUw4NfZt<<%EWIG|O;^U|Pb;n|@^ zQRrJ;gROP;UML@v|8t{p{}o+>uM~sgMs0(I^>zl~mCIf+n!dTNo551WAUN}euEDg! zb_V%7az`2sACFJa?7}>05USlV(gAXdv$9S6vL!TX@yAGa{SC@CYclWW8_;?Cxwv z^ke;fgP9eMgo|S>@4&K-W~2guZx9# zdW6|Yf>_=W!FMYJNHuSf@i=~q5e?t26mh@V&;bFn5{l!U5WM?|0PW2a9?%)VOah(E zlOE6o!6E_=n5R78Rs?$qM4P8Qz(8<_Kxgxe2i%6>EP*G@vmVeD!Rk*%R^7~V9?%Uz z1%b|HlLy2gs3FkBJnsRq2#ynA=4B6vLvVsXy!pKYZs)fn$Xg{AU&zcxhs1F}5?(FH z0P~^;bVqQNKzs9&2Sj5(mQmfSqs)%7?y>w11Y^R&>U9y1u=)|p@5K0dia#OZk<_OS zMtj&t9Y5F65d=2~7}P);Jc{6N>qJEuHP8nA5xgydXrK)qLy$|LlPMZ#gU1mR5U?9) zg8^P38fb$j5X_Nlhz8o=#|Y+1AR1_cpCBkC5Je5N!A}vakynTY3J}ZFu}|md&Yux| zvg1!;d@WrNBjQnX)ch;PcThZD#M{wP)62LU*3%$-5s62Qvy-1fFuqJw&^l`DcnrTA z){%U3Bpx+(xEp^OLhFV2Zaiut6vC z@FIdM65ymd;3WiCCBR8_z)%F&2t-+v>VW@15ZvHSssmm|Fh&BLR0sSVLAC@qsSfxB zg0T|dQR9GD5R4<>GjUQK@Jkmk>!@)+CW7(O3MbV8!w^g$(9xPy2MkA$E3d#wwLvT& z;`ZrIoIEE!0^{#UCo68BG_M+2Fh?4R{@HtBB!amFeAY=5+201ETwwRl2ERfOqASEn z<6QA;1clN{^v}NHH!cv53g?R7BA8ECL{k6kD}IOI18Iei3g?Q~T)?bHg#&(%U=dxx ztdqt8uOlduK=jXE<3ABBmTQRq*f({~XpEPe^JnYqrlO~oAHlCIHI13LN=QQ{e#;fGQ zqh!1re-=*Cei?=5jIHj${|u)$iOuqu*~R*S^;9(PfZwe7tWWl`Sr7gulx!CKQHLiO zKEUtji2ns{5WmIY>0bUnFj;&qgnG;0hyFe<|6h2EcxUAJ)I_fM{~ydE-ofFD|6gG~ zai8Ef`TKd0!9o&%W8hi9&&M!WM}n>>z}=)~;OE&4sz?y!2s|nH`B(;f-5jv8>OK1T zI0pMj(8Y1^ET339KZkTS^XZGkBK-zd!+1@?~$5xeP9lAkq;iOT5G2DhWC{f{tE?JO)$5_acFG zM-cB7yvtxC39O;__CjnbKcB{6i!1OJ$`-uGU@Hj{oh8z|OH5~QnFLm$=r-^03f^Zx zAGL^5H`{oAo{!BEpNs^oC8(Rq5;GVqCqa8hpe!+y0ey7R+Q`jfu!bC-bR0}K$)0>R z&V%^sBv5EoirT3pQNUo4_$DLZ4uq1#90v5+h}an3Qi=o0&*w5&Mh+dFC6pvWcpD@r zb!+KS`1w2r-&c!6&>fi<-23qJLL3=aKn?$$S1_MJaJO)v+pu=0B3Qs+90~4qvh3@1 zSjgZ*5?BW{wM!9vz~CGS2BLr_LJ=%tP%6Gk2>i$q^zklH#NZeSZgp~CUcq7pmq^gf z$w3h;VepoC-5j{fSwaykWw4k8?l}kEB|c=jsrdc!MN#(+KxxM{9^_-}k*`T0i- zR+EF(EGm?;#K#QQlECT(HA`8d7z;&$R!++0_{boERY~vuwr6eygOennLNz;#S2Fm4 z1XhwX_ezqV;LZ?ld;=tCR)#znNN+ft$6v}$GdUEK=*Wy7a-b)9v-J?=T;&VI+ z#ammkzrD4#lPF>E6$#wOmXbs%gK84=z$9p6C`qitCjtp(SV_=XsU%T`bA3Q;-+LU3 zC*5C3e!iZ;3KBfz2s}yjbU)sxc(D>NTNWI^ev!akVu1HXzh*#hms)OzpC7~@ z`Q%`oBD8lrx8dh?IF=*`I0EJAS&u)sNYK*}{KT8XAqKOLw>VUGyACs$Ljvo$Wvjo{h%7{()#!pE>EZWx~sgV|)3hDUrPbng|x+iUz6 zk;nSKnwgx@H)Z(ntiDP8GP8ycOHCP;nLZ*tGbt@KX+&mP@~gwr(=)Tu`}WJodN5VPkq^zu0Q-`Ibr)FlR^v(D?V+e{L diff --git a/AndroidLearnProject/build/intermediates/proguard-files/proguard-android-optimize.txt-3.0.1 b/AndroidLearnProject/build/intermediates/proguard-files/proguard-android-optimize.txt-3.0.1 deleted file mode 100644 index c189cd2..0000000 --- a/AndroidLearnProject/build/intermediates/proguard-files/proguard-android-optimize.txt-3.0.1 +++ /dev/null @@ -1,89 +0,0 @@ -# This is a configuration file for ProGuard. -# http://proguard.sourceforge.net/index.html#manual/usage.html -# -# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with -# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and -# will be ignored by new version of the Android plugin for Gradle. - -# Optimizations: If you don't want to optimize, use the proguard-android.txt configuration file -# instead of this one, which turns off the optimization flags. -# Adding optimization introduces certain risks, since for example not all optimizations performed by -# ProGuard works on all versions of Dalvik. The following flags turn off various optimizations -# known to have issues, but the list may not be complete or up to date. (The "arithmetic" -# optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test -# thoroughly if you go this route. --optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* --optimizationpasses 5 --allowaccessmodification - --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --verbose - -# Preserve some attributes that may be required for reflection. --keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod - --keep public class com.google.vending.licensing.ILicensingService --keep public class com.android.vending.licensing.ILicensingService --keep public class com.google.android.vending.licensing.ILicensingService --dontnote com.android.vending.licensing.ILicensingService --dontnote com.google.vending.licensing.ILicensingService --dontnote com.google.android.vending.licensing.ILicensingService - -# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native --keepclasseswithmembernames class * { - native ; -} - -# Keep setters in Views so that animations can still work. --keepclassmembers public class * extends android.view.View { - void set*(***); - *** get*(); -} - -# We want to keep methods in Activity that could be used in the XML attribute onClick. --keepclassmembers class * extends android.app.Activity { - public void *(android.view.View); -} - -# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keepclassmembers class * implements android.os.Parcelable { - public static final ** CREATOR; -} - --keepclassmembers class **.R$* { - public static ; -} - -# Preserve annotated Javascript interface methods. --keepclassmembers class * { - @android.webkit.JavascriptInterface ; -} - -# The support libraries contains references to newer platform versions. -# Don't warn about those in case this app is linking against an older -# platform version. We know about them, and they are safe. --dontnote android.support.** --dontwarn android.support.** - -# Understand the @Keep support annotation. --keep class android.support.annotation.Keep - --keep @android.support.annotation.Keep class * {*;} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep (...); -} diff --git a/AndroidLearnProject/build/intermediates/proguard-files/proguard-android.txt-3.0.1 b/AndroidLearnProject/build/intermediates/proguard-files/proguard-android.txt-3.0.1 deleted file mode 100644 index e03d9f1..0000000 --- a/AndroidLearnProject/build/intermediates/proguard-files/proguard-android.txt-3.0.1 +++ /dev/null @@ -1,88 +0,0 @@ -# This is a configuration file for ProGuard. -# http://proguard.sourceforge.net/index.html#manual/usage.html -# -# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with -# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and -# will be ignored by new version of the Android plugin for Gradle. - -# Optimization is turned off by default. Dex does not like code run -# through the ProGuard optimize steps (and performs some -# of these optimizations on its own). -# Note that if you want to enable optimization, you cannot just -# include optimization flags in your own project configuration file; -# instead you will need to point to the -# "proguard-android-optimize.txt" file instead of this one from your -# project.properties file. --dontoptimize - --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --verbose - -# Preserve some attributes that may be required for reflection. --keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod - --keep public class com.google.vending.licensing.ILicensingService --keep public class com.android.vending.licensing.ILicensingService --keep public class com.google.android.vending.licensing.ILicensingService --dontnote com.android.vending.licensing.ILicensingService --dontnote com.google.vending.licensing.ILicensingService --dontnote com.google.android.vending.licensing.ILicensingService - -# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native --keepclasseswithmembernames class * { - native ; -} - -# Keep setters in Views so that animations can still work. --keepclassmembers public class * extends android.view.View { - void set*(***); - *** get*(); -} - -# We want to keep methods in Activity that could be used in the XML attribute onClick. --keepclassmembers class * extends android.app.Activity { - public void *(android.view.View); -} - -# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keepclassmembers class * implements android.os.Parcelable { - public static final ** CREATOR; -} - --keepclassmembers class **.R$* { - public static ; -} - -# Preserve annotated Javascript interface methods. --keepclassmembers class * { - @android.webkit.JavascriptInterface ; -} - -# The support libraries contains references to newer platform versions. -# Don't warn about those in case this app is linking against an older -# platform version. We know about them, and they are safe. --dontnote android.support.** --dontwarn android.support.** - -# Understand the @Keep support annotation. --keep class android.support.annotation.Keep - --keep @android.support.annotation.Keep class * {*;} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep (...); -} diff --git a/AndroidLearnProject/build/intermediates/proguard-files/proguard-defaults.txt-3.0.1 b/AndroidLearnProject/build/intermediates/proguard-files/proguard-defaults.txt-3.0.1 deleted file mode 100644 index 9b7f031..0000000 --- a/AndroidLearnProject/build/intermediates/proguard-files/proguard-defaults.txt-3.0.1 +++ /dev/null @@ -1,89 +0,0 @@ -# This is a configuration file for ProGuard. -# http://proguard.sourceforge.net/index.html#manual/usage.html -# -# Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with -# the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and -# will be ignored by new version of the Android plugin for Gradle. - -# Optimizations can be turned on and off in the 'postprocessing' DSL block. -# The configuration below is applied if optimizations are enabled. -# Adding optimization introduces certain risks, since for example not all optimizations performed by -# ProGuard works on all versions of Dalvik. The following flags turn off various optimizations -# known to have issues, but the list may not be complete or up to date. (The "arithmetic" -# optimization can be used if you are only targeting Android 2.0 or later.) Make sure you test -# thoroughly if you go this route. --optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* --optimizationpasses 5 --allowaccessmodification - --dontusemixedcaseclassnames --dontskipnonpubliclibraryclasses --verbose - -# Preserve some attributes that may be required for reflection. --keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod - --keep public class com.google.vending.licensing.ILicensingService --keep public class com.android.vending.licensing.ILicensingService --keep public class com.google.android.vending.licensing.ILicensingService --dontnote com.android.vending.licensing.ILicensingService --dontnote com.google.vending.licensing.ILicensingService --dontnote com.google.android.vending.licensing.ILicensingService - -# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native --keepclasseswithmembernames class * { - native ; -} - -# Keep setters in Views so that animations can still work. --keepclassmembers public class * extends android.view.View { - void set*(***); - *** get*(); -} - -# We want to keep methods in Activity that could be used in the XML attribute onClick. --keepclassmembers class * extends android.app.Activity { - public void *(android.view.View); -} - -# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keepclassmembers class * implements android.os.Parcelable { - public static final ** CREATOR; -} - --keepclassmembers class **.R$* { - public static ; -} - -# Preserve annotated Javascript interface methods. --keepclassmembers class * { - @android.webkit.JavascriptInterface ; -} - -# The support libraries contains references to newer platform versions. -# Don't warn about those in case this app is linking against an older -# platform version. We know about them, and they are safe. --dontnote android.support.** --dontwarn android.support.** - -# Understand the @Keep support annotation. --keep class android.support.annotation.Keep - --keep @android.support.annotation.Keep class * {*;} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep ; -} - --keepclasseswithmembers class * { - @android.support.annotation.Keep (...); -} diff --git a/AndroidLearnProject/config.gradle b/AndroidLearnProject/config.gradle index 3985664..b339109 100644 --- a/AndroidLearnProject/config.gradle +++ b/AndroidLearnProject/config.gradle @@ -1,10 +1,10 @@ ext { android = [ - compileSdkVersion: 26, - buildToolsVersion: "26.0.2", + compileSdkVersion: 28, + buildToolsVersion: "28.0.2", minSdkVersion : 15, - targetSdkVersion : 26, + targetSdkVersion : 28, versionCode : 101, versionName : "1.0.1" ] @@ -21,6 +21,7 @@ ext { dependencies = [ appcompatV7 : "com.android.support:appcompat-v7:26+", design : "com.android.support:design:26+", + cardview : "com.android.support:cardview-v7:28+", "constraint-layout" : "com.android.support.constraint:constraint-layout:1.1.0", "okhttp3" : "com.squareup.okhttp3:okhttp:3.10.0", diff --git a/AndroidLearnProject/gradle/wrapper/gradle-wrapper.properties b/AndroidLearnProject/gradle/wrapper/gradle-wrapper.properties index 4844b73..1e8eb83 100644 --- a/AndroidLearnProject/gradle/wrapper/gradle-wrapper.properties +++ b/AndroidLearnProject/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/AndroidLearnProject/xskinloader-lib/build.gradle b/AndroidLearnProject/xskinloader-lib/build.gradle index aa692e9..17afece 100644 --- a/AndroidLearnProject/xskinloader-lib/build.gradle +++ b/AndroidLearnProject/xskinloader-lib/build.gradle @@ -25,8 +25,8 @@ android { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) + api fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:26.1.0' + api 'com.android.support:appcompat-v7:26.1.0' } From 6a541174ca2b50d2694c8d1809c9a2c6e3cab20e Mon Sep 17 00:00:00 2001 From: GaoLei Date: Tue, 22 Jan 2019 19:59:12 +0800 Subject: [PATCH 03/38] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/caches/build_file_checksums.ser | Bin 645 -> 645 bytes ...le__android_arch_core_common_1_1_1_jar.xml | 11 + ...adle__android_arch_core_runtime_1_1_1.xml} | 8 +- ...ndroid_arch_lifecycle_common_1_0_3_jar.xml | 11 - ...ndroid_arch_lifecycle_common_1_1_1_jar.xml | 11 + ..._android_arch_lifecycle_livedata_1_1_1.xml | 12 + ...oid_arch_lifecycle_livedata_core_1_1_1.xml | 12 + ..._android_arch_lifecycle_runtime_1_1_1.xml} | 8 +- ...android_arch_lifecycle_viewmodel_1_1_1.xml | 12 + ...upport_animated_vector_drawable_27_0_1.xml | 12 - ...upport_animated_vector_drawable_28_0_0.xml | 10 + ...om_android_support_appcompat_v7_27_0_1.xml | 12 - ...om_android_support_appcompat_v7_28_0_0.xml | 10 + ...oid_support_asynclayoutinflater_28_0_0.xml | 10 + ...android_support_collections_28_0_0_jar.xml | 9 + ...droid_support_coordinatorlayout_28_0_0.xml | 10 + ...m_android_support_cursoradapter_28_0_0.xml | 10 + ..._com_android_support_customview_28_0_0.xml | 10 + ...dle__com_android_support_design_28_0_0.xml | 10 + ...om_android_support_documentfile_28_0_0.xml | 10 + ...om_android_support_drawerlayout_28_0_0.xml | 10 + ...om_android_support_interpolator_28_0_0.xml | 10 + ...dle__com_android_support_loader_28_0_0.xml | 10 + ...d_support_localbroadcastmanager_28_0_0.xml | 10 + ...adle__com_android_support_print_28_0_0.xml | 10 + ...android_support_recyclerview_v7_26_1_0.xml | 12 - ...android_support_recyclerview_v7_28_0_0.xml | 10 + ...droid_support_slidingpanelayout_28_0_0.xml | 10 + ..._android_support_support_compat_27_0_2.xml | 12 - ..._android_support_support_compat_28_0_0.xml | 10 + ...android_support_support_core_ui_27_0_2.xml | 12 - ...android_support_support_core_ui_28_0_0.xml | 10 + ...roid_support_support_core_utils_27_0_2.xml | 12 - ...roid_support_support_core_utils_28_0_0.xml | 10 + ...ndroid_support_support_fragment_27_0_2.xml | 12 - ...ndroid_support_support_fragment_28_0_0.xml | 10 + ...support_support_vector_drawable_27_0_1.xml | 12 - ...support_support_vector_drawable_28_0_0.xml | 10 + ...roid_support_swiperefreshlayout_28_0_0.xml | 10 + ..._com_android_support_transition_26_1_0.xml | 12 - ..._com_android_support_transition_28_0_0.xml | 10 + ...oid_support_versionedparcelable_28_0_0.xml | 10 + ...__com_android_support_viewpager_28_0_0.xml | 10 + AndroidLearnProject/.idea/misc.xml | 2 +- AndroidLearnProject/.idea/workspace.xml | 753 +++++++++--------- .../app/src/main/AndroidManifest.xml | 4 +- .../{learn => code_backup}/MainActivity.java | 0 .../activity/ArticleDetailActivity.java | 0 .../activity/FeedbackActivity.java | 0 .../activity/FontSizeActivity.java | 0 .../activity/KnowledgeChildActivity.java | 0 .../activity/LanguageActivity.java | 0 .../activity/MyCollectActivity.java | 0 .../activity/MyTodoActivity.java | 0 .../activity/RegisterLoginActivity.java | 0 .../activity/SearchResultActivity.java | 0 .../activity/SettingActivity.java | 0 .../activity/SplashActivity.java | 0 .../activity/TodoAddActivity.java | 0 .../activity/TodoEditActivity.java | 0 .../adapter/ArticleQuickAdapter.java | 0 .../adapter/DividerItemDecoration.java | 0 .../adapter/HorizontalPagerAdapter.java | 0 .../adapter/MainTabAdapter.java | 0 .../adapter/ProjectQuickAdapter.java | 0 .../adapter/SearchRecordAdapter.java | 0 .../adapter/TodoQuickAdapter.java | 0 .../fragment/HomeFragment.java | 0 .../fragment/KnowledgeFragment.java | 0 .../fragment/ProjectFragment.java | 0 .../fragment/TodoFragment.java | 0 .../fragment/UserFragment.java | 0 .../fragment/WechatFragment.java | 0 .../fragment/WechatSubFragment.java | 0 .../mcontract/CollectContract.java | 0 .../mcontract/HomeContract.java | 0 .../mcontract/KnowledgeChildContract.java | 0 .../mcontract/KnowledgeContract.java | 0 .../mcontract/MainActivityContract.java | 0 .../mcontract/ProjectContract.java | 0 .../mcontract/RegisterLoginContract.java | 0 .../mcontract/SearchContract.java | 0 .../mcontract/SplashLoginContract.java | 0 .../mcontract/TodoAddContract.java | 0 .../mcontract/TodoContract.java | 0 .../mcontract/TodoEditContract.java | 0 .../mcontract/UserInfoContract.java | 0 .../mcontract/WechatContract.java | 0 .../mcontract/WechatSubContract.java | 0 .../mpresenter/CollectPresenter.java | 0 .../mpresenter/HomePresenter.java | 0 .../mpresenter/KnowledgeChildPresenter.java | 0 .../mpresenter/KnowledgePresenter.java | 0 .../mpresenter/MainActivityPresenter.java | 0 .../mpresenter/ProjectPresenter.java | 0 .../mpresenter/RegisterLoginPresenter.java | 0 .../mpresenter/SearchPresenter.java | 0 .../mpresenter/SplashLoginPresenter.java | 0 .../mpresenter/TodoAddPresenter.java | 0 .../mpresenter/TodoEditPresenter.java | 0 .../mpresenter/TodoPresenter.java | 0 .../mpresenter/UserInfoPresenter.java | 0 .../mpresenter/WechatPresenter.java | 0 .../mpresenter/WechatSubPresenter.java | 0 .../view/CustomViewPager.java | 0 .../view/SearchViewUtils.java | 0 .../view/fontsliderbar/Bar.java | 0 .../view/fontsliderbar/FontSliderBar.java | 0 .../view/fontsliderbar/Thumb.java | 0 .../java/com/android/learn/MainActivity.kt | 142 ++-- .../src/main/res/mipmap-xhdpi/app_icon.png | Bin 100542 -> 121539 bytes .../retrofit/interceptor/SignInterceptor.java | 2 +- .../base/view/BottomNavigationViewHelper.java | 39 - AndroidLearnProject/build.gradle | 4 +- AndroidLearnProject/config.gradle | 10 +- 115 files changed, 794 insertions(+), 604 deletions(-) create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_common_1_1_1_jar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_design_26_1_0.xml => Gradle__android_arch_core_runtime_1_1_1.xml} (53%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_0_3_jar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_lifecycle_runtime_1_0_3.xml => Gradle__android_arch_lifecycle_runtime_1_1_1.xml} (52%) create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_27_0_1.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_27_0_1.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_26_1_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_27_0_2.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_27_0_2.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_27_0_2.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_27_0_2.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_27_0_1.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_26_1_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml rename AndroidLearnProject/app/src/main/{learn => code_backup}/MainActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/ArticleDetailActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/FeedbackActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/FontSizeActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/KnowledgeChildActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/LanguageActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/MyCollectActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/MyTodoActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/RegisterLoginActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/SearchResultActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/SettingActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/SplashActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/TodoAddActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/activity/TodoEditActivity.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/ArticleQuickAdapter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/DividerItemDecoration.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/HorizontalPagerAdapter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/MainTabAdapter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/ProjectQuickAdapter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/SearchRecordAdapter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/adapter/TodoQuickAdapter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/HomeFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/KnowledgeFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/ProjectFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/TodoFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/UserFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/WechatFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/fragment/WechatSubFragment.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/CollectContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/HomeContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/KnowledgeChildContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/KnowledgeContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/MainActivityContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/ProjectContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/RegisterLoginContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/SearchContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/SplashLoginContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/TodoAddContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/TodoContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/TodoEditContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/UserInfoContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/WechatContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mcontract/WechatSubContract.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/CollectPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/HomePresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/KnowledgeChildPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/KnowledgePresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/MainActivityPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/ProjectPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/RegisterLoginPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/SearchPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/SplashLoginPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/TodoAddPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/TodoEditPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/TodoPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/UserInfoPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/WechatPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/mpresenter/WechatSubPresenter.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/view/CustomViewPager.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/view/SearchViewUtils.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/view/fontsliderbar/Bar.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/view/fontsliderbar/FontSliderBar.java (100%) rename AndroidLearnProject/app/src/main/{learn => code_backup}/view/fontsliderbar/Thumb.java (100%) delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/BottomNavigationViewHelper.java diff --git a/AndroidLearnProject/.idea/caches/build_file_checksums.ser b/AndroidLearnProject/.idea/caches/build_file_checksums.ser index 93dbd0e9e30acc11bc98896aaeff2f7fa96798a2..f3f91c78f3bb9ca192f5c50db7a934b638298cb2 100644 GIT binary patch delta 35 tcmV+;0NnqD1%(BWnFFqmnz5V=0T4k{u|}$$#NP#4V8B_4mhO|d0nG({5B2~6 delta 35 rcmZo=ZDpM>lX=!ow~cdn7zH?lH>PAR$TaJ%Efq;z(!(-&2jf`) + + + + + + + + + +
\ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1.xml similarity index 53% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1.xml index cdc410f..90af751 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1.xml @@ -1,12 +1,12 @@ - + - - + + - + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_0_3_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_0_3_jar.xml deleted file mode 100644 index b112cae..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_0_3_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml new file mode 100644 index 0000000..27b1867 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_1_jar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml new file mode 100644 index 0000000..2f8c8df --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml new file mode 100644 index 0000000..572a9d3 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_3.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1.xml similarity index 52% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_3.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1.xml index 4facbde..dcb5fb9 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_3.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1.xml @@ -1,12 +1,12 @@ - + - - + + - + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml new file mode 100644 index 0000000..d8250df --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_27_0_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_27_0_1.xml deleted file mode 100644 index c9d2b7e..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_27_0_1.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml new file mode 100644 index 0000000..77ee928 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_27_0_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_27_0_1.xml deleted file mode 100644 index 7da26ac..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_27_0_1.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml new file mode 100644 index 0000000..a066c41 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml new file mode 100644 index 0000000..cc98d32 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml new file mode 100644 index 0000000..80e4d73 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_collections_28_0_0_jar.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml new file mode 100644 index 0000000..0d412ea --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml new file mode 100644 index 0000000..1b65eb0 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml new file mode 100644 index 0000000..847c43e --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml new file mode 100644 index 0000000..f738ff3 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml new file mode 100644 index 0000000..480bea3 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml new file mode 100644 index 0000000..39d421e --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml new file mode 100644 index 0000000..fb0de34 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml new file mode 100644 index 0000000..529c721 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml new file mode 100644 index 0000000..2f80c0c --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml new file mode 100644 index 0000000..61508cd --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_26_1_0.xml deleted file mode 100644 index 0e576e5..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_26_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml new file mode 100644 index 0000000..31b0f5b --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml new file mode 100644 index 0000000..b309125 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_27_0_2.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_27_0_2.xml deleted file mode 100644 index 98fac6a..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml new file mode 100644 index 0000000..1b5f868 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_27_0_2.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_27_0_2.xml deleted file mode 100644 index 4edd11c..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml new file mode 100644 index 0000000..1f2f16f --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_27_0_2.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_27_0_2.xml deleted file mode 100644 index 54a6d1e..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml new file mode 100644 index 0000000..1a9ec3c --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_27_0_2.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_27_0_2.xml deleted file mode 100644 index d79ec29..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml new file mode 100644 index 0000000..59f9bc4 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_27_0_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_27_0_1.xml deleted file mode 100644 index 311e6f5..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_27_0_1.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml new file mode 100644 index 0000000..529161d --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml new file mode 100644 index 0000000..c46e74a --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_26_1_0.xml deleted file mode 100644 index d1637f3..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_26_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml new file mode 100644 index 0000000..a45bc73 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml new file mode 100644 index 0000000..3ca25e0 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml new file mode 100644 index 0000000..2268fd1 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/misc.xml b/AndroidLearnProject/.idea/misc.xml index 99ed2ed..c24c0fc 100644 --- a/AndroidLearnProject/.idea/misc.xml +++ b/AndroidLearnProject/.idea/misc.xml @@ -25,7 +25,7 @@ - + diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index ec32e0c..244900f 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -12,121 +12,121 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 反馈 getLocales language "language" @@ -276,8 +293,9 @@ kotlin initData r.layout - annotationProcessor viewPager + ? = null + annotationProcessor getString @@ -10746,7 +10764,6 @@ - @@ -10852,7 +10870,7 @@ - + @@ -10878,16 +10896,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10895,6 +10981,10 @@ + + + + @@ -10915,9 +11005,9 @@ - @@ -11022,7 +10976,7 @@ - + @@ -11332,42 +11286,67 @@ - + - - - - + - - - - - - + - - + - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + @@ -11450,164 +11429,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -11646,7 +11501,6 @@ - @@ -11696,7 +11550,6 @@ - @@ -11712,20 +11565,6 @@ - - - - - - - - - - - - - - @@ -11758,14 +11597,6 @@ - - - - - - - - @@ -11777,7 +11608,6 @@ - @@ -11794,7 +11624,6 @@ - @@ -11802,7 +11631,6 @@ - @@ -11810,9 +11638,6 @@ - - - @@ -11827,20 +11652,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java new file mode 100644 index 0000000..65f7ae7 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java @@ -0,0 +1,242 @@ +package com.android.learn.base.activity; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.drawable.ColorDrawable; +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.ColorInt; +import android.support.annotation.IntRange; +import android.support.annotation.Nullable; +import android.view.View; + +import com.android.learn.base.application.CustomApplication; +import com.android.learn.base.utils.ExitAppUtils; +import com.android.learn.base.utils.LogUtil; +import com.android.learn.base.utils.SPUtils; +import com.gaolei.basemodule.R; +import com.jaeger.library.StatusBarUtil; +import com.umeng.analytics.MobclickAgent; +import com.wind.me.xskinloader.SkinInflaterFactory; +import com.wind.me.xskinloader.SkinManager; +import com.wind.me.xskinloader.util.AssetFileUtils; + +import java.io.File; + +import butterknife.ButterKnife; +import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper; + + +/** + * Created by gaolei on 2018/4/26. + */ + +public abstract class BaseActivity extends BasePermisssionActivity implements View.OnClickListener, BGASwipeBackHelper.Delegate { + + Boolean isNightMode; + + String TAG = "BaseActivity"; + protected BGASwipeBackHelper mSwipeBackHelper; + + protected void onCreate(@Nullable Bundle savedInstanceState) { + +// 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回」 + // 在 super.onCreate(savedInstanceState) 之前调用该方法 + initSwipeBackFinish(); + super.onCreate(savedInstanceState); + SkinInflaterFactory.setFactory(this); + setContentView(getLayoutId()); + ButterKnife.bind(this); + setStatusBar(); + ExitAppUtils.getInstance().addActivity(this); + + SkinManager.get().setWindowStatusBarColor(this.getWindow(), R.color.status_bar_color); + + Bundle bundle = getIntent().getExtras(); + if (bundle == null) { + bundle = savedInstanceState; + } + initData(bundle); + + } + + + protected abstract int getLayoutId(); + + protected abstract void initData(Bundle bundle); + + @Override + public void onClick(View v) { + if (v.getId() == R.id.iv_back) { + finish(); + } + } + + protected void onRestart() { + super.onRestart(); + } + + protected void onResume() { + super.onResume(); + MobclickAgent.onResume(this); +// context = this; + LogUtil.d(TAG, "BaseActivity ----onResume:" + getClass().getName().toString()); + } + + + protected void onPause() { + super.onPause(); + MobclickAgent.onPause(this); + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + + } + + @Override + protected void onStop() { + super.onStop(); + } + + protected void onDestroy() { + super.onDestroy(); + ExitAppUtils.getInstance().delActivity(this); + LogUtil.d(TAG, "BaseActivity ----onDestroy:" + getClass().getName().toString()); + } + + public void useNightMode(boolean isNight) { + + if (isNight) { + changeSkin(); + + } else { + + restoreDefaultSkin(); + } + } + + //重写字体缩放比例 api>25 + @Override + protected void attachBaseContext(Context newBase) { + + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { + final Resources res = newBase.getResources(); + final Configuration config = res.getConfiguration(); + config.fontScale = CustomApplication.getInstance().getFontScale();//1 设置正常字体大小的倍数 + final Context newContext = newBase.createConfigurationContext(config); + super.attachBaseContext(newContext); + } else { + super.attachBaseContext(newBase); + } + } + + //重写字体缩放比例 api<25 + @Override + public Resources getResources() { + Resources res = super.getResources(); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) { + Configuration config = res.getConfiguration(); + config.fontScale = CustomApplication.getInstance().getFontScale();//1 设置正常字体大小的倍数 + res.updateConfiguration(config, res.getDisplayMetrics()); + } + return res; + } + + private void changeSkin() { + //将assets目录下的皮肤文件拷贝到data/data/.../cache目录下 + String saveDir = getCacheDir().getAbsolutePath() + "/skins"; + String savefileName = "/skin1.skin"; + String asset_dir = "skins/xskinloader-skin-apk-debug.apk"; + File file = new File(saveDir + File.separator + savefileName); +// if (!file.exists()) { + AssetFileUtils.copyAssetFile(this, asset_dir, saveDir, savefileName); +// } + SkinManager.get().loadNewSkin(file.getAbsolutePath()); + } + + private void restoreDefaultSkin() { + SkinManager.get().restoreToDefaultSkin(); + } + + + /** + * 初始化滑动返回。在 super.onCreate(savedInstanceState) 之前调用该方法 + */ + private void initSwipeBackFinish() { + mSwipeBackHelper = new BGASwipeBackHelper(this, this); + + // 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回」 + // 下面几项可以不配置,这里只是为了讲述接口用法。 + + // 设置滑动返回是否可用。默认值为 true + mSwipeBackHelper.setSwipeBackEnable(true); + // 设置是否仅仅跟踪左侧边缘的滑动返回。默认值为 true + mSwipeBackHelper.setIsOnlyTrackingLeftEdge(false); + // 设置是否是微信滑动返回样式。默认值为 true + mSwipeBackHelper.setIsWeChatStyle(true); + // 设置阴影资源 id。默认值为 R.drawable.bga_sbl_shadow + mSwipeBackHelper.setShadowResId(R.drawable.bga_sbl_shadow); + // 设置是否显示滑动返回的阴影效果。默认值为 true + mSwipeBackHelper.setIsNeedShowShadow(true); + // 设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 true + mSwipeBackHelper.setIsShadowAlphaGradient(true); + // 设置触发释放后自动滑动返回的阈值,默认值为 0.3f + mSwipeBackHelper.setSwipeBackThreshold(0.3f); + // 设置底部导航条是否悬浮在内容上,默认值为 false + mSwipeBackHelper.setIsNavigationBarOverlap(false); + } + + /** + * 是否支持滑动返回。这里在父类中默认返回 true 来支持滑动返回,如果某个界面不想支持滑动返回则重写该方法返回 false 即可 + * + * @return + */ + @Override + public boolean isSupportSwipeBack() { + return true; + } + + /** + * 正在滑动返回 + * + * @param slideOffset 从 0 到 1 + */ + @Override + public void onSwipeBackLayoutSlide(float slideOffset) { + } + + /** + * 没达到滑动返回的阈值,取消滑动返回动作,回到默认状态 + */ + @Override + public void onSwipeBackLayoutCancel() { + } + + /** + * 滑动返回执行完毕,销毁当前 Activity + */ + @Override + public void onSwipeBackLayoutExecuted() { + mSwipeBackHelper.swipeBackward(); + } + + @Override + public void onBackPressed() { + // 正在滑动返回的时候取消返回按钮事件 + if (mSwipeBackHelper.isSliding()) { + return; + } + mSwipeBackHelper.backward(); + } + + protected void setStatusBar() { + Boolean isNightMode = (Boolean) SPUtils.getParam(this, "nightMode", new Boolean(false)); + if (isNightMode) { + StatusBarUtil.setColorForSwipeBack(this, getResources().getColor(R.color.app_color_night), 0); + } else + StatusBarUtil.setColorForSwipeBack(this, getResources().getColor(R.color.app_color), 0); + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java new file mode 100644 index 0000000..8f8f9e8 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java @@ -0,0 +1,40 @@ +package com.android.learn.base.activity; + +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.Nullable; + +import com.android.learn.base.mpresenter.BasePresenter; +import com.android.learn.base.utils.LanguageUtil; + + +public abstract class BaseMvpActivity< P extends BasePresenter> extends BaseActivity { + + public P mPresenter; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mPresenter = initPresenter(); + if(mPresenter!=null) + mPresenter.attach(this); + loadData(); + } + + @Override + protected void onDestroy() { + if(mPresenter!=null) + mPresenter.dettach(); + super.onDestroy(); + } + + @Override + protected void attachBaseContext(Context newBase) { + //语言切换 + super.attachBaseContext(LanguageUtil.setLocal(newBase)); + } + //实例presenter + public abstract P initPresenter(); + //加载数据 + protected abstract void loadData(); +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java new file mode 100644 index 0000000..9d0c0b2 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java @@ -0,0 +1,88 @@ +package com.android.learn.base.activity; + +import android.app.Activity; +import android.content.Context; +import android.content.pm.PackageManager; +import android.support.annotation.NonNull; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.FragmentActivity; +import android.support.v4.content.ContextCompat; + +import com.android.learn.base.utils.PermissionUtil; + +import static com.android.learn.base.utils.PermissionUtil.PERMISSION_CODE; + + +/** + * Created by gaolei on 2018/4/26. + */ + +public class BasePermisssionActivity extends FragmentActivity { + private PermissionUtil.RequestPermissionCallBack mRequestPermissionCallBack; + + + /** + * 发起权限请求 + * + * @param context + * @param permissions + * @param callback + */ + + public void requestPermission(final Context context, + PermissionUtil.RequestPermissionCallBack callback, final String... permissions) { + this.mRequestPermissionCallBack = callback; + + //如果所有权限都已授权,则直接返回授权成功,只要有一项未授权,则发起权限请求 + boolean isAllGranted = true; + for (String permission : permissions) { + if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) { + isAllGranted = false; + ActivityCompat.requestPermissions(((Activity) context), permissions, PERMISSION_CODE); + } + } + if (isAllGranted) { + mRequestPermissionCallBack.granted(); + } + } + + /** + * 权限请求结果回调 + * + * @param requestCode + * @param permissions + * @param grantResults + */ + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull final String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + boolean hasAllGranted = true; + + switch (requestCode) { + case PERMISSION_CODE: { + for (int i = 0; i < grantResults.length; ++i) { + if (grantResults[i] == PackageManager.PERMISSION_DENIED) { + hasAllGranted = false; + //在用户已经拒绝授权的情况下,如果shouldShowRequestPermissionRationale返回false则 + // 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权 + if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) { + PermissionUtil.requestForeverDenyDialog(BasePermisssionActivity.this, permissions); + + } else { + PermissionUtil.requestDenyDialog(BasePermisssionActivity.this, permissions); + + //用户拒绝权限请求,但未选中“不再提示”选项 + } + mRequestPermissionCallBack.denied(); + } + } + if (grantResults.length > 0 && hasAllGranted) { + mRequestPermissionCallBack.granted(); + } + } + } + } + + + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java new file mode 100644 index 0000000..4ad8d35 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java @@ -0,0 +1,142 @@ +package com.android.learn.base.application; + +import android.app.Application; +import android.content.Context; +import android.content.res.Configuration; +import android.net.ConnectivityManager; +import android.util.TypedValue; +import android.view.LayoutInflater; + +import com.android.learn.base.utils.LanguageUtil; +import com.android.learn.base.utils.SPUtils; +import com.android.learn.base.xskin.ExtraAttrRegister; +import com.gaolei.basemodule.R; +import com.iflytek.cloud.SpeechConstant; +import com.iflytek.cloud.SpeechUtility; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreater; +import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator; +import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreater; +import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator; +import com.scwang.smartrefresh.layout.api.RefreshFooter; +import com.scwang.smartrefresh.layout.api.RefreshHeader; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.footer.ClassicsFooter; +import com.scwang.smartrefresh.layout.header.ClassicsHeader; +import com.umeng.analytics.MobclickAgent; +import com.umeng.commonsdk.UMConfigure; +import com.wind.me.xskinloader.SkinInflaterFactory; +import com.wind.me.xskinloader.SkinManager; + +import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper; + + +public class CustomApplication extends Application { + public static ConnectivityManager connectivityManager; + public static Context context; + private static CustomApplication instance; + + @Override + public void onCreate() { + super.onCreate(); + connectivityManager = (ConnectivityManager) getApplicationContext() + .getSystemService(Context.CONNECTIVITY_SERVICE); + context = this; + instance = this; + // LeakCanary.install(this); + // BlockCanary.install(this, new AppContext()).start(); + + //初始化友盟 + UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, ""); + //初始化换肤 + SkinInflaterFactory.setFactory(LayoutInflater.from(this)); // for skin change + SkinManager.get().init(this); + //扩展换肤属性和style中的换肤属性 + ExtraAttrRegister.init(); + //初始化讯飞语言识别 + SpeechUtility.createUtility(this, "appid=" + "5c22ed2f"); + /** + * 必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回 + * 第一个参数:应用程序上下文 + * 第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的 View 的 class 添加到该集合中,目前在库中已经添加了 WebView 和 SurfaceView + */ + // + BGASwipeBackHelper.init(this, null); + + } + + public static CustomApplication getInstance() { + return instance; + } +// public class AppContext extends BlockCanaryContext { +// private static final String TAG = "AppContext"; +// +// @Override +// public String provideQualifier() { +// String qualifier = ""; +// try { +// PackageInfo info = getApplicationContext().getPackageManager() +// .getPackageInfo(getApplicationContext().getPackageName(), 0); +// qualifier += info.versionCode + "_" + info.versionName + "_YYB"; +// } catch (PackageManager.NameNotFoundException e) { +// Log.e(TAG, "provideQualifier exception", e); +// } +// return qualifier; +// } +// +// @Override +// public int provideBlockThreshold() { +// return 1000; +// } +// +// @Override +// public boolean displayNotification() { +// return BuildConfig.DEBUG; +// } +// +// @Override +// public boolean stopWhenDebugging() { +// return false; +// } +// } + + /** + * @return 获取字体缩放比例 + */ + public float getFontScale() { + int currentIndex = (Integer) SPUtils.getParam(this, "currentIndex", 1); + return 1 + currentIndex * 0.1f; + } + + //static 代码段可以防止内存泄露 + static { + //设置全局的Header构建器 + SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() { + @Override + public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { +// layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色 + ClassicsHeader header = new ClassicsHeader(context);//指定为经典Header,默认是 贝塞尔雷达Header + header.setTextSizeTitle(14);//设置标题文字大小(sp单位) + return header;//.setTimeFormat(new DynamicTimeFormat("更新于 %s")); + } + }); + //设置全局的Footer构建器 + SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() { + @Override + public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { + ClassicsFooter footer = new ClassicsFooter(context); //指定为经典Footer,默认是 BallPulseFooter + footer.setTextSizeTitle(14);//设置标题文字大小(sp单位) + + return footer; + } + }); + } + +// @Override +// protected void attachBaseContext(Context newBase) { +// //语言切换 +// super.attachBaseContext(LanguageUtil.setLocal(newBase)); +// } + + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java new file mode 100644 index 0000000..1a3e22d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java @@ -0,0 +1,162 @@ +package com.android.learn.base.colorful; + +import java.util.HashSet; +import java.util.Set; + +import android.app.Activity; +import android.content.res.Resources.Theme; +import android.support.v4.app.Fragment; +import android.view.View; +import android.widget.TextView; + +import com.android.learn.base.colorful.setter.TextColorSetter; +import com.android.learn.base.colorful.setter.ViewBackgroundColorSetter; +import com.android.learn.base.colorful.setter.ViewBackgroundDrawableSetter; +import com.android.learn.base.colorful.setter.ViewSetter; + + +/** + * 主题切换控制类 + * + * @author mrsimple + * + */ +public final class Colorful { + /** + * Colorful Builder + */ + Builder mBuilder; + + /** + * private constructor + * + * @param builder + */ + private Colorful(Builder builder) { + mBuilder = builder; + } + + /** + * 设置新的主题 + * + * @param newTheme + */ + public void setTheme(int newTheme) { + mBuilder.setTheme(newTheme); + } + + /** + * + * 构建Colorful的Builder对象 + * + * @author mrsimple + * + */ + public static class Builder { + /** + * 存储了视图和属性资源id的关系表 + */ + Set mElements = new HashSet(); + /** + * 目标Activity + */ + Activity mActivity; + + /** + * @param activity + */ + public Builder(Activity activity) { + mActivity = activity; + } + + /** + * + * @param fragment + */ + public Builder(Fragment fragment) { + mActivity = fragment.getActivity(); + } + + private View findViewById(int viewId) { + return mActivity.findViewById(viewId); + } + + /** + * 将View id与存储该view背景色的属性进行绑定 + * + * @param viewId + * 控件id + * @param colorId + * 颜色属性id + * @return + */ + public Builder backgroundColor(int viewId, int colorId) { + mElements.add(new ViewBackgroundColorSetter(findViewById(viewId), + colorId)); + return this; + } + + + public Builder backgroundDrawable(int viewId, int drawableId) { + mElements.add(new ViewBackgroundDrawableSetter( + findViewById(viewId), drawableId)); + return this; + } + + /** + * 将TextView id与存储该TextView文本颜色的属性进行绑定 + * + * @param viewId + * TextView或者TextView子类控件的id + * @param colorId + * 颜色属性id + * @return + */ + public Builder textColor(int viewId, int colorId) { + TextView textView = (TextView) findViewById(viewId); + mElements.add(new TextColorSetter(textView, colorId)); + return this; + } + + /** + * 用户手动构造并且添加Setter + * + * @param setter + * 用户自定义的Setter + * @return + */ + public Builder setter(ViewSetter setter) { + mElements.add(setter); + return this; + } + + /** + * 设置新的主题 + * + * @param newTheme + */ + protected void setTheme(int newTheme) { + mActivity.setTheme(newTheme); + makeChange(newTheme); + } + + /** + * 修改各个视图绑定的属性 + */ + private void makeChange(int themeId) { + Theme curTheme = mActivity.getTheme(); + for (ViewSetter setter : mElements) { + setter.setValue(curTheme, themeId); + } + } + + /** + * 创建Colorful对象 + * + * @return + */ + public Colorful create() { + return new Colorful(this); + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java new file mode 100644 index 0000000..244779e --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java @@ -0,0 +1,28 @@ +package com.android.learn.base.colorful.setter; + +import android.content.res.Resources.Theme; +import android.widget.TextView; +/** + * TextView 文本颜色Setter + * @author mrsimple + * + */ +public class TextColorSetter extends ViewSetter { + + public TextColorSetter(TextView textView, int resId) { + super(textView, resId); + } + + public TextColorSetter(int viewId, int resId) { + super(viewId, resId); + } + + @Override + public void setValue(Theme newTheme, int themeId) { + if (mView == null) { + return; + } + ((TextView) mView).setTextColor(getColor(newTheme)); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java new file mode 100644 index 0000000..b092335 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java @@ -0,0 +1,28 @@ +package com.android.learn.base.colorful.setter; + +import android.content.res.Resources.Theme; +import android.view.View; + +/** + * View的背景色Setter + * @author mrsimple + * + */ +public class ViewBackgroundColorSetter extends ViewSetter { + + public ViewBackgroundColorSetter(View target, int resId) { + super(target, resId); + } + + public ViewBackgroundColorSetter(int viewId, int resId) { + super(viewId, resId); + } + + @Override + public void setValue(Theme newTheme, int themeId) { + if ( mView != null ) { + mView.setBackgroundColor(getColor(newTheme)); + } + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java new file mode 100644 index 0000000..1f284a7 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java @@ -0,0 +1,39 @@ +package com.android.learn.base.colorful.setter; + +import android.content.res.Resources.Theme; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.view.View; + +/** + * View的背景Drawabler Setter + * @author mrsimple + * + */ +public final class ViewBackgroundDrawableSetter extends ViewSetter { + + public ViewBackgroundDrawableSetter(View targetView, int resId) { + super(targetView, resId); + } + + + public ViewBackgroundDrawableSetter(int viewId, int resId) { + super(viewId, resId); + } + + @SuppressWarnings("deprecation") + @Override + public void setValue(Theme newTheme, int themeId) { + if ( mView == null ) { + return ; + } + TypedArray a = newTheme.obtainStyledAttributes(themeId, + new int[] { mAttrResId }); + int attributeResourceId = a.getResourceId(0, 0); + Drawable drawable = mView.getResources().getDrawable( + attributeResourceId); + a.recycle(); + mView.setBackgroundDrawable(drawable); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java new file mode 100644 index 0000000..de2f50a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java @@ -0,0 +1,193 @@ +package com.android.learn.base.colorful.setter; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; + +import android.content.res.Resources.Theme; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AbsListView; + +/** + * ViewGroup类型的Setter,用于修改ListView、RecyclerView等ViewGroup类型的Item + * View,核心思想为遍历每个Item View中的子控件,然后根据用户绑定的view + * id与属性来将View修改为当前Theme下的最新属性值,达到ViewGroup控件的换肤效果。 + * + * TODO : Color与Drawable的设计问题,是否需要修改为桥接模式 {@see ViewBackgroundColorSetter}、 + * {@see ViewBackgroundDrawableSetter} + * + * @author mrsimple + * + */ +public class ViewGroupSetter extends ViewSetter { + + /** + * ListView的子试图的Setter + */ + protected Set mItemViewSetters = new HashSet(); + + /** + * + * @param targetView + * @param resId + */ + public ViewGroupSetter(ViewGroup targetView, int resId) { + super(targetView, resId); + } + + public ViewGroupSetter(ViewGroup targetView) { + super(targetView, 0); + } + + /** + * 设置View的背景色 + * + * @param viewId + * @param colorId + * @return + */ + public ViewGroupSetter childViewBgColor(int viewId, int colorId) { + mItemViewSetters.add(new ViewBackgroundColorSetter(viewId, colorId)); + return this; + } + + /** + * 设置View的drawable背景 + * + * @param viewId + * @param drawableId + * @return + */ + public ViewGroupSetter childViewBgDrawable(int viewId, int drawableId) { + mItemViewSetters.add(new ViewBackgroundDrawableSetter(viewId, + drawableId)); + return this; + } + + /** + * 设置文本颜色,因此View的类型必须为TextView或者其子类 + * + * @param viewId + * @param colorId + * @return + */ + public ViewGroupSetter childViewTextColor(int viewId, int colorId) { + mItemViewSetters.add(new TextColorSetter(viewId, colorId)); + return this; + } + + @Override + public void setValue(Theme newTheme, int themeId) { + mView.setBackgroundColor(getColor(newTheme)); + // 清空AbsListView的元素 + clearListViewRecyclerBin(mView); + // 清空RecyclerView + clearRecyclerViewRecyclerBin(mView); + // 修改所有子元素的相关属性 + changeChildenAttrs((ViewGroup) mView, newTheme, themeId); + } + + /** + * + * @param viewId + * @return + */ + private View findViewById(View rootView, int viewId) { + View targetView = rootView.findViewById(viewId); + Log.d("", "### viewgroup find view : " + targetView); + return targetView; + } + + /** + * 修改子视图的对应属性 + * + * @param viewGroup + * @param newTheme + * @param themeId + */ + private void changeChildenAttrs(ViewGroup viewGroup, Theme newTheme, + int themeId) { + int childCount = viewGroup.getChildCount(); + for (int i = 0; i < childCount; i++) { + View childView = viewGroup.getChildAt(i); + // 深度遍历 + if (childView instanceof ViewGroup) { + changeChildenAttrs((ViewGroup) childView, newTheme, themeId); + } + + // 遍历子元素与要修改的属性,如果相同那么则修改子View的属性 + for (ViewSetter setter : mItemViewSetters) { + // 每次都要从ViewGroup中查找数据 + setter.mView = findViewById(viewGroup, setter.mViewId); + + Log.e("", "### childView : " + childView + ", id = " + + childView.getId()); + Log.e("", "### setter view : " + setter.mView + ", id = " + + setter.getViewId()); + if (childView.getId() == setter.getViewId()) { + setter.setValue(newTheme, themeId); + Log.e("", "@@@ 修改新的属性: " + childView); + } + } + } + } + + private void clearListViewRecyclerBin(View rootView) { + if (rootView instanceof AbsListView) { + try { + Field localField = AbsListView.class + .getDeclaredField("mRecycler"); + localField.setAccessible(true); + Method localMethod = Class.forName( + "android.widget.AbsListView$RecycleBin") + .getDeclaredMethod("clear", new Class[0]); + localMethod.setAccessible(true); + localMethod.invoke(localField.get(rootView), new Object[0]); + Log.e("", "### 清空AbsListView的RecycerBin "); + } catch (NoSuchFieldException e1) { + e1.printStackTrace(); + } catch (ClassNotFoundException e2) { + e2.printStackTrace(); + } catch (NoSuchMethodException e3) { + e3.printStackTrace(); + } catch (IllegalAccessException e4) { + e4.printStackTrace(); + } catch (InvocationTargetException e5) { + e5.printStackTrace(); + } + } + } + + private void clearRecyclerViewRecyclerBin(View rootView) { + if (rootView instanceof RecyclerView) { + try { + Field localField = RecyclerView.class + .getDeclaredField("mRecycler"); + localField.setAccessible(true); + Method localMethod = Class.forName( + "android.support.v7.widget.RecyclerView$Recycler") + .getDeclaredMethod("clear", new Class[0]); + localMethod.setAccessible(true); + localMethod.invoke(localField.get(rootView), new Object[0]); + Log.e("", "### 清空RecyclerView的Recycer "); + rootView.invalidate(); + } catch (NoSuchFieldException e1) { + e1.printStackTrace(); + } catch (ClassNotFoundException e2) { + e2.printStackTrace(); + } catch (NoSuchMethodException e3) { + e3.printStackTrace(); + } catch (IllegalAccessException e4) { + e4.printStackTrace(); + } catch (InvocationTargetException e5) { + e5.printStackTrace(); + } + } + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java new file mode 100644 index 0000000..15c4293 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java @@ -0,0 +1,70 @@ +package com.android.learn.base.colorful.setter; + +import android.content.res.Resources.Theme; +import android.util.TypedValue; +import android.view.View; + +/** + * ViewSetter,用于通过{@see #mAttrResId} + * 设置View的某个属性值,例如背景Drawable、背景色、文本颜色等。如需修改其他属性,可以自行扩展ViewSetter. + * + * @author mrsimple + * + */ +public abstract class ViewSetter { + + /** + * 目标View + */ + protected View mView; + /** + * 目标view id,有时在初始化时还未构建该视图,比如ListView的Item View中的某个控件 + */ + protected int mViewId; + /** + * 目标View要的特定属性id + */ + protected int mAttrResId; + + public ViewSetter(View targetView, int resId) { + mView = targetView; + mAttrResId = resId; + } + + public ViewSetter(int viewId, int resId) { + mViewId = viewId; + mAttrResId = resId; + } + + /** + * + * @param newTheme + * @param themeId + */ + public abstract void setValue(Theme newTheme, int themeId); + + /** + * 获取视图的Id + * + * @return + */ + protected int getViewId() { + return mView != null ? mView.getId() : -1; + } + + protected boolean isViewNotFound() { + return mView == null; + } + + /** + * + * @param newTheme + * @param resId + * @return + */ + protected int getColor(Theme newTheme) { + TypedValue typedValue = new TypedValue(); + newTheme.resolveAttribute(mAttrResId, typedValue, true); + return typedValue.data; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java new file mode 100644 index 0000000..bb08085 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java @@ -0,0 +1,130 @@ +package com.android.learn.base.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; + +import com.android.learn.base.greendao.gen.DaoMaster; +import com.android.learn.base.greendao.gen.DaoSession; +import com.android.learn.base.greendao.gen.SearchRecordDao; + +import org.greenrobot.greendao.query.QueryBuilder; + +import java.util.List; + +public class DBManager { + private final static String dbName = "search_record"; + private static DBManager mInstance; + private DaoMaster.DevOpenHelper openHelper; + private Context context; + + public DBManager(Context context) { + this.context = context; + openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); + } + + /** + * 获取单例引用 + * + * @param context + * @return + */ + public static DBManager getInstance(Context context) { + if (mInstance == null) { + synchronized (DBManager.class) { + if (mInstance == null) { + mInstance = new DBManager(context); + } + } + } + return mInstance; + } + /** + * 获取可写数据库 + */ + private SQLiteDatabase getWritableDatabase() { + if (openHelper == null) { + openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); + } + SQLiteDatabase db = openHelper.getWritableDatabase(); + return db; + } + /** + * 获取可读数据库 + */ + private SQLiteDatabase getReadableDatabase() { + if (openHelper == null) { + openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); + } + SQLiteDatabase db = openHelper.getReadableDatabase(); + return db; + } + /** + * 插入一条记录 + * + * @param searchRecord + */ + public void insertUser(SearchRecord searchRecord) { + DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); + DaoSession daoSession = daoMaster.newSession(); + SearchRecordDao userDao = daoSession.getSearchRecordDao(); + userDao.insert(searchRecord); + } + + /** + * 插入用户集合 + * + * @param users + */ + public void insertUserList(List users) { + if (users == null || users.isEmpty()) { + return; + } + DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); + DaoSession daoSession = daoMaster.newSession(); + SearchRecordDao userDao = daoSession.getSearchRecordDao(); + userDao.insertInTx(users); + } + /** + * 删除一条记录 + * + * @param searchRecord + */ + public void deleteUser(SearchRecord searchRecord) { + DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); + DaoSession daoSession = daoMaster.newSession(); + SearchRecordDao userDao = daoSession.getSearchRecordDao(); + userDao.delete(searchRecord); + } + public void deleteAll() { + DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); + DaoSession daoSession = daoMaster.newSession(); + SearchRecordDao userDao = daoSession.getSearchRecordDao(); + userDao.deleteAll(); + } + + /** + * 更新一条记录 + * + * @param searchRecord + */ + public void updateUser(SearchRecord searchRecord) { + DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); + DaoSession daoSession = daoMaster.newSession(); + SearchRecordDao userDao = daoSession.getSearchRecordDao(); + userDao.update(searchRecord); + } + /** + * 查询用户列表 + */ + public List queryUserList() { + DaoMaster daoMaster = new DaoMaster(getReadableDatabase()); + DaoSession daoSession = daoMaster.newSession(); + SearchRecordDao userDao = daoSession.getSearchRecordDao(); + QueryBuilder qb = userDao.queryBuilder(); + List list = qb.list(); + return list; + } + + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java new file mode 100644 index 0000000..3ef04b1 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java @@ -0,0 +1,33 @@ +package com.android.learn.base.db; + +import org.greenrobot.greendao.annotation.Entity; +import org.greenrobot.greendao.annotation.Id; +import org.greenrobot.greendao.annotation.Generated; + +@Entity +public class SearchRecord { + @Id + private Long id; + private String name; + @Generated(hash = 2029079304) + public SearchRecord(Long id, String name) { + this.id = id; + this.name = name; + } + @Generated(hash = 839789598) + public SearchRecord() { + } + public Long getId() { + return this.id; + } + public void setId(Long id) { + this.id = id; + } + public String getName() { + return this.name; + } + public void setName(String name) { + this.name = name; + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java new file mode 100644 index 0000000..7c76334 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java @@ -0,0 +1,24 @@ +package com.android.learn.base.email; + +import java.security.AccessController; +import java.security.Provider; + +public class JSSEProvider extends Provider { + + public JSSEProvider() { + super("HarmonyJSSE", 1.0, "Harmony JSSE Provider"); + AccessController.doPrivileged(new java.security.PrivilegedAction() { + public Void run() { + put("SSLContext.TLS", + "org.apache.harmony.xnet.provider.jsse.SSLContextImpl"); + put("Alg.Alias.SSLContext.TLSv1", "TLS"); + put("KeyManagerFactory.X509", + "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl"); + put("TrustManagerFactory.X509", + "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl"); + return null; + } + }); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java new file mode 100644 index 0000000..1d11182 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java @@ -0,0 +1,183 @@ +package com.android.learn.base.email; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.security.Security; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.Properties; + +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.activation.FileDataSource; +import javax.mail.Authenticator; +import javax.mail.BodyPart; +import javax.mail.Message; +import javax.mail.Multipart; +import javax.mail.PasswordAuthentication; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; + +public class MailSender extends Authenticator { + + private String user; + private String password; + private Session session; + private String mailhost = "smtp.qq.com";//在这里配置你送邮件的主机地址,如qq邮箱、163邮箱等是不一样的 + private String port= "465";//在这里配置你送邮件的主机端口,如qq邮箱、163邮箱等是不一样的 + private Multipart messageMultipart; + private Properties properties; + static { + Security.addProvider(new JSSEProvider()); + } + + public MailSender(String user, String password) { + this.user = user; + this.password = password; + + properties = new Properties(); + properties.setProperty("mail.transport.protocol", "smtp"); + properties.setProperty("mail.host", mailhost); + properties.put("mail.smtp.auth", "true"); + properties.put("mail.smtp.port",port); + properties.put("mail.smtp.socketFactory.port",port); + properties.put("mail.smtp.socketFactory.class", + "javax.net.ssl.SSLSocketFactory"); + properties.put("mail.smtp.socketFactory.fallback", "false"); + properties.setProperty("mail.smtp.quitwait", "false"); + + session = Session.getDefaultInstance(properties, this); + messageMultipart=new MimeMultipart(); + } + + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(user, password); + } + + public synchronized void sendMail(String subject, String body, + String sender, String recipients,String attachment) throws Exception { + MimeMessage message = new MimeMessage(session); + message.setSender(new InternetAddress(sender));//閭欢鍙戜欢浜� + message.setSubject(subject);//閭欢涓婚 + //璁剧疆閭欢鍐呭 + BodyPart bodyPart=new MimeBodyPart(); + bodyPart.setText(body); + messageMultipart.addBodyPart(bodyPart); +// message.setDataHandler(handler); + + //璁剧疆閭欢闄勪欢 + if(attachment!=null){ + DataSource dataSource=new FileDataSource(attachment); + DataHandler dataHandler=new DataHandler(dataSource); + bodyPart.setDataHandler(dataHandler); + bodyPart.setFileName(attachment.substring(attachment.lastIndexOf("/")+1)); + } + message.setContent(messageMultipart); + if (recipients.indexOf(',') > 0) + //澶氫釜鑱旂郴浜� + message.setRecipients(Message.RecipientType.TO, + InternetAddress.parse(recipients)); + else + //鍗曚釜鑱旂郴浜� + message.setRecipient(Message.RecipientType.TO, new InternetAddress( + recipients)); + Transport.send(message); + } + + //缁ф壙DataSource璁剧疆瀛楃缂栫爜 + public class ByteArrayDataSource implements DataSource { + private byte[] data; + private String type; + + public ByteArrayDataSource(byte[] data, String type) { + super(); + this.data = data; + this.type = type; + } + + public ByteArrayDataSource(byte[] data) { + super(); + this.data = data; + } + + public void setType(String type) { + this.type = type; + } + + public String getContentType() { + if (type == null) + return "application/octet-stream"; + else + return type; + } + + public InputStream getInputStream() throws IOException { + return new ByteArrayInputStream(data); + } + + public String getName() { + return "ByteArrayDataSource"; + } + + public OutputStream getOutputStream() throws IOException { + throw new IOException("Not Supported"); + } + + public PrintWriter getLogWriter() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + public int getLoginTimeout() throws SQLException { + // TODO Auto-generated method stub + return 0; + } + + public void setLogWriter(PrintWriter out) throws SQLException { + // TODO Auto-generated method stub + + } + + public void setLoginTimeout(int seconds) throws SQLException { + // TODO Auto-generated method stub + + } + + public boolean isWrapperFor(Class arg0) throws SQLException { + // TODO Auto-generated method stub + return false; + } + + public T unwrap(Class arg0) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + public Connection getConnection() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + public Connection getConnection(String theUsername, String thePassword) + throws SQLException { + // TODO Auto-generated method stub + return null; + } + } + + public String getMailhost() { + return mailhost; + } + + public void setMailhost(String mailhost) { + this.mailhost = mailhost; + properties.setProperty("mail.host", this.mailhost); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java new file mode 100644 index 0000000..c774d18 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java @@ -0,0 +1,24 @@ +package com.android.learn.base.email; + +import android.content.Context; +import android.os.Looper; +import android.widget.Toast; + +public class ToastUtils { + static Toast toast = null; + public static void show(Context context, String text) { + try { + if(toast!=null){ + toast.setText(text); + }else{ + toast= Toast.makeText(context, text, Toast.LENGTH_SHORT); + } + toast.show(); + } catch (Exception e) { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare(); + Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); + Looper.loop(); + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java new file mode 100644 index 0000000..9668f40 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java @@ -0,0 +1,11 @@ +package com.android.learn.base.event; + +public class CancelCollectEvent { + public int id; + + public CancelCollectEvent(int id) { + this.id = id; + + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java new file mode 100644 index 0000000..9fb14b9 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java @@ -0,0 +1,5 @@ +package com.android.learn.base.event; + +public class ChangeNightEvent { + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java new file mode 100644 index 0000000..df35c53 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java @@ -0,0 +1,5 @@ +package com.android.learn.base.event; + +public class LoginEvent { + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java new file mode 100644 index 0000000..af9b97d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java @@ -0,0 +1,5 @@ +package com.android.learn.base.event; + +public class LogoutEvent { + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java new file mode 100644 index 0000000..95c1d29 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java @@ -0,0 +1,10 @@ +package com.android.learn.base.event; + +import android.app.Activity; + +public class RestartMainEvent { + public Activity activity; + public RestartMainEvent(Activity activity){ + this.activity=activity; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java new file mode 100644 index 0000000..fcdda32 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java @@ -0,0 +1,6 @@ +package com.android.learn.base.event; + +public class UpdateDoneEvent { + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java new file mode 100644 index 0000000..ab04c3f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java @@ -0,0 +1,6 @@ +package com.android.learn.base.event; + +public class UpdateTodoEvent { + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java new file mode 100644 index 0000000..22265bd --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java @@ -0,0 +1,103 @@ +package com.android.learn.base.fragment; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +import com.gaolei.basemodule.R; +import com.android.learn.base.utils.NetUtils; + +import butterknife.ButterKnife; +import butterknife.Unbinder; + + + + +public abstract class BaseFragment extends Fragment implements View.OnClickListener { + private FrameLayout mLlContent; + View subFragmentView; + private Button bt_error_refresh; + public LinearLayout mErrorPageView; + private Unbinder mBinder; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View mParentView = inflater.inflate(R.layout.fragment_base, container, false); + initBaseView(mParentView); + addContentView(inflater); + Bundle bundle = getArguments(); + if (bundle == null) { + bundle = savedInstanceState; + } + initData(bundle); + initView(mParentView); + return mParentView; + } + + /** + * 用于布局加载完毕,子Fragment可以开始初始化数据 + * + * @param bundle + */ + public abstract void initData(Bundle bundle); + public abstract void initView(View view); + + private void initBaseView(View view) { + mLlContent = view.findViewById(R.id.base_fragment_content); + mErrorPageView = view.findViewById(R.id.ll_base_error_content); + bt_error_refresh = view.findViewById(R.id.bt_error_refresh); +// if (!NetworkUtil.isNetworkAvailable(getActivity())) +// showErrorPage(true); + bt_error_refresh.setOnClickListener(this); + } + + /** + * 设置子布局layout + */ + public abstract int setContentLayout(); + + public abstract void reload(); + + /** + * 设置内容 + */ + public void addContentView(LayoutInflater inflater) { + subFragmentView = inflater.inflate(setContentLayout(), null); + mLlContent.addView(subFragmentView); + mBinder = ButterKnife.bind(this, subFragmentView); + + } + + + + /** + * 显示/隐藏 错误页面 + * + * @param isShow + */ + public void showErrorPage(boolean isShow) { + mErrorPageView.setVisibility(isShow ? View.VISIBLE : View.GONE); + } + + @Override + public void onClick(View v) { + if (v.getId() == R.id.bt_error_refresh) { + if (NetUtils.isConnected()) + mErrorPageView.setVisibility(View.GONE); + reload(); + } + } + + + public void onDestroyView() { + super.onDestroyView(); + if (mBinder != null) { + mBinder.unbind(); + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java new file mode 100644 index 0000000..fa010b9 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java @@ -0,0 +1,66 @@ +package com.android.learn.base.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.View; + + + +public abstract class BaseLazyFragment extends BaseFragment { + + //Fragment的View加载完毕的标记 + private boolean isViewCreated; + //Fragment对用户可见的标记 + private boolean isUIVisible; + + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + isViewCreated = true; + lazyLoad(); + } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + + super.setUserVisibleHint(isVisibleToUser); + //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见 + if (isVisibleToUser) { + isUIVisible = true; + lazyLoad(); + } else { + isUIVisible = false; + } + } + + private void lazyLoad() { + + //这里进行双重标记判断,是因为setUserVisibleHint会多次回调,并且会在onCreateView执行前回调,必须确保onCreateView加载完毕且页面可见,才加载数据 + if (isViewCreated && isUIVisible) { + + loadData(); + //数据加载完毕,恢复标记,防止重复加载 + isViewCreated = false; + isUIVisible = false; + + } + } + + + protected abstract void loadData(); + + + @Override + public void onDestroyView() { + super.onDestroyView(); + //页面销毁,恢复标记 + isViewCreated = false; + isUIVisible = false; + + } + + + /**Fragment中TextView显示的内容*/ + // protected abstract String getFragmentTextviewContent(); +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java new file mode 100644 index 0000000..f6f4056 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java @@ -0,0 +1,82 @@ +package com.android.learn.base.fragment; + +import android.os.Bundle; +import android.support.annotation.Nullable; + +import com.android.learn.base.mpresenter.BasePresenter; + + +/** + * Created by gaolei on 2018/4/26. + */ + + +public abstract class BaseMvpFragment

extends BaseFragment { + + public P mPresenter; + //Fragment的View加载完毕的标记 + private boolean isViewCreated; + //Fragment对用户可见的标记 + private boolean isUIVisible; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + isViewCreated = true; + + mPresenter = initPresenter(); + if (mPresenter != null) + mPresenter.attach(this); + lazyLoad(); + } + + @Override + public void onDestroy() { + if (mPresenter != null) + mPresenter.dettach(); + super.onDestroy(); + } + + //实例presenter + public abstract P initPresenter(); + + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + + super.setUserVisibleHint(isVisibleToUser); + //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见 + if (isVisibleToUser) { + isUIVisible = true; + lazyLoad(); + } else { + isUIVisible = false; + } + } + + private void lazyLoad() { + + //这里进行双重标记判断,是因为setUserVisibleHint会多次回调,并且会在onCreateView执行前回调,必须确保onCreateView加载完毕且页面可见,才加载数据 + if (isViewCreated && isUIVisible) { + + loadData(); + //数据加载完毕,恢复标记,防止重复加载 + isViewCreated = false; + isUIVisible = false; + + } + } + + + protected abstract void loadData(); + + + @Override + public void onDestroyView() { + super.onDestroyView(); + //页面销毁,恢复标记 + isViewCreated = false; + isUIVisible = false; + + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java new file mode 100644 index 0000000..e920968 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java @@ -0,0 +1,31 @@ +package com.android.learn.base.mmodel; + +import java.util.List; + + +public class BannerListData extends BaseData { + +// { +// "desc":"最新项目上线啦~", "id":13, "imagePath": +// "http://www.wanandroid.com/blogimgs/5ae04af4-72b9-4696-81cb-1644cdcd2d29.jpg", "isVisible": +// 1, "order":0, "title":"最新项目上线啦~", "type":0, "url":"http://www.wanandroid.com/pindex" +// } + + + public List data; + + public class BannerData { + + public int id; + public String url; + public String imagePath; + public String title; + public String desc; + public int isVisible; + public int order; + public int type; + + } + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java new file mode 100644 index 0000000..8b53774 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java @@ -0,0 +1,35 @@ +package com.android.learn.base.mmodel; + +/** + * @author quchao + * @date 2018/2/12 + */ + +public class BaseData { + + public static final int SUCCESS = 0; + public static final int FAIL = -1; + + public int errorCode; + + public String errorMsg; + + + public int getErrorCode() { + return errorCode; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java new file mode 100644 index 0000000..0e3e5e0 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java @@ -0,0 +1,41 @@ +package com.android.learn.base.mmodel; + +public class BaseResponse { + + public static final int SUCCESS = 0; + public static final int FAIL = 1; + + /** + * 0:成功,1:失败 + */ + public int errorCode; + + public String errorMsg; + + public T data; + + public int getErrorCode() { + return errorCode; + } + + public void setErrorCode(int errorCode) { + this.errorCode = errorCode; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java new file mode 100644 index 0000000..f252a36 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java @@ -0,0 +1,247 @@ +package com.android.learn.base.mmodel; + +import java.io.Serializable; +import java.util.List; + +public class FeedArticleListData { + + public int curPage; + public List datas; + public int offset; + public boolean over; + public int pageCount; + public int size; + public int total; + + public int getCurPage() { + return curPage; + } + + public void setCurPage(int curPage) { + this.curPage = curPage; + } + + public List getDatas() { + return datas; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public int getOffset() { + return offset; + } + + public void setOffset(int offset) { + this.offset = offset; + } + + public boolean isOver() { + return over; + } + + public void setOver(boolean over) { + this.over = over; + } + + public int getPageCount() { + return pageCount; + } + + public void setPageCount(int pageCount) { + this.pageCount = pageCount; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public class FeedArticleData implements Serializable { + + public String apkLink; + public String author; + public int chapterId; + public String chapterName; + public boolean collect=true; + public int courseId; + public String desc; + public String envelopePic; + public int id; + public String link; + public String niceDate; + public String origin; + public String projectLink; + public int superChapterId; + public String superChapterName; + public long publishTime; + public String title; + public int visible; + public int zan,originId; + + public String getApkLink() { + return apkLink; + } + + public void setApkLink(String apkLink) { + this.apkLink = apkLink; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public int getChapterId() { + return chapterId; + } + + public void setChapterId(int chapterId) { + this.chapterId = chapterId; + } + + public String getChapterName() { + return chapterName; + } + + public void setChapterName(String chapterName) { + this.chapterName = chapterName; + } + + public boolean isCollect() { + return collect; + } + + public void setCollect(boolean collect) { + this.collect = collect; + } + + public int getCourseId() { + return courseId; + } + + public void setCourseId(int courseId) { + this.courseId = courseId; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getEnvelopePic() { + return envelopePic; + } + + public void setEnvelopePic(String envelopePic) { + this.envelopePic = envelopePic; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public String getNiceDate() { + return niceDate; + } + + public void setNiceDate(String niceDate) { + this.niceDate = niceDate; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getProjectLink() { + return projectLink; + } + + public void setProjectLink(String projectLink) { + this.projectLink = projectLink; + } + + public int getSuperChapterId() { + return superChapterId; + } + + public void setSuperChapterId(int superChapterId) { + this.superChapterId = superChapterId; + } + + public String getSuperChapterName() { + return superChapterName; + } + + public void setSuperChapterName(String superChapterName) { + this.superChapterName = superChapterName; + } + + public long getPublishTime() { + return publishTime; + } + + public void setPublishTime(long publishTime) { + this.publishTime = publishTime; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getVisible() { + return visible; + } + + public void setVisible(int visible) { + this.visible = visible; + } + + public int getZan() { + return zan; + } + + public void setZan(int zan) { + this.zan = zan; + } + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java new file mode 100644 index 0000000..c4fab0f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java @@ -0,0 +1,59 @@ +package com.android.learn.base.mmodel; + +public class HotKeyData { + + + /** + * id : 6 + * link : + * name : 面试 + * order : 1 + * visible : 1 + */ + + private int id; + private String link; + private String name; + private int order; + private int visible; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getVisible() { + return visible; + } + + public void setVisible(int visible) { + this.visible = visible; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java new file mode 100644 index 0000000..aaec995 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java @@ -0,0 +1,289 @@ +package com.android.learn.base.mmodel; + +import java.io.Serializable; +import java.util.List; + + +/** + * @author quchao + * @date 2018/2/24 + */ + +public class ProjectListData { + + /** + * "curPage": 1, + * "datas": [], + * "offset": 0, + * "over": true, + * "pageCount": 1, + * "size": 15, + * "total": 8 + */ + public ListData data; + + public class ListData { + public int curPage; + public List datas; + public int offset; + public boolean over; + public int pageCount; + public int size; + public int total; + public List getDatas() { + return datas; + } + + public void setDatas(List datas) { + this.datas = datas; + } +// public int getCurPage() { +// return curPage; +// } +// +// public void setCurPage(int curPage) { +// this.curPage = curPage; +// } +// +// public int getOffset() { +// return offset; +// } +// +// public void setOffset(int offset) { +// this.offset = offset; +// } +// +// public boolean isOver() { +// return over; +// } +// +// public void setOver(boolean over) { +// this.over = over; +// } +// +// public int getPageCount() { +// return pageCount; +// } +// +// public void setPageCount(int pageCount) { +// this.pageCount = pageCount; +// } +// +// public int getSize() { +// return size; +// } +// +// public void setSize(int size) { +// this.size = size; +// } +// +// public int getTotal() { +// return total; +// } +// +// public void setTotal(int total) { +// this.total = total; +// } + } + + public class ProjectData implements Serializable + { + +// { +// "apkLink": "", +// "author": "LiangLuDev", +// "chapterId": 294, +// "chapterName": "完整项目", +// "collect": false, +// "courseId": 13, +// "desc": "注册登录、用户信息、用户密码、用户图像修改、书籍分类、本地书籍扫描、书架、书籍搜索(作者名或书籍名)、书籍阅读(仅txt格式,暂不支持PDF等其他格式)、阅读字体、背景颜色、翻页效果等设置、意见反馈(反馈信息发送到我的邮箱)、应用版本更新", +// "envelopePic": "http://www.wanandroid.com/blogimgs/fab6fb8b-c3aa-495f-b6a9-c007d78751c0.gif", +// "fresh": false, +// "id": 2836, +// "link": "http://www.wanandroid.com/blog/show/2116", +// "niceDate": "2018-04-22", +// "origin": "", +// "projectLink": "https://github.com/LiangLuDev/WeYueReader", +// "publishTime": 1524376619000, +// "superChapterId": 0, +// "superChapterName": "", +// "tags": [ ], +// "title": "微Yue电子书阅读 WeYueReader", +// "type": 0, +// "visible": 1, +// "zan": 0 +//} + public String apkLink; + public String author; + public int chapterId; + public String chapterName; + public boolean collect; + public int courseId; + public String desc; + public String envelopePic; + public int id; + public String link; + public String niceDate; + public String origin; + public String projectLink; + public int superChapterId; + public String superChapterName; + public long publishTime; + public String title; + public int visible; + public int zan; + +// public String getApkLink() { +// return apkLink; +// } +// +// public void setApkLink(String apkLink) { +// this.apkLink = apkLink; +// } +// + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public int getChapterId() { + return chapterId; + } +// +// public void setChapterId(int chapterId) { +// this.chapterId = chapterId; +// } +// +// public String getChapterName() { +// return chapterName; +// } +// +// public void setChapterName(String chapterName) { +// this.chapterName = chapterName; +// } +// +// public boolean isCollect() { +// return collect; +// } +// +// public void setCollect(boolean collect) { +// this.collect = collect; +// } +// +// public int getCourseId() { +// return courseId; +// } +// +// public void setCourseId(int courseId) { +// this.courseId = courseId; +// } +// + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public String getEnvelopePic() { + return envelopePic; + } + + public void setEnvelopePic(String envelopePic) { + this.envelopePic = envelopePic; + } +// +// public int getId() { +// return id; +// } +// +// public void setId(int id) { +// this.id = id; +// } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public String getNiceDate() { + return niceDate; + } + + public void setNiceDate(String niceDate) { + this.niceDate = niceDate; + } +// +// public String getOrigin() { +// return origin; +// } +// +// public void setOrigin(String origin) { +// this.origin = origin; +// } +// +// public String getProjectLink() { +// return projectLink; +// } +// +// public void setProjectLink(String projectLink) { +// this.projectLink = projectLink; +// } +// +// public int getSuperChapterId() { +// return superChapterId; +// } +// +// public void setSuperChapterId(int superChapterId) { +// this.superChapterId = superChapterId; +// } +// +// public String getSuperChapterName() { +// return superChapterName; +// } +// +// public void setSuperChapterName(String superChapterName) { +// this.superChapterName = superChapterName; +// } +// +// public long getPublishTime() { +// return publishTime; +// } +// +// public void setPublishTime(long publishTime) { +// this.publishTime = publishTime; +// } +// + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +// +// public int getVisible() { +// return visible; +// } +// +// public void setVisible(int visible) { +// this.visible = visible; +// } +// +// public int getZan() { +// return zan; +// } +// +// public void setZan(int zan) { +// this.zan = zan; +// } + + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java new file mode 100644 index 0000000..545aa0b --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java @@ -0,0 +1,36 @@ +package com.android.learn.base.mmodel; + +import java.util.List; + +/** + * @author quchao + * @date 2018/2/26 + */ + +public class RegisterLoginData extends BaseData { + + public Data data; + + public class Data { + public String username; + public String password; + public String email, icon, token; + public int id, type; + // private List chapterTops; + public List collectIds; + + @Override + public String toString() { + return "RegisterLoginData{" + + "username='" + username + '\'' + + ", password='" + password + '\'' + + ", email='" + email + '\'' + + ", icon='" + icon + '\'' + + ", token='" + token + '\'' + + ", id=" + id + + ", type=" + type + + ", collectIds=" + collectIds + + '}'; + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java new file mode 100644 index 0000000..dc3e812 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java @@ -0,0 +1,198 @@ +package com.android.learn.base.mmodel; + +import java.io.Serializable; +import java.util.List; + +public class TodoData { + + + /** + * curPage : 1 + * datas : [{"completeDate":null,"completeDateStr":"","content":"圣诞节快乐","date":1545667200000,"dateStr":"2018-12-25","id":5566,"priority":0,"status":0,"title":"圣诞节","type":0,"userId":13479},{"completeDate":null,"completeDateStr":"","content":"圣诞夜快乐","date":1545580800000,"dateStr":"2018-12-24","id":5564,"priority":0,"status":0,"title":"圣诞夜","type":0,"userId":13479}] + * offset : 0 + * over : true + * pageCount : 1 + * size : 20 + * total : 2 + */ + + private int curPage; + private int offset; + private boolean over; + private int pageCount; + private int size; + private int total; + private List datas; + + public int getCurPage() { + return curPage; + } + + public void setCurPage(int curPage) { + this.curPage = curPage; + } + + public int getOffset() { + return offset; + } + + public void setOffset(int offset) { + this.offset = offset; + } + + public boolean isOver() { + return over; + } + + public void setOver(boolean over) { + this.over = over; + } + + public int getPageCount() { + return pageCount; + } + + public void setPageCount(int pageCount) { + this.pageCount = pageCount; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getDatas() { + return datas; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public static class DatasBean implements Serializable{ + /** + * completeDate : null + * completeDateStr : + * content : 圣诞节快乐 + * date : 1545667200000 + * dateStr : 2018-12-25 + * id : 5566 + * priority : 0 + * status : 0 + * title : 圣诞节 + * type : 0 + * userId : 13479 + */ + + private Object completeDate; + private String completeDateStr; + private String content; + private long date; + private String dateStr; + private int id; + private int priority; + private int status; + private String title; + private int type; + private int userId; + + public Object getCompleteDate() { + return completeDate; + } + + public void setCompleteDate(Object completeDate) { + this.completeDate = completeDate; + } + + public String getCompleteDateStr() { + return completeDateStr; + } + + public void setCompleteDateStr(String completeDateStr) { + this.completeDateStr = completeDateStr; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public long getDate() { + return date; + } + + public void setDate(long date) { + this.date = date; + } + + public String getDateStr() { + return dateStr; + } + + public void setDateStr(String dateStr) { + this.dateStr = dateStr; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public int getUserId() { + return userId; + } + + public void setUserId(int userId) { + this.userId = userId; + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java new file mode 100644 index 0000000..a3f694b --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java @@ -0,0 +1,158 @@ +package com.android.learn.base.mmodel; + +import java.io.Serializable; +import java.util.List; + + +public class TreeBean implements Serializable { + + /** + * children : [{"children":[],"courseId":13,"id":60,"name":"Android Studio相关","order":1000,"parentChapterId":150,"visible":1},"..."] + * courseId : 13 + * id : 150 + * name : 开发环境 + * order : 1 + * parentChapterId : 0 + * visible : 1 + */ + + private int courseId; + private int id; + private String name; + private int order; + private int parentChapterId; + private int visible; + private List children; + + public int getCourseId() { + return courseId; + } + + public void setCourseId(int courseId) { + this.courseId = courseId; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getParentChapterId() { + return parentChapterId; + } + + public void setParentChapterId(int parentChapterId) { + this.parentChapterId = parentChapterId; + } + + public int getVisible() { + return visible; + } + + public void setVisible(int visible) { + this.visible = visible; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + public static class ChildrenBean { + /** + * children : [] + * courseId : 13 + * id : 60 + * name : Android Studio相关 + * order : 1000 + * parentChapterId : 150 + * visible : 1 + */ + + private int courseId; + private int id; + private String name; + private int order; + private int parentChapterId; + private int visible; + private List children; + + public int getCourseId() { + return courseId; + } + + public void setCourseId(int courseId) { + this.courseId = courseId; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getParentChapterId() { + return parentChapterId; + } + + public void setParentChapterId(int parentChapterId) { + this.parentChapterId = parentChapterId; + } + + public int getVisible() { + return visible; + } + + public void setVisible(int visible) { + this.visible = visible; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java new file mode 100644 index 0000000..298592d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java @@ -0,0 +1,98 @@ +package com.android.learn.base.mmodel; + +import com.google.gson.Gson; + +import java.util.List; + +public class WxArticle { + + + /** + * children : [] + * courseId : 13 + * id : 408 + * name : 鸿洋 + * order : 190000 + * parentChapterId : 407 + * userControlSetTop : false + * visible : 1 + */ + + private int courseId; + private int id; + private String name; + private int order; + private int parentChapterId; + private boolean userControlSetTop; + private int visible; + private List children; + + public static WxArticle objectFromData(String str) { + + return new Gson().fromJson(str, WxArticle.class); + } + + public int getCourseId() { + return courseId; + } + + public void setCourseId(int courseId) { + this.courseId = courseId; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getOrder() { + return order; + } + + public void setOrder(int order) { + this.order = order; + } + + public int getParentChapterId() { + return parentChapterId; + } + + public void setParentChapterId(int parentChapterId) { + this.parentChapterId = parentChapterId; + } + + public boolean isUserControlSetTop() { + return userControlSetTop; + } + + public void setUserControlSetTop(boolean userControlSetTop) { + this.userControlSetTop = userControlSetTop; + } + + public int getVisible() { + return visible; + } + + public void setVisible(int visible) { + this.visible = visible; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java new file mode 100644 index 0000000..ae0718e --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java @@ -0,0 +1,47 @@ +package com.android.learn.base.mpresenter; + +import com.android.learn.base.thirdframe.retrofit.ApiService; +import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; +import com.android.learn.base.thirdframe.rxjava.BaseObserver; +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.schedulers.Schedulers; + +public abstract class BasePresenter { + + public V mView; +// public Observable observable; + public ApiService mRestService = RetrofitProvider.getInstance().builder().getApiService(); + CompositeDisposable mCompositeDisposable ; + + /** + * 绑定View + * + * @param view + */ + public void attach(V view) { + this.mView = view; + if (mCompositeDisposable == null) { + mCompositeDisposable = new CompositeDisposable(); + } + } + + /** + * 释放View + */ + public void dettach() { + this.mView = null; + if (mCompositeDisposable != null) { + mCompositeDisposable.clear(); + } + } + + public void addSubscribe( Observable observable,BaseObserver observer){ + mCompositeDisposable.add(observer); + observable.subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(observer); + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java new file mode 100644 index 0000000..c04a9ad --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java @@ -0,0 +1,8 @@ +package com.android.learn.base.mview; + +public interface BaseView { + + void showLoading(); + void hideLoading(); + void showErrorMsg(String errorMsg); +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java new file mode 100644 index 0000000..5974beb --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java @@ -0,0 +1,43 @@ +package com.android.learn.base.thirdframe.glide; + +import android.content.Context; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; +import com.bumptech.glide.request.RequestOptions; + + +public class ImageLoader { + public static ImageLoader instance; + public static RequestOptions options; + + private ImageLoader() { + } + + public static ImageLoader getInstance() { + if (instance == null) { + instance = new ImageLoader(); + options = new RequestOptions() +// .placeholder(R.drawable.ic_launcher)// 正在加载中的图片 +// .error(R.drawable.video_error) // 加载失败的图片 + .diskCacheStrategy(DiskCacheStrategy.ALL); // 磁盘缓存策略 + + } + return instance; + } + + /** + * 使用Glide加载圆形ImageView(如头像)时,不要使用占位图 + * + * @param context context + * @param url image url + * @param iv imageView + */ + public void load(Context context, String url, ImageView iv) { + + Glide.with(context).load(url).apply(options).transition(new DrawableTransitionOptions().crossFade(500)) + .into(iv); + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java new file mode 100644 index 0000000..95c667d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java @@ -0,0 +1,50 @@ +package com.android.learn.base.thirdframe.glide; + +import android.content.Context; +import android.os.Environment; +import android.support.annotation.NonNull; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.Registry; +import com.bumptech.glide.annotation.GlideModule; +import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool; +import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory; +import com.bumptech.glide.load.engine.cache.LruResourceCache; +import com.bumptech.glide.module.AppGlideModule; +import com.android.learn.base.application.CustomApplication; + +@GlideModule +public final class MyAppGlideModule extends AppGlideModule { + + public static String glideCachePath; + @Override + public boolean isManifestParsingEnabled() { +// return super.isManifestParsingEnabled(); + return false; + } + + @Override + public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { + int diskCacheSizeBytes = 1024 * 1024 * 100; // 50 MB + glideCachePath= CustomApplication.context.getExternalFilesDir("glide_cache").getAbsolutePath(); + builder.setDiskCache( + new DiskLruCacheFactory( glideCachePath, diskCacheSizeBytes ) + ); + int maxMemory = (int) Runtime.getRuntime().maxMemory();//获取系统分配给应用的总内存大小 + int memoryCacheSize = maxMemory / 8;//设置图片内存缓存占用八分之一 + //设置内存缓存大小 + builder.setMemoryCache(new LruResourceCache(memoryCacheSize)); + //设置BitmapPool缓存内存大小 + builder.setBitmapPool(new LruBitmapPool(memoryCacheSize)); + + } + private String getStorageDirectory(Context context){ + return Environment.getExternalStorageDirectory().getPath()+"/"+context.getPackageName(); + } + @Override + public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { + super.registerComponents(context, glide, registry); + } +} + diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java new file mode 100644 index 0000000..fd8533f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java @@ -0,0 +1,101 @@ +package com.android.learn.base.thirdframe.retrofit; + + +import com.android.learn.base.mmodel.BannerListData; +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; +import com.android.learn.base.mmodel.FeedArticleListData; +import com.android.learn.base.mmodel.HotKeyData; +import com.android.learn.base.mmodel.RegisterLoginData; +import com.android.learn.base.mmodel.ProjectListData; +import com.android.learn.base.mmodel.TodoData; +import com.android.learn.base.mmodel.TreeBean; +import com.android.learn.base.mmodel.WxArticle; + +import java.util.List; +import java.util.Map; + +import io.reactivex.Observable; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.Path; +import retrofit2.http.Query; +import retrofit2.http.QueryMap; + + +public interface ApiService { + + + @GET("project/list/{page}/json") + Observable getProjectListData(@Path("page") int page, @Query("cid") int cid); + + @GET("banner/json") + Observable getBannerListData(); + + @GET("article/list/{num}/json") + Observable> getFeedArticleList(@Path("num") int num); + + @GET("article/list/{num}/json") + Observable> getKnowledgeArticleList(@Path("num") int num, @Query("cid") int cid); + + @POST("user/login") + @FormUrlEncoded + Observable login(@Field("username") String username, @Field("password") String password); + + @GET("user/logout/json") + Observable logout(); + + @POST("user/register") + @FormUrlEncoded + Observable register(@Field("username") String username, @Field("password") String password, @Field("repassword") String repassword); + + @POST("lg/collect/{id}/json") + Observable addCollectArticle(@Path("id") int id); + + @GET("lg/collect/list/{page}/json") + Observable> getCollectList(@Path("page") int page); + + @POST("lg/uncollect_originId/{id}/json") + @FormUrlEncoded + Observable cancelCollectArticle(@Path("id") int id, @Field("originId") int originId); + + @GET("tree/json") + Observable>> getKnowledgeTree(); + + @GET("hotkey/json") + Observable>> getHotKey(); + + @GET("wxarticle/chapters/json") + Observable>> getWxArticle(); + + @GET("wxarticle/list/{id}/{num}/json") + Observable> getWxArtileById(@Path("id") int id, @Path("num") int num); + + @POST("article/query/{num}/json") + @FormUrlEncoded + Observable> search(@Path("num") int num, @Field("k") String key); + + @GET("lg/todo/list/{type}/json") + Observable> getTodoList(@Path("type") int type); + + @POST("lg/todo/listnotdo/{type}/json/{page}") + Observable> getListNotDone(@Path("type") int type, @Path("page") int page); + + @POST("lg/todo/listdone/{type}/json/{page}") + Observable> getListDone(@Path("type") int type, @Path("page") int page); + + @POST("lg/todo/add/json") + Observable addTodo(@QueryMap Map map); + + @POST("lg/todo/update/{id}/json") + Observable updateTodo(@Path("id") int id, @QueryMap Map map); + + @POST("lg/todo/delete/{id}/json") + Observable deleteTodo(@Path("id") int id); + + //status: 0或1,传1代表未完成到已完成,反之则反之。 + @POST("lg/todo/done/{id}/json") + Observable updateTodoStatus(@Path("id") int id, @Query("status") int status); +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java new file mode 100644 index 0000000..6d0131c --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java @@ -0,0 +1,50 @@ +package com.android.learn.base.thirdframe.retrofit; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.reflect.TypeToken; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; + +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import retrofit2.Converter; +import retrofit2.Retrofit; + +/** + * @author lqx + * 自定义GsonConverterFactory + */ +public class CustomizeGsonConverterFactory extends Converter.Factory { + public static CustomizeGsonConverterFactory create() { + return create(new Gson()); + } + + public static CustomizeGsonConverterFactory create(Gson gson) { + return new CustomizeGsonConverterFactory(gson); + } + + private final Gson gson; + + private CustomizeGsonConverterFactory(Gson gson) { + if (gson == null) { + throw new NullPointerException("gson == null"); + } + this.gson = gson; + } + + @Override + public Converter responseBodyConverter(Type type, Annotation[] annotations, + Retrofit retrofit) { + TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); + return new CustomizeGsonResponseBodyConverter<>(gson, adapter); + } + + @Override + public Converter requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { + TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); + return new CustomizeGsonRequestBodyConverter<>(gson, adapter); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java new file mode 100644 index 0000000..6e8170d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java @@ -0,0 +1,43 @@ +package com.android.learn.base.thirdframe.retrofit; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonWriter; + +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.nio.charset.Charset; + +import okhttp3.MediaType; +import okhttp3.RequestBody; +import okio.Buffer; +import retrofit2.Converter; + +/** + * @param + * @author lqx + */ +public class CustomizeGsonRequestBodyConverter implements Converter { + + private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8"); + private static final Charset UTF_8 = Charset.forName("UTF-8"); + + private final Gson gson; + private final TypeAdapter adapter; + + CustomizeGsonRequestBodyConverter(Gson gson, TypeAdapter adapter) { + this.gson = gson; + this.adapter = adapter; + } + + @Override + public RequestBody convert(T value) throws IOException { + Buffer buffer = new Buffer(); + Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8); + JsonWriter jsonWriter = gson.newJsonWriter(writer); + adapter.write(jsonWriter, value); + jsonWriter.close(); + return RequestBody.create(MEDIA_TYPE, buffer.readByteString()); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java new file mode 100644 index 0000000..92dce17 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java @@ -0,0 +1,42 @@ +package com.android.learn.base.thirdframe.retrofit; + +import com.android.learn.base.utils.LogUtil; +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; + +import org.json.JSONObject; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import okhttp3.ResponseBody; +import retrofit2.Converter; + +/** + * @param + * @author lqx + */ +public class CustomizeGsonResponseBodyConverter implements Converter { + + private final Gson gson; + private final TypeAdapter adapter; + String TAG="CustomizeGsonResponseBodyConverter"; + + CustomizeGsonResponseBodyConverter(Gson gson, TypeAdapter adapter) { + this.gson = gson; + this.adapter = adapter; + } + + @Override + public T convert(ResponseBody value) throws IOException { + + String responseBodyStr = value.string(); + LogUtil.d(TAG,"responseBodyStr---------------"+responseBodyStr); + + + return adapter.fromJson(responseBodyStr); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java new file mode 100644 index 0000000..20a5d7f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java @@ -0,0 +1,83 @@ +package com.android.learn.base.thirdframe.retrofit; + + +import com.android.learn.base.application.CustomApplication; +import com.android.learn.base.thirdframe.retrofit.interceptor.DefaultHeaderInterceptor; +import com.android.learn.base.thirdframe.retrofit.interceptor.HttpLoggingInterceptor; +import com.franmontiel.persistentcookiejar.PersistentCookieJar; +import com.franmontiel.persistentcookiejar.cache.SetCookieCache; +import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; + +import java.nio.charset.Charset; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; + + +public final class RetrofitDynamicProvider { + private final Charset UTF8 = Charset.forName("UTF-8"); + private Retrofit mRetrofit; + private OkHttpClient mOkHttpClient; + private static volatile RetrofitDynamicProvider sInstance; + private ApiService restService; + public static String netCachePath; +// public final String BASE_URL = "http://www.xuetangx.com/"; + + private RetrofitDynamicProvider() { + } + + + public RetrofitDynamicProvider builder(String BASE_URL) { + netCachePath = CustomApplication.context.getExternalFilesDir("net_cache").getAbsolutePath(); + if (mOkHttpClient == null) { + mOkHttpClient = new OkHttpClient.Builder() + .addNetworkInterceptor(new HttpLoggingInterceptor()) +// .addNetworkInterceptor(new HandleGzipInterceptor()) + .addInterceptor(new DefaultHeaderInterceptor())//请求连接中添加头信息 +// .addNetworkInterceptor(new OnlineCacheInterceptor())//有网缓存拦截器 +// .addInterceptor(new OfflineCacheInterceptor())//无网缓存拦截器 +// .cache(new Cache(new File(netCachePath), 50 * 10240 * 1024))//缓存路径和空间设置 +// .addInterceptor(new RetryIntercepter(4))//重试 +// .addInterceptor(new GzipRequestInterceptor())//开启Gzip压缩 + +// .addInterceptor(new ProgressInterceptor())//请求url的进度 +// .addInterceptor(new TokenInterceptor())//token过期,自动刷新Token +// .addInterceptor(new SignInterceptor())//所有的接口,默认需要带上sign,timestamp2个参数 +// .addNetworkInterceptor(new ParamsEncryptInterceptor())//参数加密,一般针对表单中的字段和值进行加密,防止中途第三方进行窥探和篡改 + .cookieJar(new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(CustomApplication.context))) + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .build(); + + } +// if (mRetrofit == null) { + mRetrofit = new Retrofit.Builder() + .client(mOkHttpClient) + .baseUrl(BASE_URL) + .addConverterFactory(CustomizeGsonConverterFactory.create()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .build(); +// } + return sInstance; + } + + public static RetrofitDynamicProvider getInstance() { + if (sInstance == null) { + synchronized (RetrofitDynamicProvider.class) { + if (sInstance == null) { + sInstance = new RetrofitDynamicProvider(); + } + } + } + return sInstance; + } + + public T createService(Class tClass) { + return mRetrofit.create(tClass); + } + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java new file mode 100644 index 0000000..9d6c27c --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java @@ -0,0 +1,94 @@ +package com.android.learn.base.thirdframe.retrofit; + + +import com.android.learn.base.application.CustomApplication; +import com.android.learn.base.thirdframe.retrofit.interceptor.HttpLoggingInterceptor; +import com.android.learn.base.thirdframe.retrofit.interceptor.OfflineCacheInterceptor; +import com.android.learn.base.thirdframe.retrofit.interceptor.OnlineCacheInterceptor; +import com.android.learn.base.thirdframe.retrofit.interceptor.RetryIntercepter; +import com.franmontiel.persistentcookiejar.PersistentCookieJar; +import com.franmontiel.persistentcookiejar.cache.SetCookieCache; +import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; + +import java.io.File; +import java.util.concurrent.TimeUnit; + +import okhttp3.Cache; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.converter.gson.GsonConverterFactory; + + +public final class RetrofitProvider { + + private Retrofit mRetrofit; + private OkHttpClient mOkHttpClient; + private static volatile RetrofitProvider sInstance; + private ApiService restService; + public static String netCachePath; + public final String BASE_URL = "http://www.wanandroid.com/"; + public PersistentCookieJar persistentCookieJar; + public SharedPrefsCookiePersistor sharedPrefsCookiePersistor; + + private RetrofitProvider() { + } + + + public RetrofitProvider builder() { + netCachePath = CustomApplication.context.getExternalFilesDir("net_cache").getAbsolutePath(); + if (mOkHttpClient == null) { + sharedPrefsCookiePersistor=new SharedPrefsCookiePersistor(CustomApplication.context); + persistentCookieJar=new PersistentCookieJar(new SetCookieCache(), sharedPrefsCookiePersistor); + mOkHttpClient = new OkHttpClient.Builder() + .addNetworkInterceptor(new HttpLoggingInterceptor()) + .addNetworkInterceptor(new OnlineCacheInterceptor())//有网缓存拦截器 + .addInterceptor(new OfflineCacheInterceptor())//无网缓存拦截器 + .cache(new Cache(new File(netCachePath), 50 * 10240 * 1024))//缓存路径和空间设置 + .addInterceptor(new RetryIntercepter(4))//重试 +// .addInterceptor(new GzipRequestInterceptor())//开启Gzip压缩 + +// .addInterceptor(new DefaultHeaderInterceptor())//请求连接中添加头信息 +// .addInterceptor(new ProgressInterceptor())//请求url的进度 +// .addInterceptor(new TokenInterceptor())//token过期,自动刷新Token +// .addInterceptor(new SignInterceptor())//所有的接口,默认需要带上sign,timestamp2个参数 +// .addNetworkInterceptor(new ParamsEncryptInterceptor())//参数加密,一般针对表单中的字段和值进行加密,防止中途第三方进行窥探和篡改 + .cookieJar(persistentCookieJar) + .connectTimeout(5, TimeUnit.SECONDS) + .readTimeout(5, TimeUnit.SECONDS) + .writeTimeout(5, TimeUnit.SECONDS) + .build(); + + } + if (mRetrofit == null) { + mRetrofit = new Retrofit.Builder() + .client(mOkHttpClient) + .baseUrl(BASE_URL) + .addConverterFactory(CustomizeGsonConverterFactory.create()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) + .build(); + } + return sInstance; + } + + public static RetrofitProvider getInstance() { + if (sInstance == null) { + synchronized (RetrofitProvider.class) { + if (sInstance == null) { + sInstance = new RetrofitProvider(); + } + } + } + return sInstance; + } + + public T createService(Class tClass) { + return mRetrofit.create(tClass); + } + + public ApiService getApiService() { + if (restService == null) + restService = mRetrofit.create(ApiService.class); + return restService; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java new file mode 100644 index 0000000..d7afc7a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java @@ -0,0 +1,23 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import java.io.IOException; + +import okhttp3.Headers; +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +public class DefaultHeaderInterceptor implements Interceptor { + + @Override + public Response intercept(Chain chain) throws IOException { + Request originalrequest = chain.request();//原始request + Headers headers = new Headers.Builder() + .add("name", "jason") + .add("age", "27") + .add("token", "dfedsdfsdfffdd12dsef123sdfef1s2dfe") + .build();//构造一个Headers + Request request = originalrequest.newBuilder().headers(headers).build();//注意这行代码别写错了 + return chain.proceed(request); + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java new file mode 100644 index 0000000..a4d11ff --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java @@ -0,0 +1,48 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; /** This interceptor compresses the HTTP request body. Many webservers can't handle this! */ + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okio.BufferedSink; +import okio.GzipSink; +import okio.Okio; + +/** + * 我们在向服务器提交大量数据的时候,希望对post的数据进行gzip压缩 + * 这个拦截器压缩了请求实体. 很多网络服务器无法处理它 */ +public class GzipRequestInterceptor implements Interceptor { + @Override public Response intercept(Interceptor.Chain chain) throws IOException { + Request originalRequest = chain.request(); + if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { + return chain.proceed(originalRequest); + } + + Request compressedRequest = originalRequest.newBuilder() + .header("Content-Encoding", "gzip") + .method(originalRequest.method(), gzip(originalRequest.body())) + .build(); + return chain.proceed(compressedRequest); + } + + private RequestBody gzip(final RequestBody body) { + return new RequestBody() { + @Override public MediaType contentType() { + return body.contentType(); + } + + @Override public long contentLength() { + return -1; // We don't know the compressed length in advance! + } + + @Override public void writeTo(BufferedSink sink) throws IOException { + BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); + body.writeTo(gzipSink); + gzipSink.close(); + } + }; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java new file mode 100644 index 0000000..71e2a0d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java @@ -0,0 +1,44 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import android.util.Log; + + +import com.android.learn.base.utils.LogUtil; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; + + +public class HttpLoggingInterceptor implements Interceptor { + public Response intercept(Interceptor.Chain chain) throws IOException { + //这个chain里面包含了request和response,所以你要什么都可以从这里拿 + Request request = chain.request(); + + long t1 = System.nanoTime();//请求发起的时间 + LogUtil.d("HttpLoggingInterceptor",String.format("发送请求 %s on %s%n%s", + request.url(), chain.connection(), request.headers())); + + Response response = chain.proceed(request); + + long t2 = System.nanoTime();//收到响应的时间 + + //这里不能直接使用response.body().string()的方式输出日志 + //因为response.body().string()之后,response中的流会被关闭,程序会报错,我们需要创建出一 + //个新的response给应用层处理 + ResponseBody responseBody = response.peekBody(1024 * 1024); + + LogUtil.d("HttpLoggingInterceptor",String.format("接收响应: [%s] %n返回json:【%s】 %.1fms%n%s", + response.request().url(), + responseBody.string(), + (t2 - t1) / 1e6d, + response.headers())); + + return response; + } +} + + diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java new file mode 100644 index 0000000..d5a5de4 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java @@ -0,0 +1,38 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import android.util.Log; + +import com.android.learn.base.application.CustomApplication; +import com.android.learn.base.utils.NetUtils; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +public class OfflineCacheInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request request = chain.request(); + if (!NetUtils.isConnected()) { + int offlineCacheTime = Integer.MAX_VALUE;//离线的时候的缓存的过期时间 + request = request.newBuilder() +// .cacheControl(new CacheControl +// .Builder() +// .maxStale(60, TimeUnit.SECONDS) +// .onlyIfCached() +// .build() +// ) +// 两种方式结果是一样的,写法不同 + .header("Cache-Control", "public, only-if-cached, max-stale=" + offlineCacheTime) + .build(); + } + Response response = chain.proceed(request); + Log.d("gaolei","OfflineCacheInterceptor------------response.code():"+response.code()); + if (response.code() == 504) { + // 缓存已经不可使用 + } + return response; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java new file mode 100644 index 0000000..78b383a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java @@ -0,0 +1,25 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import android.util.Log; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +public class OnlineCacheInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + Request request = chain.request(); + Response response = chain.proceed(request); + int onlineCacheTime = 10;//在线的时候的缓存过期时间,如果想要不缓存,直接时间设置为0 + Response newResponse = response.newBuilder() + .header("Cache-Control", "public, max-age=" + onlineCacheTime) + .removeHeader("Pragma") + .build(); + Log.d("gaolei","OnlineCacheInterceptor------------newResponse.code():"+newResponse.code()); + + return newResponse; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java new file mode 100644 index 0000000..6655ba3 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java @@ -0,0 +1,100 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import android.util.Base64; +import android.util.Log; + +import java.io.IOException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.spec.InvalidKeySpecException; + +import javax.crypto.Cipher; +import javax.crypto.KeyGenerator; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; + +import okhttp3.Interceptor; +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okio.Buffer; + +public class ParamsEncryptInterceptor implements Interceptor { + + private static final String TAG = ParamsEncryptInterceptor.class.getSimpleName(); + + private static final boolean DEBUG = true; + + @Override + public Response intercept(Chain chain) throws IOException { + + + Request request = chain.request(); + try { + RequestBody oldBody = request.body(); + Buffer buffer = new Buffer(); + oldBody.writeTo(buffer); + String strOldBody = buffer.readUtf8(); + MediaType mediaType = MediaType.parse("text/plain; charset=utf-8"); + //在发动报文前,用Base64和AES对参数进行加密转码 + String strNewBody = encryptDataWithSymmetricKey(generateSymmetric(), strOldBody); + RequestBody body = RequestBody.create(mediaType, strNewBody); + request = request.newBuilder().header("Content-Type", body.contentType().toString()) + .header("Content-Length", String.valueOf(body.contentLength())).method(request.method(), body).build(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (InvalidKeySpecException e) { + e.printStackTrace(); + } + return chain.proceed(request); +} + + //加密算法自己和服务端约定即可 + private static String encrypt(String str){ + //your code + return ""; + } + + //生成了对称密钥 + public static SecretKeySpec generateSymmetric() { + // Set up secret key spec for 128-bit AES encryption and decryption + SecretKeySpec sks = null; + try { + SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); + sr.setSeed("any data used as random seed".getBytes()); + KeyGenerator kg = KeyGenerator.getInstance("AES"); + kg.init(128, sr); + SecretKey secretKey=kg.generateKey(); + //在这里可以用从服务端获取到的RSA公钥对刚才随机产生的加密密钥secretKey进行加密 + sks = new SecretKeySpec(secretKey.getEncoded(), "AES"); + + System.out.println("AES KEY: " + sks); + } catch (Exception e) { + Log.e(TAG, "AES secret key spec error"); + } + return sks; + } + +//用SecretKeySpec加密数据 + private static String encryptDataWithSymmetricKey (SecretKeySpec symmKey, String data) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { + + // encryption + byte[] toBeCiphred = data.getBytes("UTF-8"); + String encryptedData = null; + + try { + Cipher c = Cipher.getInstance("AES"); + c.init(Cipher.ENCRYPT_MODE, symmKey); + byte[] encodedBytes = c.doFinal(toBeCiphred); + System.out.println("BYTE STRING (ASYMM): " + encodedBytes); + //将SecretKeySpec转换为Base64字符串格式 + encryptedData = Base64.encodeToString(encodedBytes, Base64.DEFAULT); + + } catch (Exception e) { + Log.e(TAG, "AES encryption error"); + throw new RuntimeException(e); + } + return encryptedData; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java new file mode 100644 index 0000000..3b505d6 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java @@ -0,0 +1,41 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import com.android.learn.base.thirdframe.retrofit.interceptor.util.ProgressListener; +import com.android.learn.base.thirdframe.retrofit.interceptor.util.ProgressResponseBody; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; + +/** + * @author guolin + * @since 2017/11/5 + */ +public class ProgressInterceptor implements Interceptor { + + public static final Map LISTENER_MAP = new HashMap<>(); + + public static void addListener(String url, ProgressListener listener) { + LISTENER_MAP.put(url, listener); + } + + public static void removeListener(String url) { + LISTENER_MAP.remove(url); + } + + @Override + public Response intercept(Chain chain) throws IOException { + Request request = chain.request(); + Response response = chain.proceed(request); + String url = request.url().toString(); + ResponseBody body = response.body(); + Response newResponse = response.newBuilder().body(new ProgressResponseBody(url, body)).build(); + return newResponse; + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java new file mode 100644 index 0000000..9f9e521 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java @@ -0,0 +1,30 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +public class RetryIntercepter implements Interceptor { + + public int maxRetry;//最大重试次数 + private int retryNum = 0;//假如设置为3次重试的话,则最大可能请求4次(默认1次+3次重试) + + public RetryIntercepter(int maxRetry) { + this.maxRetry = maxRetry; + } + + @Override + public Response intercept(Chain chain) throws IOException { + Request request = chain.request(); + System.out.println("retryNum=" + retryNum); + Response response = chain.proceed(request); + while (!response.isSuccessful() && retryNum < maxRetry) { + retryNum++; + System.out.println("retryNum=" + retryNum); + response = chain.proceed(request); + } + return response; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java new file mode 100644 index 0000000..662e848 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java @@ -0,0 +1,160 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import android.content.Context; +import android.support.v4.util.ArrayMap; +import android.util.Log; +import android.util.Pair; + +import com.android.learn.base.utils.LogUtil; +import com.android.learn.base.utils.Utils; +import com.gaolei.basemodule.BuildConfig; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; + +import okhttp3.FormBody; +import okhttp3.Interceptor; +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; +import okio.Buffer; + + + +public final class SignInterceptor implements Interceptor { + + private static final String MD5KEY = "base64:FgBvWS7+m3BPRnKemuoOwXEf7kvldmM+VOmJS5Iccxs="; + private Context mContext; + + public SignInterceptor() { + } + + @Override + public Response intercept(Chain chain) throws IOException { + + Request request = chain.request(); + + //header add version + Request.Builder requestBuilder = request.newBuilder(); + requestBuilder.addHeader("version", BuildConfig.VERSION_NAME); + requestBuilder.addHeader("platform", "ANDROID"); + + if (!request.method().equals("POST")) { + return chain.proceed(request); + } + + JSONObject bodyJson = null; + List> params = new ArrayList<>(); + ArrayMap arrayMap = new ArrayMap<>(); + + FormBody body = null; + try { + body = (FormBody) request.body(); + } catch (ClassCastException c) { + } + + if (body != null) { + + int size = body.size(); + if (size > 0) { + for (int i = 0; i < size; i++) { + params.add(new Pair<>(body.name(i), body.value(i))); + } + } + } else { + RequestBody requestBody = request.body(); + + if (requestBody != null) { + Buffer buffer = new Buffer(); + requestBody.writeTo(buffer); + Charset charset = Charset.forName("UTF-8"); + MediaType contentType = requestBody.contentType(); + if (contentType != null) { + charset = contentType.charset(charset); + } + String paramsStr = buffer.readString(charset); + if (BuildConfig.DEBUG) { + Log.i("HTTP", "request = " + paramsStr); + } + + try { + bodyJson = new JSONObject(paramsStr); + } catch (JSONException e) { + LogUtil.e("JSON", "JsonObject err"); + } + + if (bodyJson != null) { + Iterator it = bodyJson.keys(); + while (it.hasNext()) { + String key = it.next(); + Object value = null; + try { + value = bodyJson.get(key); + } catch (JSONException e) { + LogUtil.e("JSON", "JsonObject get err"); + } + if (key.equals("token")) { + arrayMap.put("token", String.valueOf(value)); + arrayMap.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000)); + + for (String strKey : arrayMap.keySet()) { + params.add(new Pair<>(strKey, arrayMap.get(strKey))); + } + } else { + params.add(new Pair<>(key, String.valueOf(value))); + } + + } + } + + } + } + + params.add(new Pair<>("MD5Key", MD5KEY)); + Collections.sort(params, new Comparator>() { + @Override + public int compare(Pair lhs, Pair rhs) { + return lhs.second.compareTo(rhs.second); + } + }); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < params.size(); i++) { + sb.append(params.get(i).second); + if (i < params.size() - 1) { + sb.append(""); + } + } + + String sign = Utils.md5Encode(sb.toString()); + params.add(new Pair<>("sign", sign)); + + for (Pair pair : params) { + if ((arrayMap.containsKey(pair.first) || pair.first.equals("sign")) && bodyJson != null) { + try { + bodyJson.put(pair.first, pair.second); + } catch (JSONException e) { + LogUtil.e("JSON", "JsonObject put err"); + } + } + } + + String postBodyString = bodyJson.toString(); + request = requestBuilder + .post(RequestBody.create(MediaType.parse("application/json;charset=UTF-8"), + postBodyString)) + .build(); + + return chain.proceed(request); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java new file mode 100644 index 0000000..bd039f2 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java @@ -0,0 +1,70 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import com.android.learn.base.utils.LogUtil; + +import java.io.IOException; + +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +public class TokenInterceptor implements Interceptor { + + String TAG=getClass()+""; + @Override + public Response intercept(Chain chain) throws IOException { + Request request = chain.request(); + Response response = chain.proceed(request); + LogUtil.d(TAG,response.code()+""); + + if (isTokenExpired(response)) {//根据和服务端的约定判断token过期 + LogUtil.d(TAG,"静默自动刷新Token,然后重新请求数据"); + //同步请求方式,获取最新的Token + String newSession = getNewToken(); + //使用新的Token,创建新的请求 + Request newRequest = chain.request() + .newBuilder() + .header("Cookie", "JSESSIONID=" + newSession) + .build(); + //重新请求 + return chain.proceed(newRequest); + } + return response; + } + + /** + * 根据Response,判断Token是否失效 + * + * @param response + * @return + */ + private boolean isTokenExpired(Response response) { + if (response.code() == 404) { + return true; + } + return false; + } + + /** + * 同步请求方式,获取最新的Token + * + * @return + */ + private String getNewToken() throws IOException { + // 通过一个特定的接口获取新的token,此处要用到同步的retrofit请求 +// Response_Login loginInfo = CacheManager.restoreLoginInfo(BaseApplication.getContext()); +// String username = loginInfo.getUserName(); +// String password = loginInfo.getPassword(); +// +// LogUtil.print("loginInfo=" + loginInfo.toString()); +// Call call = WebHelper.getSyncInterface().synclogin(new Request_Login(username, password)); +// loginInfo = call.execute().body(); +// LogUtil.print("loginInfo=" + loginInfo.toString()); +// +// loginInfo.setPassword(password); +// CacheManager.saveLoginInfo(loginInfo); +// return loginInfo.getSession(); +// } + return ""; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java new file mode 100644 index 0000000..0096641 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java @@ -0,0 +1,47 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor; + +import java.io.IOException; + +import okhttp3.HttpUrl; +import okhttp3.Interceptor; +import okhttp3.Request; +import okhttp3.Response; + +/* +实际的开发过程中,我们在网络请求中会添加一些公共参数,对于一些可变的公共参数,在缓存数据和访问缓存数据的 +过程中需要删除,比如网络类型,有网络时其值为Wifi或4G等,无网络时可能为none, 这时访问缓存时就会因url不一致导致访问缓存失败 +*/ + +public class UrlResetInterceptor implements Interceptor { + @Override + public Response intercept(Chain chain) throws IOException { + + + Response response = chain.proceed(chain.request()); + HttpUrl newUrl = chain.request().url().newBuilder() + .removeAllQueryParameters("network") + .build(); // 缓存数据前删除可变的公共参数 + Request newRequest = chain.request().newBuilder() + .url(newUrl) + .build(); + return response.newBuilder() + .request(newRequest) + .removeHeader("Pragma") + .header("Cache-Control", "public, max-age=" + 1) + .build(); + + +// Request request = chain.request(); +// HttpUrl url = request.url(); +// String s = url.url().toString(); +// //———请求之前—– +// Response response = null; +// //如果Url中没有包含androidxx关键字,则修改请求链接为http://www.androidxx.cn +// if (s.contains("androidxx")) { +// request = request.newBuilder().url("http://www.androidxx.cn").build(); +// } +// response = chain.proceed(request); +// //———请求之后———— +// return response; + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java new file mode 100644 index 0000000..5f8d468 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java @@ -0,0 +1,16 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor.util; + +/** + * @author guolin + * @since 2017/11/5 + */ +public interface ProgressListener { + + /** + * 当下载进度发生变化时,会回调此方法。 + * @param progress + * 当前的下载进度,参数值的范围是0-100。 + */ + void onProgress(int progress); + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java new file mode 100644 index 0000000..d3f9b5a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java @@ -0,0 +1,86 @@ +package com.android.learn.base.thirdframe.retrofit.interceptor.util; + +import android.util.Log; + +import com.android.learn.base.thirdframe.retrofit.interceptor.ProgressInterceptor; + +import java.io.IOException; + +import okhttp3.MediaType; +import okhttp3.ResponseBody; +import okio.Buffer; +import okio.BufferedSource; +import okio.ForwardingSource; +import okio.Okio; +import okio.Source; + +/** + * @author guolin + * @since 2017/11/5 + */ +public class ProgressResponseBody extends ResponseBody { + + private static final String TAG = "ProgressResponseBody"; + + private BufferedSource bufferedSource; + + private ResponseBody responseBody; + + private ProgressListener listener; + + public ProgressResponseBody(String url, ResponseBody responseBody) { + this.responseBody = responseBody; + listener = ProgressInterceptor.LISTENER_MAP.get(url); + } + + @Override + public MediaType contentType() { + return responseBody.contentType(); + } + + @Override + public long contentLength() { + return responseBody.contentLength(); + } + + @Override + public BufferedSource source() { + if (bufferedSource == null) { + bufferedSource = Okio.buffer(new ProgressSource(responseBody.source())); + } + return bufferedSource; + } + + private class ProgressSource extends ForwardingSource { + + long totalBytesRead = 0; + + int currentProgress; + + ProgressSource(Source source) { + super(source); + } + + @Override + public long read(Buffer sink, long byteCount) throws IOException { + long bytesRead = super.read(sink, byteCount); + long fullLength = responseBody.contentLength(); + if (bytesRead == -1) { + totalBytesRead = fullLength; + } else { + totalBytesRead += bytesRead; + } + int progress = (int) (100f * totalBytesRead / fullLength); + Log.d(TAG, "download progress is " + progress); + if (listener != null && progress != currentProgress) { + listener.onProgress(progress); + } + if (listener != null && totalBytesRead == fullLength) { + listener = null; + } + currentProgress = progress; + return bytesRead; + } + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java new file mode 100644 index 0000000..3527b07 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java @@ -0,0 +1,72 @@ +package com.android.learn.base.thirdframe.rxjava; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; + +import com.android.learn.base.activity.BaseActivity; +import com.android.learn.base.application.CustomApplication; +import com.android.learn.base.mview.BaseView; +import com.android.learn.base.utils.NetUtils; +import com.android.learn.base.utils.Utils; +import com.android.learn.base.view.CustomProgressDialog; + +import java.io.IOException; + +import io.reactivex.observers.ResourceObserver; +import retrofit2.HttpException; + +public abstract class BaseObserver extends ResourceObserver { + + protected String errMsg = ""; + private boolean isCancelDialog = true; + private Context context; +// public static Dialog prgressDialog; + + protected BaseObserver(boolean isShowDialog) { + // context在CustomProgressDialog中用到 +// this.context = context; +// if (isShowDialog) { +// Activity activity=BaseActivity.context; +// CustomProgressDialog.show(activity); +// } + } + + protected BaseObserver(BaseView view, boolean isShowError) { + } + + + public void setCancelDialog(boolean cancelDialog) { + isCancelDialog = cancelDialog; + } + + @Override + + public void onNext(T t) { + + } + + @Override + public void onError(Throwable e) { + if(isCancelDialog) + CustomProgressDialog.cancel(); + if (!NetUtils.isConnected()) { + errMsg = "网络连接出错,请检查网络"; + + } else if (e instanceof HttpException) { + errMsg = "服务器访问异常(HttpException)"; + } else if (e instanceof IOException) { + errMsg = "服务器访问异常(IOException)"; + } + if (!"".equals(errMsg)) + Utils.showToast(errMsg, true); + + } + + @Override + public void onComplete() { + if(isCancelDialog) + CustomProgressDialog.cancel(); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java new file mode 100644 index 0000000..e4bc9c7 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java @@ -0,0 +1,164 @@ +package com.android.learn.base.utils; + +import android.app.AlarmManager; +import android.app.Dialog; +import android.app.PendingIntent; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Environment; +import android.os.Looper; +import android.support.v7.app.AlertDialog; +import android.util.Log; +import android.view.Gravity; +import android.view.WindowManager; +import android.widget.Toast; + + +import com.android.learn.base.application.CustomApplication; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Map; + +public class CrashHandler implements Thread.UncaughtExceptionHandler { + /** + * 系统默认的异常处理类 + */ + private Thread.UncaughtExceptionHandler mDefaultHandler; + Context mcontext; + private static CrashHandler INSTANCE = new CrashHandler(); + String errorSavePath; + //用来存储设备信息和异常信息 + private Map infos = new LinkedHashMap(); + + public static CrashHandler getInstance() { + return INSTANCE; + } + + public void init(Context context) { + mcontext = context; + mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();// 获取默认的异常处理类 + Thread.setDefaultUncaughtExceptionHandler(this);// 设置当前处理类为默认的异常处理类 + } + + @Override + public void uncaughtException(Thread thread, Throwable ex) { + saveCrashInfoIntoSd(ex); + showToast(mcontext, "程序出错了,请先用其它功能,我们会尽快修复!"); + + try { + Thread.sleep(2000); + } catch (Exception e) { + // TODO: handle exception + } + + +// if (SPUtils.contains("currentTime")) { +// String lastTimeMillis = (String) SPUtils.get("currentTime", String.valueOf("0")); +// LogUtil.d("lastTimeMillis:" + lastTimeMillis); +// LogUtil.d("System.currentTimeMillis():" + System.currentTimeMillis()); +// LogUtil.d("priod:" + (System.currentTimeMillis() - Long.valueOf(lastTimeMillis))); +// long timeInterval = System.currentTimeMillis() - Long.valueOf(lastTimeMillis); +// if (timeInterval > 60 * 1000) { +// SPUtils.put("currentTime", String.valueOf(System.currentTimeMillis())); +// } +// } else { +// SPUtils.put("currentTime", String.valueOf(System.currentTimeMillis())); +// +// } + +// android.os.Process.killProcess(android.os.Process.myPid()); +// System.exit(0); + ExitAppUtils.getInstance().exit(); +// } + } + + private void showToast(final Context context, final String msg) { + new Thread(new Runnable() { + + @Override + public void run() { + Looper.prepare(); + Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); + Looper.loop(); + } + }).start(); + } + + + // 收集设备、软件参数信息 + private void collectDeviceInfo() { + try { + PackageManager pm = CustomApplication.context.getPackageManager(); + PackageInfo pi = pm.getPackageInfo(CustomApplication.context.getPackageName(), PackageManager.GET_ACTIVITIES); + if (pi != null) { + String versionName = pi.versionName == null ? "null" : pi.versionName; + String versionCode = pi.versionCode + ""; + infos.put("systemVersion", SystemUtil.getSystemVersion()); + infos.put("deviceModel", SystemUtil.getSystemModel()); + infos.put("deviceBrand", SystemUtil.getDeviceBrand()); + infos.put("versionName", versionName); + infos.put("versionCode", versionCode); + } + } catch (PackageManager.NameNotFoundException e) { + } + + } + + // 保存错误信息到SD卡文件中 + private void saveCrashInfoIntoSd(Throwable ex) { + collectDeviceInfo(); + //创建文件夹 + errorSavePath = Environment.getExternalStorageDirectory().getPath() + "/" + mcontext.getPackageName() + "/crash"; + File dir = new File(errorSavePath); + if (!dir.exists()) dir.mkdirs(); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String time = formatter.format(new Date()); + StringBuffer sb = new StringBuffer(); + sb.append("\n" + time + "\n"); + for (Map.Entry entry : infos.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + sb.append(key + "=" + value + "\n"); + } + + sb.append(getCrashInfo(ex)); + + try { + //创建文件 + String fileName = "crash-" + time + ".txt"; + File file = new File(errorSavePath + "//" + fileName); + if (!file.exists()) file.createNewFile(); + + FileOutputStream fos = new FileOutputStream(file); + fos.write(sb.toString().getBytes()); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 得到程序崩溃的详细信息 + */ + public String getCrashInfo(Throwable ex) { + Writer result = new StringWriter(); + PrintWriter printWriter = new PrintWriter(result); + ex.setStackTrace(ex.getStackTrace()); + ex.printStackTrace(printWriter); + printWriter.close(); + return result.toString(); + } + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java new file mode 100644 index 0000000..242f86b --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java @@ -0,0 +1,151 @@ +package com.android.learn.base.utils; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Build; +import android.os.Environment; +import android.os.Looper; +import android.util.Log; +import android.widget.Toast; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.lang.Thread.UncaughtExceptionHandler; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.TimeZone; + +public class CustomCrashHandler implements UncaughtExceptionHandler { + private static final String TAG = "Activity"; + private Context mContext; + private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().toString(); + private static CustomCrashHandler mInstance = new CustomCrashHandler(); + + + private CustomCrashHandler(){} + + public static CustomCrashHandler getInstance(){ + return mInstance; + } + + + @Override + public void uncaughtException(Thread thread, Throwable ex) { + savaInfoToSD(mContext, ex); + + showToast(mContext, "程序出错了,请先用其它功能,我们会尽快修复!"); + try { + thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } +// android.os.Process.killProcess(android.os.Process.myPid()); +// System.exit(0); + + ExitAppUtils.getInstance().exit(); + + } + + + public void init(Context context){ + mContext = context; + Thread.setDefaultUncaughtExceptionHandler(this); + } + + + private void showToast(final Context context, final String msg){ + new Thread(new Runnable() { + + @Override + public void run() { + Looper.prepare(); + Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); + Looper.loop(); + } + }).start(); + } + + + private HashMap obtainSimpleInfo(Context context){ + HashMap map = new HashMap(); + PackageManager mPackageManager = context.getPackageManager(); + PackageInfo mPackageInfo = null; + try { + mPackageInfo = mPackageManager.getPackageInfo(context.getPackageName(), PackageManager.GET_ACTIVITIES); + } catch (NameNotFoundException e) { + e.printStackTrace(); + } + + map.put("versionName", mPackageInfo.versionName); + map.put("versionCode", "" + mPackageInfo.versionCode); + + map.put("MODEL", "" + Build.MODEL); + map.put("SDK_INT", "" + Build.VERSION.SDK_INT); + map.put("PRODUCT", "" + Build.PRODUCT); + + return map; + } + + + private String obtainExceptionInfo(Throwable throwable) { + StringWriter mStringWriter = new StringWriter(); + PrintWriter mPrintWriter = new PrintWriter(mStringWriter); + throwable.printStackTrace(mPrintWriter); + mPrintWriter.close(); + + Log.e(TAG, mStringWriter.toString()); + return mStringWriter.toString(); + } + + + private String savaInfoToSD(Context context, Throwable ex){ + String fileName = null; + StringBuffer sb = new StringBuffer(); + + for (Map.Entry entry : obtainSimpleInfo(context).entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + sb.append(key).append(" = ").append(value).append("\n"); + } + + sb.append(obtainExceptionInfo(ex)); + + if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ + File dir = new File(SDCARD_ROOT + File.separator + "crash" + File.separator); + if(! dir.exists()){ + dir.mkdir(); + } + + try{ + fileName = dir.toString() + File.separator + paserTime(System.currentTimeMillis()) + ".log"; + FileOutputStream fos = new FileOutputStream(fileName); + fos.write(sb.toString().getBytes()); + fos.flush(); + fos.close(); + }catch(Exception e){ + e.printStackTrace(); + } + + } + + return fileName; + + } + + + private String paserTime(long milliseconds) { + System.setProperty("user.timezone", "Asia/Shanghai"); + TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); + TimeZone.setDefault(tz); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); + String times = format.format(new Date(milliseconds)); + + return times; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java new file mode 100644 index 0000000..5616e8a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java @@ -0,0 +1,16 @@ +package com.android.learn.base.utils; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; +import android.util.Log; +import android.view.WindowManager; +import android.widget.Toast; + +public class DialogUtil { + + + + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java new file mode 100644 index 0000000..7e4cc6f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java @@ -0,0 +1,191 @@ + +package com.android.learn.base.utils; + +import android.content.Context; +import android.os.Environment; +import android.os.Handler; +import android.text.TextUtils; +import android.util.Log; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +public class ErrorLogSave extends Thread { + + private static final String TAG = "ErrorLogSave"; + + Context context; + + private static final String SD_PATH = Environment.getExternalStorageDirectory() + .getAbsolutePath(); + + private static final String FILE_PATH = SD_PATH + "/xuetangx_error_log/"; + + private static String packageName; + + protected final Handler mHandler; + + public ErrorLogSave(Context context) { + this.context = context; + mHandler = new Handler(); + packageName = context.getPackageName(); + } + + + public static void onError(Context context) { + new ErrorLogSave(context).start(); + } + + /** + * 获取异常日志信息 + * + * @param paramContext + * @return + */ + private static String getExceptionLog(Context paramContext) { + String localObject = ""; + try { + String str1 = paramContext.getPackageName(); + String str2 = ""; + int i1 = 0; + int i2 = 0; + ArrayList localArrayList = new ArrayList(); + localArrayList.add("logcat"); + localArrayList.add("-d"); + localArrayList.add("-v"); + localArrayList.add("raw"); + localArrayList.add("-s"); + localArrayList.add("AndroidRuntime:E"); + localArrayList.add("-p"); + localArrayList.add(str1); + Process localProcess = Runtime.getRuntime().exec( + (String[]) localArrayList.toArray(new String[localArrayList.size()])); + BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader( + localProcess.getInputStream()), 1024); + for (String str3 = localBufferedReader.readLine(); str3 != null; str3 = localBufferedReader + .readLine()) { + if (str3.indexOf("thread attach failed") < 0) { + str2 = str2 + str3 + '\n'; + } + if ((i2 == 0) && (str3.toLowerCase().indexOf("exception") >= 0)) { + i2 = 1; + } + if ((i1 != 0) || (str3.indexOf(str1) < 0)) { + continue; + } + i1 = 1; + } + if ((str2.length() > 0) && (i2 != 0) && (i1 != 0)) { + localObject = str2; + } + try { + Runtime.getRuntime().exec("logcat -c"); + } catch (Exception localException2) { + Log.e(TAG, "Failed to clear log"); + } + } catch (Exception localException1) { + Log.e(TAG, "Failed to catch error log"); + } + return localObject; + } + + /** + * 存储错误日志到sd卡
目录名称:"/sd/itotem_error_log/"
文件名称: + * packagename_tiem(YYYY_MM_DD-HH_mm_ss) + * + * @param context + * @param errorLog + */ + protected static void cacheErrorLogToSDFile(Context context, String errorLog) { + Log.e(TAG, "cache Error Log To SD File is ruuning:" + errorLog); + if (TextUtils.isEmpty(errorLog)) { + return; + } + FileOutputStream outputStream = null; + try { + long curTimeM = System.currentTimeMillis(); + if (TextUtils.isEmpty(packageName)) { + packageName = context.getPackageName(); + } + // 获取新的文件名称 + String fileName = packageName + "_" + getTime(curTimeM) + ".txt"; + Log.i(TAG, "new file is :" + fileName); + // File file = new File(FILE_PATH, fileName); + File pathFile = new File(FILE_PATH); + File file = new File(pathFile, fileName); + if (!pathFile.exists()) { + pathFile.mkdirs(); + } + if (!file.exists()) { + file.createNewFile(); + } + // 打开一个新的文件 + outputStream = new FileOutputStream(file); + outputStream.write(errorLog.getBytes()); + outputStream.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + return; + } catch (IOException e) { + e.printStackTrace(); + return; + } finally { + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + outputStream = null; + } + } + } + + private static String getTime(long curTime) { + SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); + Date date = new Date(curTime); + return df1.format(date); + } + + + @Override + public void run() { + String str = getExceptionLog(context); + mHandler.post(new SaveErrorLog2SD(str)); + super.run(); + } + + private static final Object a = new Object();// 线程锁 + + /** + * 保存错误日志到sd卡 + * + * @author pengjun + */ + private class SaveErrorLog2SD implements Runnable { + String errorLog; + + SaveErrorLog2SD(String errorLog) { + this.errorLog = errorLog; + } + + @Override + public void run() { + // TODO 执行保存错误日志到卡 +// String deviceInfo = CollectDataManager.getDebugInfosToErrorMessage(context); +// errorLog += "\n deviceInfo:" + deviceInfo; +// cacheErrorLogToSDFile(context, errorLog); + + } + + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java new file mode 100644 index 0000000..d41c683 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java @@ -0,0 +1,36 @@ +package com.android.learn.base.utils; + +import android.app.Activity; + +import java.util.LinkedList; +import java.util.List; + +public class ExitAppUtils { + + private List mActivityList = new LinkedList(); + private static ExitAppUtils instance = new ExitAppUtils(); + + private ExitAppUtils(){}; + + public static ExitAppUtils getInstance(){ + return instance; + } + + public void addActivity(Activity activity){ + mActivityList.add(activity); + } + + public void delActivity(Activity activity){ + mActivityList.remove(activity); + } + + public void exit(){ + for(Activity activity : mActivityList){ + activity.finish(); + } + + System.exit(0); + } + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java new file mode 100644 index 0000000..28cecea --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java @@ -0,0 +1,245 @@ +package com.android.learn.base.utils; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * JSON字符换和对象间转换的工具类 + */ +public class JsonUtil { + + private static final Gson GSON = new Gson(); + + /** + * 将json字符串转换成相应的对象 + * + * @param jsonString json字符串 + * @param classOfT 对象类型的class + * @param 对象的类型 + * @return 转换后的对象 + * @throws JsonParseException if json is not a valid representation for an object of type classOfT + */ + public static T decode(String jsonString, Class classOfT) throws RuntimeException { + return GSON.fromJson(jsonString, classOfT); + } + + /** + * 将json字符串转换成相应的对象 + * + * @param jsonString json字符串 + * @param typeOfT 对象类型的type + * @param 对象的类型 + * @return 转换后的对象 + * @throws JsonParseException if json is not a valid representation for an object of type typeOfT + */ + public static T decode(String jsonString, Type typeOfT) throws RuntimeException { + return GSON.fromJson(jsonString, typeOfT); + } + + /** + * 将已经从json转换后的对象(通常是一个Map)转换成对应Bean的对象实例 + * + * @param object 一个转json换中的过程对象,通常是一个Map,若传值为null,则返回null + * @param typeOfT 要转换的对象类型的type + * @param 要转换的对象类型 + * @return 转换后的对象 + * @throws JsonParseException if object is not a valid representation for an object of type typeOfT + */ + public static T decode(Object object, Type typeOfT) throws RuntimeException { + String jsonString = GSON.toJson(object); + return GSON.fromJson(jsonString, typeOfT); + } + + /** + * 将一个JavaBean转换成json字符串 + * + * @param object 待转换的对象 + * @return json字符串 + * @throws JsonParseException if there was a problem while parsing object. + */ + public static String encode(Object object) throws RuntimeException { + return GSON.toJson(object); + } + + + /** + * 获取JsonObject + * + * @param json + * @return + */ + public static JsonObject parseJson(String json) { + JsonParser parser = new JsonParser(); + JsonObject jsonObj = parser.parse(json).getAsJsonObject(); + return jsonObj; + } + + /** + * 根据javaBean转json字符串再将字符串转Map对象 + * + * @param object + * @return + */ + public static Map javaBeanToMap(Object object) { + String strJson = encode(object); + return toMap(parseJson(strJson)); + } + + /** + * 将JSONObjec对象转换成Map-List集合 + * + * @param json + * @return + */ + public static Map toMap(JsonObject json) { + Map map = new HashMap(); + Set> entrySet = json.entrySet(); + for (Iterator> iter = entrySet.iterator(); iter.hasNext(); ) { + Map.Entry entry = iter.next(); + String key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof JsonArray) + map.put((String) key, toList((JsonArray) value)); + else if (value instanceof JsonObject) + map.put((String) key, toMap((JsonObject) value)); + else + map.put((String) key, value); + } + return map; + } + + /** + * 将JSONArray对象转换成List集合 + * + * @param json + * @return + */ + public static List toList(JsonArray json) { + List list = new ArrayList(); + for (int i = 0; i < json.size(); i++) { + Object value = json.get(i); + if (value instanceof JsonArray) { + list.add(toList((JsonArray) value)); + } else if (value instanceof JsonObject) { + list.add(toMap((JsonObject) value)); + } else { + list.add(value); + } + } + return list; + } + + /** + * Json解析公用方法 数组 + * + * @param json 解析参数 + * @param token 解析的类型 new TypeToken(){} + * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); + * @return + */ + public static T fromJson(JsonElement json, TypeToken token) { + try { + Gson gson = new Gson(); + return gson.fromJson(json, token.getType()); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * Json解析公用方法 数组 + * + * @param json 解析参数 + * @param type 解析的类型 new TypeToken(){}.getType() + * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); + * @return + */ + public static T fromJson(JsonElement json, Type type) { + try { + Gson gson = new Gson(); + return gson.fromJson(json, type); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * Json解析公用方法 单个类 + * + * @param json 解析参数 + * @param t 解析的类。 class + * @return + */ + public static T fromJson(JsonElement json, Class t) { + try { + Gson gson = new Gson(); + return gson.fromJson(json, t); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * Json解析公用方法 数组 + * + * @param json 解析参数 + * @param token 解析的类型 new TypeToken(){} + * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); + * @return + */ + public static T fromJson(String json, TypeToken token) { + try { + Gson gson = new Gson(); + return gson.fromJson(json, token.getType()); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * Json解析公用方法 单个类 + * + * @param json 解析参数 + * @param t 解析的类。 class + * @return + */ + public static T fromJson(String json, Class t) { + try { + Gson gson = new Gson(); + return gson.fromJson(json, t); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + + /** + * 把数据转换成Json结构 + * + * @param mType Object的数据,支持所有类型 + * @return + */ + public static String toJson(Object mType) { + Gson mGson = new Gson(); + String mResult = mGson.toJson(mType); + return mResult; + } +} + diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java new file mode 100644 index 0000000..0e0bc9c --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java @@ -0,0 +1,32 @@ +package com.android.learn.base.utils; + +import android.content.Context; +import android.view.View; +import android.view.inputmethod.InputMethodManager; + +public class KeyboardUtils { + + public static void showKeyboard(View view) { + InputMethodManager imm = (InputMethodManager) view.getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + view.requestFocus(); + imm.showSoftInput(view, 0); + } + } + + public static void hideKeyboard(View view){ + InputMethodManager imm = (InputMethodManager) view.getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.hideSoftInputFromWindow(view.getWindowToken(),0); + } + } + public static void toggleSoftInput(View view){ + InputMethodManager imm = (InputMethodManager) view.getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.toggleSoftInput(0,0); + } + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java new file mode 100644 index 0000000..3f325d5 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java @@ -0,0 +1,114 @@ +package com.android.learn.base.utils; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.os.Build; +import android.os.LocaleList; +import android.util.DisplayMetrics; +import android.util.Log; + + +import java.util.Locale; + +public class LanguageUtil { + + private static final String TAG = "LanguageUtil"; + + + /** + * 获取选择的语言设置 + * + * @param context + * @return + */ + public static Locale getSetLanguageLocale(Context context) { + int language = (Integer) SPUtils.getParam(context, "language", 0); + LogUtil.d(TAG, "language---------------" + language); +// LogUtil.d(TAG, "getSystemLocale(context)---------------" + getSystemLocale(context)); + switch (language) { + case 0: + return getSystemLocale(context); + case 1: + return Locale.CHINA; + case 2: + return Locale.ENGLISH; + default: + return Locale.CHINA; + } + } + + public static void saveSelectLanguage(Context context, int select) { + SPUtils.setParam(context, "language", select); + + setApplicationLanguage(context); + } + + public static Context setLocal(Context context) { + LogUtil.d(TAG, "getSetLanguageLocale---------------" + getSetLanguageLocale(context)); + return updateResources(context, getSetLanguageLocale(context)); + } + + private static Context updateResources(Context context, Locale locale) { + Locale.setDefault(locale); + + Resources res = context.getResources(); + Configuration config = new Configuration(res.getConfiguration()); + if (Build.VERSION.SDK_INT >= 17) { + config.setLocale(locale); + context = context.createConfigurationContext(config); + } else { + config.locale = locale; + res.updateConfiguration(config, res.getDisplayMetrics()); + } + return context; + } + + /** + * 我们都会在代码中调用context.getResource().getString()这句代码看起来没什么问题,但是你这个context要是用的是applicationContext那么问题就来了。 + * 你会发现当你切换语言后用这样方式设置的string没有改变,所以我们需要改动我们的代码。 + 解决方法就是,在切换语言后把application的updateConfiguration也要更新了 + */ + public static void setApplicationLanguage(Context context) { + Resources resources = context.getApplicationContext().getResources(); + DisplayMetrics dm = resources.getDisplayMetrics(); + Configuration config = resources.getConfiguration(); + Locale locale = getSetLanguageLocale(context); + config.locale = locale; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + LocaleList localeList = new LocaleList(locale); + LocaleList.setDefault(localeList); + config.setLocales(localeList); + context.getApplicationContext().createConfigurationContext(config); + Locale.setDefault(locale); + } + resources.updateConfiguration(config, dm); + } + + public static Locale getSystemLocale(Context context) { + Locale locale; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + locale = LocaleList.getDefault().get(0); + } else { + locale = Locale.getDefault(); + } + return locale; + } + +// public static void saveSystemCurrentLanguage(Context context) { +// Locale locale; +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { +// locale = LocaleList.getDefault().get(0); +// } else { +// locale = Locale.getDefault(); +// } +// Log.d(TAG, locale.getLanguage()); +// SPUtil.getInstance(context).setSystemCurrentLocal(locale); +// } + +// public static void onConfigurationChanged(Context context){ +//// saveSystemCurrentLanguage(context); +// setLocal(context); +// setApplicationLanguage(context); +// } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java new file mode 100644 index 0000000..9b8477f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2006-2014 Tuniu All rights reserved + */ +package com.android.learn.base.utils; + +import android.util.Log; + +import com.gaolei.basemodule.BuildConfig; + + +public class LogUtil { + + private static boolean isDebug = BuildConfig.DEBUG; + private static final String TAG = "zmy"; + + public static void init(boolean isPrintable) { + isDebug = isPrintable; + } + + public static void d(String msg) { + if (!isDebug) { + return; + } + Log.e(TAG, msg); + } + + public static void v(String tag, String msg) { + if (!isDebug) { + return; + } + Log.v(tag, msg); + } + + + public static void d(String tag, String msg) { + if (!isDebug) { + return; + } + Log.d(tag, msg); + } + + + public static void i(String tag, String msg) { + if (!isDebug) { + return; + } + Log.i(tag, msg); + } + + + public static void w(String tag, String msg) { + if (!isDebug) { + return; + } + Log.w(tag, msg); + } + + + public static void e(String tag, String msg) { + if (!isDebug) { + return; + } + Log.e(tag, msg); + } + + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java new file mode 100644 index 0000000..b4a0234 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java @@ -0,0 +1,76 @@ +package com.android.learn.base.utils; + + +import android.app.Activity; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + +import com.android.learn.base.application.CustomApplication; + +/** + * 跟网络相关的工具类 + * + * + * + */ +public class NetUtils +{ + private NetUtils() + { + /* cannot be instantiated */ + throw new UnsupportedOperationException("cannot be instantiated"); + } + + + public static boolean isConnected() + { + + ConnectivityManager connectivity = (ConnectivityManager) CustomApplication.context + .getSystemService(Context.CONNECTIVITY_SERVICE); + + if (null != connectivity) + { + + NetworkInfo info = connectivity.getActiveNetworkInfo(); + if (null != info && info.isConnected()) + { + if (info.getState() == NetworkInfo.State.CONNECTED) + { + return true; + } + } + } + return false; + } + + /** + * 判断是否是wifi连接 + */ + public static boolean isWifi() + { + ConnectivityManager cm = (ConnectivityManager) CustomApplication.context + .getSystemService(Context.CONNECTIVITY_SERVICE); + + if (cm == null) + return false; + return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; + + } + + /** + * 打开网络设置界面 + */ + public static void openSetting(Activity activity) + { + Intent intent = new Intent("/"); + ComponentName cm = new ComponentName("com.android.settings", + "com.android.settings.WirelessSettings"); + intent.setComponent(cm); + intent.setAction("android.intent.action.VIEW"); + activity.startActivityForResult(intent, 0); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java new file mode 100644 index 0000000..05169ab --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java @@ -0,0 +1,130 @@ +package com.android.learn.base.utils; + + +import android.Manifest; +import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.support.v4.app.ActivityCompat; + +public class +PermissionUtil { + + private static String denyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能"; + private static String foreverDenyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能。\n \n 请点击 \"设置\"-\"权限\"-打开所需权限。"; + public static final int PERMISSION_CODE = 10001; + + public static void gotoDetailSettingIntent(Activity context) { + Intent intent = new Intent(); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + if (Build.VERSION.SDK_INT >= 9) { + intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); + intent.setData(Uri.fromParts("package", context.getPackageName(), null)); + } else if (Build.VERSION.SDK_INT <= 8) { + intent.setAction(Intent.ACTION_VIEW); + intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); + intent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName()); + } + context.startActivity(intent); + +// Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); +// Uri uri = Uri.fromParts("package", context.getPackageName(), null); +// intent.setData(uri); + } + + public static void requestDenyDialog(final Activity activity, final String... permissions) { + + String content = getContent(denyRequestContent, permissions); + + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + + builder.setTitle("权限申请") + .setMessage(content) + .setPositiveButton("申请", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + ActivityCompat.requestPermissions(activity, permissions, PERMISSION_CODE); + dialog.dismiss(); + } + }) + .setNegativeButton("取消", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + if (Utils.getTopActivity(activity).equals("MainActivity")) { + activity.finish(); + } + dialog.dismiss(); + } + }); + builder.show(); + } + + public static void requestForeverDenyDialog(final Activity activity, final String... permissions) { + + String content = getContent(foreverDenyRequestContent, permissions); + + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + + builder.setTitle("权限设置") + .setMessage(content) + .setPositiveButton("设置", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + gotoDetailSettingIntent(activity); + dialog.dismiss(); + } + }) + .setNegativeButton("取消", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + + dialog.dismiss(); + } + }); + builder.show(); + } + + public static String getContent(String ifForeverDeny, String... permissions) { + String content = ""; + + if (permissions.length == 1) { + if (permissions[0].equals(Manifest.permission.CAMERA)) + content = String.format(ifForeverDeny, "相机"); + if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) + content = String.format(ifForeverDeny, "存储"); + } + if (permissions.length > 1) { + StringBuilder stringBuilder = new StringBuilder(); + int length = permissions.length; + for (int i = 0; i < length; i++) { + if (permissions[i].equals(Manifest.permission.CAMERA)) + stringBuilder = stringBuilder.append("相机"); + if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) + stringBuilder = stringBuilder.append("存储"); + if (permissions[i].equals(Manifest.permission.ACCESS_FINE_LOCATION)) + stringBuilder = stringBuilder.append("位置"); + if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) + stringBuilder = stringBuilder.append("联系人"); + if (i < length - 1) + stringBuilder = stringBuilder.append("、"); + } + content = String.format(ifForeverDeny, stringBuilder.toString()); + } + return content; + + } + + /** + * 权限请求结果回调接口 + */ + public interface RequestPermissionCallBack { + /** + * 同意授权 + */ + public void granted(); + + /** + * 取消授权 + */ + public void denied(); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java new file mode 100644 index 0000000..9dac18c --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java @@ -0,0 +1,17 @@ +package com.android.learn.base.utils; + +import com.android.learn.base.mmodel.BaseData; +import com.android.learn.base.mmodel.BaseResponse; + +public class ResponseStatusUtil { + + + public static void handleResponseStatus(BaseResponse baseData) { + if (baseData == null) return; + Utils.showToast(baseData.errorMsg, true); + } + public static void handleResponseStatus(BaseData baseData) { + if (baseData == null) return; + Utils.showToast(baseData.errorMsg, true); + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java new file mode 100644 index 0000000..98c6e61 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java @@ -0,0 +1,104 @@ +package com.android.learn.base.utils; + +import android.content.Context; +import android.content.SharedPreferences; + + +public class SPUtils { + + /** + * 保存在手机里面的文件名 + */ + private static final String FILE_NAME = "SP_FILE"; + + + /** + * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 + * @param context + * @param key + * @param object + */ + public static void setParam(Context context , String key, Object object){ + + String type = object.getClass().getSimpleName(); + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + + if("String".equals(type)){ + editor.putString(key, (String)object); + } + else if("Integer".equals(type)){ + editor.putInt(key, (Integer)object); + } + else if("Boolean".equals(type)){ + editor.putBoolean(key, (Boolean)object); + } + else if("Float".equals(type)){ + editor.putFloat(key, (Float)object); + } + else if("Long".equals(type)){ + editor.putLong(key, (Long)object); + } + + editor.commit(); + } + + + /** + * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 + * @param context + * @param key + * @param defaultObject + * @return + */ + public static Object getParam(Context context , String key, Object defaultObject){ + String type = defaultObject.getClass().getSimpleName(); + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); + + if("String".equals(type)){ + return sp.getString(key, (String)defaultObject); + } + + else if("Integer".equals(type)){ + return sp.getInt(key, (Integer)defaultObject); + } + + else if("Boolean".equals(type)){ + return sp.getBoolean(key, (Boolean)defaultObject); + } + + else if("Float".equals(type)){ + return sp.getFloat(key, (Float)defaultObject); + } + + else if("Long".equals(type)){ + return sp.getLong(key, (Long)defaultObject); + } + + return null; + } + + /** + * 清除所有数据 + * @param context + */ + public static void clearAll(Context context) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.clear().commit(); + } + + /** + * 清除指定数据 + * @param context + */ + public static void clear(Context context,String key) { + SharedPreferences sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + editor.remove(key); + editor.commit(); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java new file mode 100644 index 0000000..ac533ab --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java @@ -0,0 +1,145 @@ +package com.android.learn.base.utils; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Rect; +import android.util.DisplayMetrics; +import android.view.View; +import android.view.WindowManager; + +/** + * 获得屏幕相关的辅助类 + * + * + * + */ +public class ScreenUtils +{ + private ScreenUtils() + { + /* cannot be instantiated */ + throw new UnsupportedOperationException("cannot be instantiated"); + } + + /** + * 获得屏幕高度 + * + * @param context + * @return + */ + public static int getScreenWidth(Context context) + { + WindowManager wm = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics outMetrics = new DisplayMetrics(); + wm.getDefaultDisplay().getMetrics(outMetrics); + return outMetrics.widthPixels; + } + + /** + * 获得屏幕宽度 + * + * @param context + * @return + */ + public static int getScreenHeight(Context context) + { + WindowManager wm = (WindowManager) context + .getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics outMetrics = new DisplayMetrics(); + wm.getDefaultDisplay().getMetrics(outMetrics); + return outMetrics.heightPixels; + } + + /** + * 获得状态栏的高度 + * + * @param context + * @return + */ + public static int getStatusHeight(Context context) + { + + int statusHeight = -1; + try + { + Class clazz = Class.forName("com.android.internal.R$dimen"); + Object object = clazz.newInstance(); + int height = Integer.parseInt(clazz.getField("status_bar_height") + .get(object).toString()); + statusHeight = context.getResources().getDimensionPixelSize(height); + } catch (Exception e) + { + e.printStackTrace(); + } + return statusHeight; + } + + /** + * 获取当前屏幕截图,包含状态栏 + * + * @param activity + * @return + */ + public static Bitmap snapShotWithStatusBar(Activity activity) + { + View view = activity.getWindow().getDecorView(); + view.setDrawingCacheEnabled(true); + view.buildDrawingCache(); + Bitmap bmp = view.getDrawingCache(); + int width = getScreenWidth(activity); + int height = getScreenHeight(activity); + Bitmap bp = null; + bp = Bitmap.createBitmap(bmp, 0, 0, width, height); + view.destroyDrawingCache(); + return bp; + + } + + /** + * 获取当前屏幕截图,不包含状态栏 + * + * @param activity + * @return + */ + public static Bitmap snapShotWithoutStatusBar(Activity activity) + { + View view = activity.getWindow().getDecorView(); + view.setDrawingCacheEnabled(true); + view.buildDrawingCache(); + Bitmap bmp = view.getDrawingCache(); + Rect frame = new Rect(); + activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); + int statusBarHeight = frame.top; + + int width = getScreenWidth(activity); + int height = getScreenHeight(activity); + Bitmap bp = null; + bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height + - statusBarHeight); + view.destroyDrawingCache(); + return bp; + + } + /** + * dp转换成px + * + * @param context Context + * @param dp dp + * @return px值 + */ + public static int dp2px(Context context, float dp) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dp * scale + 0.5f); + } + public static int px2sp(Context context, float pxValue) { + float fontScale = context.getResources().getDisplayMetrics().scaledDensity; + return (int) (pxValue / fontScale + 0.5f); + } + //转换dip为px + public static int dp2px(Context context, int dip) { + float scale = context.getResources().getDisplayMetrics().density; + return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1)); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java new file mode 100644 index 0000000..e2c1d3d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java @@ -0,0 +1,69 @@ +package com.android.learn.base.utils; + +import android.app.Activity; +import android.content.Context; +import android.telephony.TelephonyManager; + +import java.util.Locale; + + +public class SystemUtil { + + /** + * 获取当前手机系统语言。 + * + * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN” + */ + public static String getSystemLanguage() { + return Locale.getDefault().getLanguage(); + } + + /** + * 获取当前系统上的语言列表(Locale列表) + * + * @return 语言列表 + */ + public static Locale[] getSystemLanguageList() { + return Locale.getAvailableLocales(); + } + + /** + * 获取当前手机系统版本号 + * + * @return 系统版本号 + */ + public static String getSystemVersion() { + return android.os.Build.VERSION.RELEASE; + } + + /** + * 获取手机型号 + * + * @return 手机型号 + */ + public static String getSystemModel() { + return android.os.Build.MODEL; + } + + /** + * 获取手机厂商 + * + * @return 手机厂商 + */ + public static String getDeviceBrand() { + return android.os.Build.BRAND; + } + + /** + * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限) + * + * @return 手机IMEI + */ + public static String getIMEI(Context ctx) { + TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE); + if (tm != null) { + return tm.getDeviceId(); + } + return null; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java new file mode 100644 index 0000000..787925d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java @@ -0,0 +1,244 @@ +package com.android.learn.base.utils; + +import android.app.ActivityManager; +import android.content.ClipboardManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Looper; +import android.text.TextUtils; +import android.view.Gravity; +import android.widget.Toast; + + +import com.android.learn.base.application.CustomApplication; + +import java.security.MessageDigest; +import java.text.NumberFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.regex.Pattern; + +/** + * Created by gaolei on 2018/6/15. + */ + +public class Utils { + + public static Pattern intPattern = Pattern.compile("^[-+]?[0-9]"); + public static Pattern decimalPattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$"); + + /** + * md5 加密 + * + * @param str 要加密的字符串 + * @return + */ + public static String md5Encode(String str) { + StringBuffer buf = new StringBuffer(); + try { + MessageDigest md5 = MessageDigest.getInstance("MD5"); + md5.update(str.getBytes()); + byte[] bytes = md5.digest(); + for (int i = 0; i < bytes.length; i++) { + String s = Integer.toHexString(bytes[i] & 0xff); + if (s.length() == 1) { + buf.append("0"); + } + buf.append(s); + } + + } catch (Exception ex) { + } + return buf.toString(); + } + + public static String getTopActivity(Context context) { + ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + ActivityManager.RunningTaskInfo taskInfo = manager.getRunningTasks(1).get(0); + ComponentName componentInfo = taskInfo.topActivity; + String shortClassName = componentInfo.getShortClassName(); //类名 +// String className = info.topActivity.getClassName(); //完整类名 +// String packageName = info.topActivity.getPackageName(); + int index = shortClassName.lastIndexOf("."); + shortClassName = shortClassName.substring(index + 1); + return shortClassName; + } + + //判断手机号是否正确 + public static boolean isMobileNO(String mobile) { + + String telRegex = "[1][23456789]\\d{9}";//"[1]"代表第1位为数字1,"[35678]"代表第二位可以为23456789中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 + + if (TextUtils.isEmpty(mobile)) { + Utils.showToast("请输入正确的手机号", true); + return false; + } else if (!mobile.matches(telRegex)) { + Utils.showToast("请输入正确的手机号", true); + return false; + } + return true; + + } + + /** + * 判断是否是银行卡号 + * + * @param cardId + * @return + */ + public static boolean checkBankCard(String cardId) { + char bit = getBankCardCheckCode(cardId + .substring(0, cardId.length() - 1)); + if (bit == 'N') { + return false; + } + return cardId.charAt(cardId.length() - 1) == bit; + } + + private static char getBankCardCheckCode(String nonCheckCodeCardId) { + if (nonCheckCodeCardId == null + || nonCheckCodeCardId.trim().length() == 0 + || !nonCheckCodeCardId.matches("//d+")) { +// 如果传的不是数据返回N + return 'N'; + } + char[] chs = nonCheckCodeCardId.trim().toCharArray(); + int luhmSum = 0; + for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) { + int k = chs[i] - '0'; + if (j % 2 == 0) { + k *= 2; + k = k / 10 + k % 10; + } + luhmSum += k; + } + return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0'); + } + + public static void showToast(String content, boolean isShort) { + try { + Toast toast = Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG); + toast.setGravity(Gravity.CENTER, 0, 0); + toast.show(); + } catch (Exception e) { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare(); + Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); + Looper.loop(); + } + + } + public static void showToast(String content, boolean isShort,int gravity) { + try { + Toast toast = Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG); + toast.setGravity(gravity, 0, 0); + toast.show(); + } catch (Exception e) { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare(); + Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); + Looper.loop(); + } + + } + + public static String ms2Date(long _ms) { + Date date = new Date(_ms); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); + return format.format(date); + } + + public static String keepDecimal2(float value) { + NumberFormat ddf1 = NumberFormat.getNumberInstance(); + ddf1.setMaximumFractionDigits(2); + return ddf1.format(value); + } + public static void copyTxt(Context context,String content) { + ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + // 将文本内容放到系统剪贴板里。 + cm.setText(content); + Toast.makeText(context, "复制成功,可以分享给朋友们了", Toast.LENGTH_LONG).show(); + } + + public static int stringToInt(String value) { + return Integer.parseInt(value.trim()); + } + + public static double stringToDouble(String value) { + return Double.parseDouble(value.trim()); + } + + public static float stringToFloat(String value) { + return Float.parseFloat(value.trim()); + } + + public static float stringToDigit(String value) { + + + if (intPattern.matcher(value).matches()) { +//数字 + return Integer.parseInt(value.trim()); + } else if (decimalPattern.matcher(value).matches()) { +//小数 + return Float.parseFloat(value.trim()); + } else { +//非数字 + Utils.showToast("数据格式转化出错", true); + } + return Float.parseFloat(value.trim()); + } + public static int getVersionCode(Context context) { + try { + PackageManager packageManager = context.getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo( + context.getPackageName(), 0); + return packageInfo.versionCode; + } catch (Exception e) { + e.printStackTrace(); + } + return 0; + } + public static String getVersionName(Context context) { + try { + PackageManager packageManager = context.getPackageManager(); + PackageInfo packageInfo = packageManager.getPackageInfo( + context.getPackageName(), 0); + return packageInfo.versionName; + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + + //假设传入的日期格式是yyyy-MM-dd HH:mm:ss, 也可以传入yyyy-MM-dd,如2018-1-1或者2018-01-01格式 + + public static boolean isValidDate(String strDate) { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2018-02-29会被接受,并转换成2018-03-01 + + format.setLenient(false); + Date date = format.parse(strDate); + + //判断传入的yyyy年-MM月-dd日 字符串是否为数字 + String[] sArray = strDate.split("-"); + for (String s : sArray) { + boolean isNum = s.matches("[0-9]+"); + //+表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7") + if (!isNum) { + return false; + } + } + } catch (Exception e) { + // e.printStackTrace(); + // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 + return false; + } + + return true; + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java new file mode 100644 index 0000000..5eb40f3 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java @@ -0,0 +1,34 @@ +package com.android.learn.base.utils.account; + +import com.android.learn.base.event.LoginEvent; +import com.android.learn.base.mmodel.RegisterLoginData; + +import org.greenrobot.eventbus.EventBus; + +public class UserUtil { + + public static boolean logined = false; + public static RegisterLoginData userInfo; + + public static boolean isLogined() { + return logined; + } + + public static void setLogined(boolean logined) { + UserUtil.logined = logined; + } + + public static RegisterLoginData getUserInfo() { + return userInfo; + } + + public static void setUserInfo(RegisterLoginData userInfo) { + UserUtil.userInfo = userInfo; + if (userInfo != null) { + setLogined(true); + } else setLogined(false); + LoginEvent accountEvent = new LoginEvent(); + EventBus.getDefault().post(accountEvent); + + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java new file mode 100644 index 0000000..79c3777 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java @@ -0,0 +1,73 @@ +package com.android.learn.base.view; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Shader; +import android.graphics.drawable.BitmapDrawable; +import android.support.annotation.Nullable; +import android.support.v7.widget.AppCompatImageView; +import android.util.AttributeSet; + +/** + * 功能描述:一个简洁而高效的圆形ImageView + * + * @author (作者) edward(冯丰枫) + * @link http://www.jianshu.com/u/f7176d6d53d2 + * 创建时间: 2018/4/17 0017 + */ +public class CircleImageView extends AppCompatImageView { + private float width; + private float height; + private float radius; + private Paint paint; + private Matrix matrix; + + public CircleImageView(Context context) { + this(context, null); + } + + public CircleImageView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public CircleImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + paint = new Paint(); + paint.setAntiAlias(true); //设置抗锯齿 + matrix = new Matrix(); //初始化缩放矩阵 + } + + /** + * 测量控件的宽高,并获取其内切圆的半径 + */ + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + width = getMeasuredWidth(); + height = getMeasuredHeight(); + radius = Math.min(width, height) / 2; + } + + @Override + protected void onDraw(Canvas canvas) { + paint.setShader(initBitmapShader());//将着色器设置给画笔 + canvas.drawCircle(width / 2, height / 2, radius, paint);//使用画笔在画布上画圆 + } + + /** + * 获取ImageView中资源图片的Bitmap,利用Bitmap初始化图片着色器,通过缩放矩阵将原资源图片缩放到铺满整个绘制区域,避免边界填充 + */ + private BitmapShader initBitmapShader() { + if(getDrawable()==null)return null; + Bitmap bitmap = ((BitmapDrawable) getDrawable()).getBitmap(); + BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); + float scale = Math.max(width / bitmap.getWidth(), height / bitmap.getHeight()); + matrix.setScale(scale, scale);//将图片宽高等比例缩放,避免拉伸 + bitmapShader.setLocalMatrix(matrix); + return bitmapShader; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java new file mode 100644 index 0000000..369c1da --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java @@ -0,0 +1,58 @@ +package com.android.learn.base.view; + +import android.app.Activity; +import android.app.Dialog; +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.gaolei.basemodule.R; + + +public class CustomProgressDialog { + public static Dialog loadingDialog; + + public static Dialog createLoadingDialog(Context context) { + if (context == null) return null; + LayoutInflater inflater = LayoutInflater.from(context); + View v = inflater.inflate(R.layout.dialog_loading, null);// 得到加载view + LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局 + // main.xml中的ImageView + ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img); + TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字 + // 加载动画 + Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation( + context, R.anim.anim_dialog_load); + // 使用ImageView显示动画 + spaceshipImage.startAnimation(hyperspaceJumpAnimation); + + loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog + + loadingDialog.setCancelable(true);// 不可以用“返回键”取消 + loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局 + return loadingDialog; + + } + + public static void show(Activity activity) { + if (loadingDialog != null) return; + if (loadingDialog != null && loadingDialog.isShowing()) return; + loadingDialog = CustomProgressDialog.createLoadingDialog(activity); + loadingDialog.show();//显示 + } + + public static void cancel() { + if (loadingDialog != null) { + loadingDialog.cancel(); + loadingDialog = null; + } + } +} + diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java new file mode 100644 index 0000000..6267254 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java @@ -0,0 +1,4 @@ +package com.android.learn.base.view; + +public class HeaderView { +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java new file mode 100644 index 0000000..4681b8c --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java @@ -0,0 +1,219 @@ +package com.android.learn.base.view; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Build; +import android.os.Message; +import android.support.annotation.RequiresApi; +import android.text.TextUtils; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.ConsoleMessage; +import android.webkit.JsPromptResult; +import android.webkit.JsResult; +import android.webkit.ValueCallback; +import android.webkit.WebChromeClient; +import android.webkit.WebResourceError; +import android.webkit.WebResourceRequest; +import android.webkit.WebResourceResponse; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; + +public class Html5Webview extends WebView { + private ProgressView progressView;//进度条 + private Context context; + + public Html5Webview(Context context) { + this(context, null); + } + + public Html5Webview(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public Html5Webview(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + this.context = context; + init(); + } + + private void init() { + //初始化进度条 + progressView = new ProgressView(context); + progressView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp2px(context, 3))); +// progressView.setColor(Color.BLUE); +// progressView.setProgress(10); + //把进度条加到Webview中 + addView(progressView); + //初始化设置 + initWebSettings(); + setWebChromeClient(new MyWebCromeClient()); + setWebViewClient(new MyWebviewClient()); + } + + private void initWebSettings() { + WebSettings settings = getSettings(); + //默认是false 设置true允许和js交互 + settings.setJavaScriptEnabled(true); + // WebSettings.LOAD_DEFAULT 如果本地缓存可用且没有过期则使用本地缓存,否加载网络数据 默认值 + // WebSettings.LOAD_CACHE_ELSE_NETWORK 优先加载本地缓存数据,无论缓存是否过期 + // WebSettings.LOAD_NO_CACHE 只加载网络数据,不加载本地缓存 + // WebSettings.LOAD_CACHE_ONLY 只加载缓存数据,不加载网络数据 + //Tips:有网络可以使用LOAD_DEFAULT 没有网时用LOAD_CACHE_ELSE_NETWORK + settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + //开启 DOM storage API 功能 较大存储空间,使用简单 + settings.setDomStorageEnabled(true); + //开启 Application Caches 功能 方便构建离线APP 不推荐使用 + settings.setAppCacheEnabled(true); + final String cachePath = context.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath(); + settings.setAppCachePath(cachePath); + settings.setAppCacheMaxSize(5 * 1024 * 1024); + //设置数据库缓存路径 存储管理复杂数据 方便对数据进行增加、删除、修改、查询 不推荐使用 + settings.setDatabaseEnabled(true); + final String dbPath = context.getApplicationContext().getDir("db", Context.MODE_PRIVATE).getPath(); + settings.setDatabasePath(dbPath); + } + + + private class MyWebCromeClient extends WebChromeClient { + @Override + public void onProgressChanged(WebView view, int newProgress) { + if (newProgress == 100) { + //加载完毕进度条消失 + progressView.setVisibility(View.GONE); + } else { + //更新进度 + progressView.setProgress(newProgress); + } + super.onProgressChanged(view, newProgress); + } + + @Override + public void onReceivedTitle(WebView view, String title) { + Log.e("TTT", "title is " + title); + super.onReceivedTitle(view, title); + } + + @Override + public boolean onJsAlert(WebView view, String url, String message, JsResult result) { + return super.onJsAlert(view, url, message, result); + } + + @Override + public boolean onConsoleMessage(ConsoleMessage consoleMessage) { + return super.onConsoleMessage(consoleMessage); + } + + @Override + public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { + return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg); + } + + @Override + public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) { + return super.onJsBeforeUnload(view, url, message, result); + } + + @Override + public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { + return super.onJsConfirm(view, url, message, result); + } + + @Override + public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { + return super.onJsPrompt(view, url, message, defaultValue, result); + } + + @Override + public void onCloseWindow(WebView window) { + super.onCloseWindow(window); + } + + @Override + public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) { + return super.onShowFileChooser(webView, filePathCallback, fileChooserParams); + } + } + + private class MyWebviewClient extends WebViewClient { + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + Log.e("TTT", "shouldOverrideUrlLoading 0"); + Uri uri = Uri.parse(url); + String scheme = uri.getScheme(); + if (TextUtils.isEmpty(scheme)) return true; + if (scheme.equals("nativeapi")) { + //如定义nativeapi://showImg是用来查看大图,这里添加查看大图逻辑 + return true; + } else if (scheme.equals("http") || scheme.equals("https")) { + //处理http协议 + if (Uri.parse(url).getHost().equals("www.example.com")) { + // 内部网址,不拦截,用自己的webview加载 + return false; + } else { + //跳转外部浏览器 + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + context.startActivity(intent); + return true; + } + } + return super.shouldOverrideUrlLoading(view, url); + } + + @Override + public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + Log.e("TTT", "shouldOverrideUrlLoading 1"); + return super.shouldOverrideUrlLoading(view, request); + } + + + @Override + public WebResourceResponse shouldInterceptRequest(WebView view, String url) { + Log.e("TTT", "shouldInterceptRequest 0 url is " + url); + //回调发生在子线程中,不能直接进行UI操作 + return super.shouldInterceptRequest(view, url); + } + + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + @Override + public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { + Log.e("TTT", "shouldInterceptRequest 1 request url is " + request.getUrl().toString()); + return super.shouldInterceptRequest(view, request); + } + + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + Log.e("TTT", "onPageStarted"); + super.onPageStarted(view, url, favicon); + } + + @Override + public void onPageFinished(WebView view, String url) { + Log.e("TTT", "onPageFinished"); + super.onPageFinished(view, url); + } + + @Override + public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { + Log.e("TTT", "onPageFinished"); + super.onReceivedError(view, request, error); + } + } + + /** + * dp转换成px + * + * @param context Context + * @param dp dp + * @return px值 + */ + private int dp2px(Context context, float dp) { + final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dp * scale + 0.5f); + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java new file mode 100644 index 0000000..402cb65 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java @@ -0,0 +1,70 @@ +package com.android.learn.base.view; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.view.View; + +public class ProgressView extends View { + private Paint mPaint; + private int mWidth, mHeight; + private int progress;//加载进度 + + public ProgressView(Context context) { + this(context, null); + } + + public ProgressView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public ProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private void init() { + //初始化画笔 + mPaint = new Paint(); + mPaint.setDither(true); + mPaint.setAntiAlias(true); + mPaint.setStrokeWidth(5); + mPaint.setColor(Color.parseColor("#88b221")); + } + + @Override + protected void onSizeChanged(int w, int h, int ow, int oh) { + mWidth = w; + mHeight = h; + super.onSizeChanged(w, h, ow, oh); + } + + + @Override + protected void onDraw(Canvas canvas) { + canvas.drawRect(0, 0, mWidth * progress / 100, mHeight, mPaint); + super.onDraw(canvas); + } + + /** + * 设置新进度 重新绘制 + * + * @param newProgress 新进度 + */ + public void setProgress(int newProgress) { + this.progress = newProgress; + invalidate(); + } + + /** + * 设置进度条颜色 + * + * @param color 色值 + */ + public void setColor(int color) { + mPaint.setColor(color); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java new file mode 100644 index 0000000..3a226ee --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java @@ -0,0 +1,38 @@ +package com.android.learn.base.view; + +import android.app.Activity; +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import com.gaolei.basemodule.R; + +public class TitleView extends FrameLayout { + + private ImageView iv_back; + + private TextView title; + + public TitleView(Context context, AttributeSet attrs) { + super(context, attrs); + LayoutInflater.from(context).inflate(R.layout.title_view, this); + iv_back =findViewById(R.id.iv_back); + title =findViewById(R.id.title); + iv_back.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + ((Activity) getContext()).finish(); + } + }); + } + + public void setTitleText(String text) { + title.setText(text); + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java new file mode 100644 index 0000000..83459dc --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java @@ -0,0 +1,215 @@ +package com.android.learn.base.view.colorfultab; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Color; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.TabLayout; +import android.support.v4.view.ViewPager; +import android.util.AttributeSet; +import android.util.Log; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import com.gaolei.basemodule.R; + +import java.lang.ref.WeakReference; + +import static android.support.v4.view.ViewPager.SCROLL_STATE_DRAGGING; +import static android.support.v4.view.ViewPager.SCROLL_STATE_IDLE; +import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING; + +/** + * Created by rookie on 2018/4/24. + */ + +public class ColorClipTabLayout extends TabLayout { + + private int tabTextSize;//每个tab字体大小 + private int tabSelectedTextColor;//每个tab选中字体颜色 + private int tabTextColor;//每个tab未选中颜色 + private static final int INVALID_TAB_POS = -1; + + //最后的选中位置 + private int lastSelectedTabPosition = INVALID_TAB_POS; + + private ViewPager viewPager;//所绑定的viewpager + + private ColorClipTabLayoutOnPageChangeListener colorClipTabLayoutOnPageChangeListener; + + + public ColorClipTabLayout(Context context) { + this(context, null); + } + + public ColorClipTabLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ColorClipTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + if (attrs != null) { + // Text colors/sizes come from the text appearance first + final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ColorClipTabLayout); + //Tab字体大小 + tabTextSize = ta.getDimensionPixelSize(R.styleable.ColorClipTabLayout_text_size, 72); + //Tab文字颜色 + tabTextColor = ta.getColor(R.styleable.ColorClipTabLayout_text_unselected_color, Color.parseColor("#000000")); + tabSelectedTextColor = ta.getColor(R.styleable.ColorClipTabLayout_text_selected_color, Color.parseColor("#cc0000")); + ta.recycle(); + } + } + + @Override + public void addTab(@NonNull Tab tab, int position, boolean setSelected) { + //通过addTab的方式将colorClipView作为customView传入tab + ColorClipView colorClipView = new ColorClipView(getContext()); + colorClipView.setProgress(setSelected ? 1 : 0); + colorClipView.setText(tab.getText() + ""); + colorClipView.setTextSize(tabTextSize); + colorClipView.setTag(position); + colorClipView.setTextSelectedColor(tabSelectedTextColor); + colorClipView.setTextUnselectColor(tabTextColor); + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + colorClipView.setLayoutParams(layoutParams); + tab.setCustomView(colorClipView); + super.addTab(tab, position, setSelected); + int selectedTabPosition = getSelectedTabPosition(); + if ((selectedTabPosition == INVALID_TAB_POS && position == 0) || (selectedTabPosition == position)) { + setSelectedView(position); + } + + setTabWidth(position, colorClipView); + } + + @Override + public void setupWithViewPager(@Nullable ViewPager viewPager, boolean autoRefresh) { + super.setupWithViewPager(viewPager, autoRefresh); + try { + if (viewPager != null) + this.viewPager = viewPager; + //通过反射找到mPageChangeListener +// Field field = TabLayout.class.getDeclaredField("colorClipTabLayoutOnPageChangeListener"); +// field.setAccessible(true); +// TabLayoutOnPageChangeListener listener = (TabLayoutOnPageChangeListener) field.get(this); +// if (listener != null) { +// //删除自带监听 +// viewPager.removeOnPageChangeListener(listener); + colorClipTabLayoutOnPageChangeListener = new ColorClipTabLayoutOnPageChangeListener(this); + colorClipTabLayoutOnPageChangeListener.reset(); + viewPager.addOnPageChangeListener(colorClipTabLayoutOnPageChangeListener); +// } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void removeAllTabs() { + lastSelectedTabPosition = getSelectedTabPosition(); + super.removeAllTabs(); + } + + @Override + public int getSelectedTabPosition() { + final int selectedTabPositionAtParent = super.getSelectedTabPosition(); + return selectedTabPositionAtParent == INVALID_TAB_POS ? + lastSelectedTabPosition : selectedTabPositionAtParent; + } + + public void setLastSelectedTabPosition(int lastSelectedTabPosition) { + lastSelectedTabPosition = lastSelectedTabPosition; + } + + public void setCurrentItem(int position) { + if (viewPager != null) + viewPager.setCurrentItem(position); + } + + private void setTabWidth(int position, ColorClipView colorClipView) { + ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0); + ViewGroup tabView = (ViewGroup) slidingTabStrip.getChildAt(position); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); + + int w = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + int h = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + //手动测量一下 + colorClipView.measure(w, h); + params.width = colorClipView.getMeasuredWidth() + tabView.getPaddingLeft() + tabView.getPaddingRight(); + //设置tabView的宽度 + tabView.setLayoutParams(params); + } + + private void setSelectedView(int position) { + final int tabCount = getTabCount(); + if (position < tabCount) { + for (int i = 0; i < tabCount; i++) { + getColorClipView(i).setProgress(i == position ? 1 : 0); + } + } + } + + public void tabScrolled(int position, float positionOffset) { + + if (positionOffset == 0.0F) { + return; + } + ColorClipView currentTrackView = getColorClipView(position); + ColorClipView nextTrackView = getColorClipView(position + 1); + currentTrackView.setDirection(1); + currentTrackView.setProgress(1.0F - positionOffset); + nextTrackView.setDirection(0); + nextTrackView.setProgress(positionOffset); + } + + private ColorClipView getColorClipView(int position) { + return (ColorClipView) getTabAt(position).getCustomView(); + } + + public static class ColorClipTabLayoutOnPageChangeListener extends TabLayoutOnPageChangeListener { + + private final WeakReference mTabLayoutRef; + private int mPreviousScrollState; + private int mScrollState; + + public ColorClipTabLayoutOnPageChangeListener(TabLayout tabLayout) { + super(tabLayout); + mTabLayoutRef = new WeakReference<>((ColorClipTabLayout) tabLayout); + } + + @Override + public void onPageScrollStateChanged(final int state) { + mPreviousScrollState = mScrollState; + mScrollState = state; + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + super.onPageScrolled(position, positionOffset, positionOffsetPixels); + ColorClipTabLayout tabLayout = mTabLayoutRef.get(); + if (tabLayout == null) return; + final boolean updateText = mScrollState != SCROLL_STATE_SETTLING || + mPreviousScrollState == SCROLL_STATE_DRAGGING; + if (updateText) { + Log.e("tag1", "positionOffset" + positionOffset); + tabLayout.tabScrolled(position, positionOffset); + } + } + + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + ColorClipTabLayout tabLayout = mTabLayoutRef.get(); + mPreviousScrollState = SCROLL_STATE_SETTLING; + tabLayout.setSelectedView(position); + } + + void reset() { + mPreviousScrollState = mScrollState = SCROLL_STATE_IDLE; + } + + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java new file mode 100644 index 0000000..bc9d9ce --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java @@ -0,0 +1,75 @@ +package com.android.learn.base.view.colorfultab; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; + +public class ColorClipTestView extends View { + float per = 0; + float x = 0, y = 0; + + public ColorClipTestView(Context context) { + super(context); + } + + public ColorClipTestView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public ColorClipTestView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setStrokeWidth(80); + paint.setStyle(Paint.Style.FILL); + + paint.setTextSize(68); + canvas.save(); + canvas.drawText("我是火车王", 200, 200, paint); + canvas.restore(); + paint.setColor(Color.RED); + canvas.clipRect(200, 0, 320 * per, 400); + Log.e("per", "per:" + per); + canvas.drawText("我是火车王", 200, 200, paint); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + Log.e("log", "ACTION_DOWN"); + x = event.getRawX(); + y = event.getRawY(); + return true; + case MotionEvent.ACTION_MOVE: + Log.e("log", "ACTION_MOVE"); + float currentX = event.getRawX(); + float currentY = event.getRawY(); + if (currentY > y) { + per = ((currentY - y) / y) * 10; + } + invalidate(); + return true; + } + return super.onTouchEvent(event); + } + + private void move(Canvas canvas, Paint paint, float per) { + canvas.save(); + float right = 300 * per; + + canvas.restore(); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java new file mode 100644 index 0000000..a1c4ddd --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java @@ -0,0 +1,234 @@ +package com.android.learn.base.view.colorfultab; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.util.Log; +import android.util.TypedValue; +import android.view.View; + +import com.gaolei.basemodule.R; + +/** + * Created by rookie on 2018/4/24. + */ + +public class ColorClipView extends View { + + private Paint paint;//画笔 + private String text = "我是不哦车网";//绘制的文本 + private int textSize = sp2px(18);//文本字体大小 + + private int textWidth;//文本的宽度 + private int textHeight;//文本的高度 + + private int textUnselectColor = R.color.colorPrimary;//文本未选中字体颜色 + private int textSelectedColor = R.color.colorAccent;//文本选中颜色 + + private static final int DIRECTION_LEFT = 0; + private static final int DIRECTION_RIGHT = 1; + private static final int DIRECTION_TOP = 2; + private static final int DIRECTION_BOTTOM = 3; + + private int mDirection = DIRECTION_LEFT; + + private Rect textRect = new Rect();//文本显示区域 + + private int startX;//X轴开始绘制的坐标 + + private int startY;//y轴开始绘制的坐标 + + private int baseLineY;//基线的位置 + + private float progress; + + + public ColorClipView(Context context) { + this(context, null); + } + + public ColorClipView(Context context, AttributeSet attrs) { + super(context, attrs); + + //初始化各个属性包括画笔 + + paint = new Paint(Paint.ANTI_ALIAS_FLAG); + TypedArray ta = context.obtainStyledAttributes(attrs, + R.styleable.ColorClipView); + text = ta.getString(R.styleable.ColorClipView_text); + textSize = ta.getDimensionPixelSize(R.styleable.ColorClipView_text_size, textSize); +// textUnselectColor = ta.getColor(R.styleable.ColorClipView_text_unselected_color, textUnselectColor); +// textSelectedColor = ta.getColor(R.styleable.ColorClipView_text_selected_color, textSelectedColor); + mDirection = ta.getInt(R.styleable.ColorClipView_direction, mDirection); + progress = ta.getFloat(R.styleable.ColorClipView_progress, 0); + ta.recycle();//用完就得收! + paint.setTextSize(textSize); + } + + private int sp2px(float dpVal) { + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, + dpVal, getResources().getDisplayMetrics()); + } + + public void setProgress(float progress) { + this.progress = progress; + invalidate(); + } + + public void setTextSize(int mTextSize) { + this.textHeight = mTextSize; + paint.setTextSize(mTextSize); + requestLayout(); + invalidate(); + } + + public void setText(String text) { + this.text = text; + requestLayout(); + invalidate(); + } + + public void setDirection(int direction) { + this.mDirection = direction; + invalidate(); + } + + public void setTextUnselectColor(int unselectColor) { + this.textUnselectColor = unselectColor; + invalidate(); + } + + public void setTextSelectedColor(int selectedColor) { + this.textSelectedColor = selectedColor; + invalidate(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + measureText();//测量文本的长宽 + + int width = measureWidth(widthMeasureSpec);//通过模式的不同来测量出实际的宽度 + int height = measureHeight(heightMeasureSpec);//通过模式的不同来测量出实际的高度 + setMeasuredDimension(width, height); + Log.e("tag", "七点" + (getMeasuredWidth() - getPaddingRight() - getPaddingLeft())); + startX = (getMeasuredWidth() - getPaddingRight() - getPaddingLeft()) / 2 - textWidth / 2; + startY = (textHeight - getPaddingBottom() - getPaddingTop()); + } + + private int measureHeight(int heightMeasureSpec) { + int mode = MeasureSpec.getMode(heightMeasureSpec); + int size = MeasureSpec.getSize(heightMeasureSpec); + int realSize = 0; + switch (mode) { + case MeasureSpec.EXACTLY: + realSize = size; + break; + case MeasureSpec.AT_MOST: + case MeasureSpec.UNSPECIFIED: + realSize = textHeight; + realSize += getPaddingTop() + getPaddingBottom(); + break; + } + realSize = mode == MeasureSpec.AT_MOST ? Math.min(realSize, size) : realSize; + return realSize; + } + + private int measureWidth(int widthMeasureSpec) { + int mode = MeasureSpec.getMode(widthMeasureSpec);//通过widthMeasureSpec拿到Mode + int size = MeasureSpec.getSize(widthMeasureSpec);//同理 + int realSize = 0;//最后返回的值 + switch (mode) { + case MeasureSpec.EXACTLY://精确模式下直接用给出的宽度 + realSize = size; + break; + case MeasureSpec.AT_MOST://最大模式 + case MeasureSpec.UNSPECIFIED://未指定模式 + //这两种情况下,用测量出的宽度加上左右padding + realSize = textWidth; + realSize = realSize + getPaddingLeft() + getPaddingRight(); + break; + } + //如果mode为最大模式,不应该大于父类传入的值,所以取最小 + realSize = mode == MeasureSpec.AT_MOST ? Math.min(realSize, size) : realSize; + return realSize; + } + + private void measureText() { + textWidth = (int) paint.measureText(text);//测量文本宽度 + Log.d("tag", "measureText=" + paint.measureText(text)); + + + //直接通过获得文本显示范围,再获得高度 + //参数里,text 是要测量的文字 + //start 和 end 分别是文字的起始和结束位置,textRect 是存储文字显示范围的对象,方法在测算完成之后会把结果写进 textRect。 + paint.getTextBounds(text, 0, text.length(), textRect); + textHeight = textRect.height(); + + //通过文本的descent线与top线的距离来测量文本高度,这是其中一种测量方法 + Paint.FontMetrics fm = paint.getFontMetrics(); + textHeight = (int) Math.ceil(fm.descent - fm.top); + + baseLineY = (int) (textHeight / 2 - (fm.bottom - fm.top) / 2 - fm.top); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + //OK~开始绘制咯~ + //首先先判断方向是左还是右呢? 是上还是下呢? 真期待.... + Log.e("tag", "OnDraw"); + if (mDirection == DIRECTION_LEFT) { + //绘制朝左的选中文字 + drawHorizontalText(canvas, textSelectedColor, startX, + (int) (startX + progress * textWidth)); + //绘制朝左的未选中文字 + drawHorizontalText(canvas, textUnselectColor, (int) (startX + progress + * textWidth), startX + textWidth); + } else if (mDirection == DIRECTION_RIGHT) { + //绘制朝右的选中文字 + drawHorizontalText(canvas, textSelectedColor, + (int) (startX + (1 - progress) * textWidth), startX + + textWidth); + //绘制朝右的未选中文字 + drawHorizontalText(canvas, textUnselectColor, startX, + (int) (startX + (1 - progress) * textWidth)); + } else if (mDirection == DIRECTION_TOP) { + //绘制朝上的选中文字 + drawVerticalText(canvas, textSelectedColor, startY, + (int) (startY + progress * textHeight)); + //绘制朝上的未选中文字 + drawVerticalText(canvas, textUnselectColor, (int) (startY + progress + * textHeight), startY + textHeight); + } else { + //绘制朝下的选中文字 + drawVerticalText(canvas, textSelectedColor, + (int) (startY + (1 - progress) * textHeight), + startY + textHeight); + //绘制朝下的未选中文字 + drawVerticalText(canvas, textUnselectColor, startY, + (int) (startY + (1 - progress) * textHeight)); + } + + } + + private void drawHorizontalText(Canvas canvas, int color, int startX, int endX) { + paint.setColor(color); + canvas.save(); + Log.e("tag", "getMeasuredHeight" + getMeasuredHeight()); + canvas.clipRect(startX, 0, endX, getMeasuredHeight()); + canvas.drawText(text, this.startX, baseLineY, paint); + canvas.restore(); + } + + private void drawVerticalText(Canvas canvas, int color, int startY, int endY) { + paint.setColor(color); + canvas.save(); + canvas.clipRect(0, startY, getMeasuredWidth(), endY);// left, top, + canvas.drawText(text, this.startX, + this.startY, paint); + canvas.restore(); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java new file mode 100644 index 0000000..083aa45 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java @@ -0,0 +1,138 @@ +package com.android.learn.base.xskin; + + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.support.annotation.ColorInt; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.View; + +import com.gaolei.basemodule.R; + +/** + * Created by Windy on 2018/1/10. + */ + +public class CustomTitleView extends View { + /** + * 文本 + */ + private String mTitleText; + /** + * 文本的颜色 + */ + private int mTitleTextColor; + /** + * 文本的大小 + */ + private int mTitleTextSize; + + /** + * 绘制时控制文本绘制的范围 + */ + private Rect mBound; + private Paint mPaint; + private Rect mBounds = new Rect(); + + public CustomTitleView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public CustomTitleView(Context context) { + this(context, null); + } + + /** + * 获得我自定义的样式属性 + * + * @param context + * @param attrs + * @param defStyle + */ + public CustomTitleView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + /** + * 获得我们所定义的自定义样式属性 + */ + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomTitleView, defStyle, 0); + int n = a.getIndexCount(); + for (int i = 0; i < n; i++) { + int attr = a.getIndex(i); + + if (attr == R.styleable.CustomTitleView_titleText) { + mTitleText = a.getString(attr); + } + if (attr == R.styleable.CustomTitleView_titleTextColor) { + // 默认颜色设置为黑色 + mTitleTextColor = a.getColor(attr, Color.BLACK); + } + if (attr == R.styleable.CustomTitleView_titleTextSize) { + // 默认设置为16sp,TypeValue也可以把sp转化为px + mTitleTextSize = a.getDimensionPixelSize(attr, (int) TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_SP, 16, getResources().getDisplayMetrics())); + + } + + } + a.recycle(); + + /** + * 获得绘制文本的宽和高 + */ + mPaint = new Paint(); + mPaint.setTextSize(mTitleTextSize); + // mPaint.setColor(mTitleTextColor); + mBound = new Rect(); + mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBound); + + } + + public void setTextColor(@ColorInt int color) { + mTitleTextColor = color; + invalidate(); + } + + @Override + protected void onDraw(Canvas canvas) { + mPaint.setColor(Color.YELLOW); + canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint); + + mPaint.setColor(mTitleTextColor); + canvas.drawText(mTitleText, getWidth() / 2 - mBound.width() / 2, getHeight() / 2 + mBound.height() / 2, mPaint); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int widthSize = MeasureSpec.getSize(widthMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + int heightSize = MeasureSpec.getSize(heightMeasureSpec); + int width; + int height; + if (widthMode == MeasureSpec.EXACTLY) { + width = widthSize; + } else { + mPaint.setTextSize(mTitleTextSize); + mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBounds); + float textWidth = mBounds.width(); + int desired = (int) (getPaddingLeft() + textWidth + getPaddingRight()); + width = desired; + } + + if (heightMode == MeasureSpec.EXACTLY) { + height = heightSize; + } else { + mPaint.setTextSize(mTitleTextSize); + mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBounds); + float textHeight = mBounds.height(); + int desired = (int) (getPaddingTop() + textHeight + getPaddingBottom()); + height = desired; + } + setMeasuredDimension(width, height); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java new file mode 100644 index 0000000..1f1c84f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java @@ -0,0 +1,26 @@ +package com.android.learn.base.xskin; + +import android.view.View; + +import com.wind.me.xskinloader.entity.SkinAttr; +import com.wind.me.xskinloader.entity.SkinConfig; +import com.wind.me.xskinloader.skinInterface.ISkinResDeployer; +import com.wind.me.xskinloader.skinInterface.ISkinResourceManager; + +/** + * Created by Windy on 2018/1/10. + */ + +public class CustomViewTextColorResDeployer implements ISkinResDeployer { + + @Override + public void deploy(View view, SkinAttr skinAttr, ISkinResourceManager resource) { + if (!(view instanceof CustomTitleView)) { + return; + } + CustomTitleView titleView = (CustomTitleView) view; + if (SkinConfig.RES_TYPE_NAME_COLOR.equals(skinAttr.attrValueTypeName)) { + titleView.setTextColor(resource.getColor(skinAttr.attrValueRefId)); + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java new file mode 100644 index 0000000..f4c37d3 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java @@ -0,0 +1,27 @@ +package com.android.learn.base.xskin; + +import com.wind.me.xskinloader.SkinResDeployerFactory; +import com.wind.me.xskinloader.StyleParserFactory; + + +/** + * 扩展换肤属性和style中的换肤属性 + * Created by Windy on 2018/2/9. + */ + +public class ExtraAttrRegister { + + public static final String CUSTIOM_VIEW_TEXT_COLOR = "titleTextColor"; + + static { + //增加自定义控件的自定义属性的换肤支持 + SkinResDeployerFactory.registerDeployer(CUSTIOM_VIEW_TEXT_COLOR, new CustomViewTextColorResDeployer()); + + //增加xml里的style中指定的View background属性换肤 + StyleParserFactory.addStyleParser(new ViewBackgroundStyleParser()); + } + + //仅仅为了使类的静态方法被加载而已 + public static void init() {} + +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java new file mode 100644 index 0000000..0287486 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java @@ -0,0 +1,66 @@ +package com.android.learn.base.xskin; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.View; + +import com.wind.me.xskinloader.SkinResDeployerFactory; +import com.wind.me.xskinloader.entity.SkinAttr; +import com.wind.me.xskinloader.entity.SkinConfig; +import com.wind.me.xskinloader.parser.SkinAttributeParser; +import com.wind.me.xskinloader.skinInterface.ISkinStyleParser; +import com.wind.me.xskinloader.util.ReflectUtils; + +import java.util.Map; + +/** + * 解析Xml中的style属性,使支持style中定义的View的background支持换肤 + * Created by Windy on 2018/1/23. + */ +public class ViewBackgroundStyleParser implements ISkinStyleParser { + + private static int[] sViewStyleList; + private static int sViewBackgroundStyleIndex; + + @Override + public void parseXmlStyle(View view, AttributeSet attrs, Map viewAttrs, String[] specifiedAttrList) { + Context context = view.getContext(); + int[] viewStyleable = getTextViewStyleableList(); + int viewStyleableBackground = getTextViewTextColorStyleableIndex(); + + TypedArray a = context.obtainStyledAttributes(attrs, viewStyleable, 0, 0); + if (a != null) { + int n = a.getIndexCount(); + for (int j = 0; j < n; j++) { + int attr = a.getIndex(j); + if (attr == viewStyleableBackground && + SkinConfig.isCurrentAttrSpecified(SkinResDeployerFactory.BACKGROUND, specifiedAttrList)) { + int drawableResId = a.getResourceId(attr, -1); + SkinAttr skinAttr = SkinAttributeParser.parseSkinAttr(context, SkinResDeployerFactory.BACKGROUND, drawableResId); + if (skinAttr != null) { + viewAttrs.put(skinAttr.attrName, skinAttr); + } + } + } + a.recycle(); + } + } + + private static int[] getTextViewStyleableList() { + if (sViewStyleList == null || sViewStyleList.length == 0) { + sViewStyleList = (int[]) ReflectUtils.getField("com.android.internal.R$styleable", "View"); + } + return sViewStyleList; + } + + private static int getTextViewTextColorStyleableIndex() { + if (sViewBackgroundStyleIndex == 0) { + Object o = ReflectUtils.getField("com.android.internal.R$styleable", "View_background"); + if (o != null) { + sViewBackgroundStyleIndex = (int) o; + } + } + return sViewBackgroundStyleIndex; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java new file mode 100644 index 0000000..9c16442 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java @@ -0,0 +1,33 @@ +package com.android.speechdemo.bean; + +import java.io.Serializable; + +/** + * Created by LiuXing on 2016/10/27. + */ +public class TalkBackChineseWordVo implements Serializable { + /** + * word,单字 + */ + private String w; + /** + * score,分数 + */ + private int sc; + + public String getW() { + return w; + } + + public void setW(String w) { + this.w = w; + } + + public int getSc() { + return sc; + } + + public void setSc(int sc) { + this.sc = sc; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java new file mode 100644 index 0000000..dfad4ee --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java @@ -0,0 +1,70 @@ +package com.android.speechdemo.bean; + +import java.io.Serializable; +import java.util.List; + +/** + * Created by LiuXing on 2016/10/27. + */ +public class TalkBackVo implements Serializable { + /** + * sentence,第几句 + */ + private int sn; + /** + * last sentence,是否最后一句 + */ + private boolean ls; + /** + * begin,开始 + */ + private int bg; + /** + * end,结束 + */ + private int ed; + /** + * words,词 + */ + private List ws; + + public int getSn() { + return sn; + } + + public void setSn(int sn) { + this.sn = sn; + } + + public boolean isLs() { + return ls; + } + + public void setLs(boolean ls) { + this.ls = ls; + } + + public int getBg() { + return bg; + } + + public void setBg(int bg) { + this.bg = bg; + } + + public int getEd() { + return ed; + } + + public void setEd(int ed) { + this.ed = ed; + } + + public List getWs() { + return ws; + } + + public void setWs(List ws) { + this.ws = ws; + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java new file mode 100644 index 0000000..31f47ff --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java @@ -0,0 +1,35 @@ +package com.android.speechdemo.bean; + +import java.io.Serializable; +import java.util.List; + +/** + * Created by LiuXing on 2016/10/27. + */ +public class TalkBackWordsVo implements Serializable { + /** + * begin,开始 + */ + private int bg; + /** + * chinese word,中文分词 + */ + private List cw; + + public int getBg() { + return bg; + } + + public void setBg(int bg) { + this.bg = bg; + } + + public List getCw() { + return cw; + } + + public void setCw(List cw) { + this.cw = cw; + } +} + diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java new file mode 100644 index 0000000..95b6ae3 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java @@ -0,0 +1,117 @@ +package com.android.speechdemo.xf; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.json.JSONTokener; + +/** + * Json结果解析类 + */ +public class JsonParser { + + public static String parseIatResult(String json) { + StringBuffer ret = new StringBuffer(); + try { + JSONTokener tokener = new JSONTokener(json); + JSONObject joResult = new JSONObject(tokener); + + JSONArray words = joResult.getJSONArray("ws"); + for (int i = 0; i < words.length(); i++) { + // 转写结果词,默认使用第一个结果 + JSONArray items = words.getJSONObject(i).getJSONArray("cw"); + JSONObject obj = items.getJSONObject(0); + ret.append(obj.getString("w")); +// 如果需要多候选结果,解析数组其他字段 +// for(int j = 0; j < items.length(); j++) +// { +// JSONObject obj = items.getJSONObject(j); +// ret.append(obj.getString("w")); +// } + } + } catch (Exception e) { + e.printStackTrace(); + } + return ret.toString(); + } + + public static String parseGrammarResult(String json) { + StringBuffer ret = new StringBuffer(); + try { + JSONTokener tokener = new JSONTokener(json); + JSONObject joResult = new JSONObject(tokener); + + JSONArray words = joResult.getJSONArray("ws"); + for (int i = 0; i < words.length(); i++) { + JSONArray items = words.getJSONObject(i).getJSONArray("cw"); + for(int j = 0; j < items.length(); j++) + { + JSONObject obj = items.getJSONObject(j); + if(obj.getString("w").contains("nomatch")) + { + ret.append("没有匹配结果."); + return ret.toString(); + } + ret.append("【结果】" + obj.getString("w")); + ret.append("【置信度】" + obj.getInt("sc")); + ret.append("\n"); + } + } + } catch (Exception e) { + e.printStackTrace(); + ret.append("没有匹配结果."); + } + return ret.toString(); + } + + public static String parseLocalGrammarResult(String json) { + StringBuffer ret = new StringBuffer(); + try { + JSONTokener tokener = new JSONTokener(json); + JSONObject joResult = new JSONObject(tokener); + + JSONArray words = joResult.getJSONArray("ws"); + for (int i = 0; i < words.length(); i++) { + JSONArray items = words.getJSONObject(i).getJSONArray("cw"); + for(int j = 0; j < items.length(); j++) + { + JSONObject obj = items.getJSONObject(j); + if(obj.getString("w").contains("nomatch")) + { + ret.append("没有匹配结果."); + return ret.toString(); + } + ret.append("【结果】" + obj.getString("w")); + ret.append("\n"); + } + } + ret.append("【置信度】" + joResult.optInt("sc")); + + } catch (Exception e) { + e.printStackTrace(); + ret.append("没有匹配结果."); + } + return ret.toString(); + } + + public static String parseTransResult(String json, String key) { + StringBuffer ret = new StringBuffer(); + try { + JSONTokener tokener = new JSONTokener(json); + JSONObject joResult = new JSONObject(tokener); + String errorCode = joResult.optString("ret"); + if(!errorCode.equals("0")) { + return joResult.optString("errmsg"); + } + JSONObject transResult = joResult.optJSONObject("trans_result"); + ret.append(transResult.optString(key)); + /*JSONArray words = joResult.getJSONArray("results"); + for (int i = 0; i < words.length(); i++) { + JSONObject obj = words.getJSONObject(i); + ret.append(obj.getString(key)); + }*/ + } catch (Exception e) { + e.printStackTrace(); + } + return ret.toString(); + } +} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java new file mode 100644 index 0000000..9f90f29 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java @@ -0,0 +1,71 @@ +package com.android.speechdemo.xf; + +import android.content.Context; +import android.preference.EditTextPreference; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.widget.Toast; + +import java.util.regex.Pattern; + +/** + * 输入框输入范围控制 + */ +public class SettingTextWatcher implements TextWatcher { + private int editStart ; + private int editCount ; + private EditTextPreference mEditTextPreference; + int minValue;//最小值 + int maxValue;//最大值 + private Context mContext; + + public SettingTextWatcher(Context context, EditTextPreference e, int min, int max) { + mContext = context; + mEditTextPreference = e; + minValue = min; + maxValue = max; + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { +// Log.e("demo", "onTextChanged start:"+start+" count:"+count+" before:"+before); + editStart = start; + editCount = count; + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { +// Log.e("demo", "beforeTextChanged start:"+start+" count:"+count+" after:"+after); + } + + @Override + public void afterTextChanged(Editable s) { + if (TextUtils.isEmpty(s)) { + return; + } + String content = s.toString(); +// Log.e("demo", "content:"+content); + if (isNumeric(content)) { + int num = Integer.parseInt(content); + if (num > maxValue || num < minValue) { + s.delete(editStart, editStart+editCount); + mEditTextPreference.getEditText().setText(s); + Toast.makeText(mContext, "超出有效值范围", Toast.LENGTH_SHORT).show(); + } + }else { + s.delete(editStart, editStart+editCount); + mEditTextPreference.getEditText().setText(s); + Toast.makeText(mContext, "只能输入数字哦", Toast.LENGTH_SHORT).show(); + } + } + + /** + * 正则表达式-判断是否为数字 + */ + public static boolean isNumeric(String str){ + Pattern pattern = Pattern.compile("[0-9]*"); + return pattern.matcher(str).matches(); + } + +}; From dee30f9253075b454229231a05d26972f3a1463d Mon Sep 17 00:00:00 2001 From: GaoLei Date: Thu, 24 Jan 2019 17:44:48 +0800 Subject: [PATCH 05/38] =?UTF-8?q?=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidLearnProject/.idea/kotlinc.xml | 7 + AndroidLearnProject/.idea/workspace.xml | 415 ++++++++---------- .../java/com/android/learn/MainActivity.kt | 3 +- .../activity/KnowledgeChildActivity.java | 10 +- .../learn/activity/MyCollectActivity.java | 6 +- .../learn/activity/RegisterLoginActivity.java | 4 +- .../learn/activity/SearchResultActivity.java | 8 +- .../learn/activity/SplashActivity.java | 2 +- .../learn/activity/TodoAddActivity.java | 2 +- .../learn/activity/TodoEditActivity.java | 2 +- .../learn/mpresenter/CollectPresenter.java | 8 +- .../learn/mpresenter/HomePresenter.java | 28 +- .../mpresenter/KnowledgeChildPresenter.java | 20 +- .../learn/mpresenter/KnowledgePresenter.java | 4 +- .../mpresenter/MainActivityPresenter.java | 4 +- .../learn/mpresenter/ProjectPresenter.java | 12 +- .../mpresenter/RegisterLoginPresenter.java | 4 +- .../learn/mpresenter/SearchPresenter.java | 16 +- .../mpresenter/SplashLoginPresenter.java | 2 +- .../learn/mpresenter/TodoAddPresenter.java | 4 +- .../learn/mpresenter/TodoEditPresenter.java | 4 +- .../learn/mpresenter/TodoPresenter.java | 14 +- .../learn/mpresenter/WechatPresenter.java | 4 +- .../learn/mpresenter/WechatSubPresenter.java | 16 +- .../learn/base/activity/BaseMvpActivity.java | 40 -- .../learn/base/activity/BaseMvpActivity.kt | 38 ++ .../learn/base/mpresenter/BasePresenter.java | 47 -- .../learn/base/mpresenter/BasePresenter.kt | 47 ++ 28 files changed, 355 insertions(+), 416 deletions(-) create mode 100644 AndroidLearnProject/.idea/kotlinc.xml delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseMvpActivity.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseMvpActivity.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mpresenter/BasePresenter.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mpresenter/BasePresenter.kt diff --git a/AndroidLearnProject/.idea/kotlinc.xml b/AndroidLearnProject/.idea/kotlinc.xml new file mode 100644 index 0000000..5806fb3 --- /dev/null +++ b/AndroidLearnProject/.idea/kotlinc.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index a765e7b..4fe5e40 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -12,9 +12,11 @@ + - + + @@ -22,15 +24,22 @@ - - - - - - - + + + + + + + + + + + + + + - + - - + + - - + + @@ -96,29 +105,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10626,7 +10695,6 @@ @@ -10732,7 +10801,6 @@ - @@ -10766,31 +10834,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -10809,44 +10852,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -10885,61 +10890,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -10960,8 +10910,9 @@ - - + + @@ -11153,7 +11174,7 @@ - + @@ -11468,32 +11489,32 @@ - - + - - - - - - - - - - + - - + + + + + + + + + + + + @@ -11503,7 +11524,6 @@ - @@ -11592,412 +11612,388 @@ - + - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - - - - + + - + - - - + + - + - - - + + - + - - - + + - + - - + + - + + - + - + + - - + + - + - - - - - - - - - - - - - - - - - - + + - + - - + + - + - - + + - + - - + + - + - - - + + + + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java index b8b5f62..3255109 100644 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java +++ b/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java @@ -107,7 +107,7 @@ public void refreshUserInfo() { String username = UserUtil.getUserInfo().data.username; if (tv_user_profile_not_login != null) tv_user_profile_not_login.setText(username); - String photoUrl = UserUtil.getUserInfo().data.icon; + String photoUrl = UserUtil.gainUserInfo().data.icon; if (photoUrl != null) { RequestOptions options = new RequestOptions().placeholder(R.drawable.user_default_photo); if(iv_user_photo!=null) diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt index 923211c..27decad 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt @@ -246,7 +246,7 @@ class MainActivity : BaseMvpActivity { searchRecordAdapter.data.clear() searchRecordAdapter.notifyDataSetChanged() - DBManager.getInstance(this).deleteAll() + DBManager.getInstance().deleteAll() } R.id.iv_speech_search -> { KeyboardUtils.hideKeyboard(et_search) @@ -368,7 +368,7 @@ class MainActivity : BaseMvpActivity LanguageActivity.startActivity(this@SettingActivity) R.id.font_size_layout -> FontSizeActivity.startActivity(this@SettingActivity) R.id.my_logout_layout -> { - if (!UserUtil.isLogined()) { + if (!UserUtil.isLogined) { RegisterLoginActivity.startActivity(this) return } - UserUtil.setLogined(false) + UserUtil.isLogined = false EventBus.getDefault().post(LogoutEvent()) RetrofitProvider.getInstance().sharedPrefsCookiePersistor.clear() finish() diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.kt index 0693004..121da9f 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SplashActivity.kt @@ -55,7 +55,7 @@ class SplashActivity : BaseMvpActivity() fun click(view: View) { when (view.id) { R.id.my_collect_layout -> { - if (!UserUtil.isLogined()) { + if (!UserUtil.isLogined) { RegisterLoginActivity.startActivity(activity!!) Utils.showToast(getString(R.string.user_not_login), true) return @@ -58,7 +58,7 @@ class UserFragment : BaseMvpFragment() R.id.my_todo_layout -> MyTodoActivity.startActivity(activity!!) R.id.my_setting_layout -> SettingActivity.startActivity(activity!!) - R.id.iv_user_photo -> if (!UserUtil.isLogined()) { + R.id.iv_user_photo -> if (!UserUtil.isLogined) { RegisterLoginActivity.startActivity(activity!!) } } @@ -90,12 +90,12 @@ class UserFragment : BaseMvpFragment() fun refreshUserInfo() { - if (UserUtil.getUserInfo() == null) return - if (UserUtil.isLogined()) { - val username = UserUtil.getUserInfo().data.username + if (UserUtil.gainUserInfo() == null) return + if (UserUtil.isLogined) { + val username = UserUtil.gainUserInfo()?.data?.username if (tv_user_profile_not_login != null) tv_user_profile_not_login!!.text = username - val photoUrl = UserUtil.getUserInfo().data.icon + val photoUrl = UserUtil.gainUserInfo()?.data?.icon if (photoUrl != null) { val options = RequestOptions().placeholder(R.drawable.user_default_photo) if (iv_user_photo != null) @@ -116,7 +116,7 @@ class UserFragment : BaseMvpFragment() SPUtils.clear(activity!!, "password") mPresenter!!.getLogoutData() RegisterLoginActivity.startActivity(activity!!) - UserUtil.setUserInfo(null) + UserUtil.assignUserInfo(null) } override fun onDestroy() { diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt index 021410c..44bbd5f 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt @@ -51,7 +51,7 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B setContentView(layoutId) ButterKnife.bind(this) setStatusBar() - ExitAppUtils.getInstance().addActivity(this) + ExitAppUtils.instance.addActivity(this) SkinManager.get().setWindowStatusBarColor(this.window, R.color.status_bar_color) @@ -99,7 +99,7 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B override fun onDestroy() { super.onDestroy() - ExitAppUtils.getInstance().delActivity(this) + ExitAppUtils.instance.delActivity(this) LogUtil.d(TAG, "BaseActivity ----onDestroy:" + javaClass.name.toString()) } @@ -120,7 +120,7 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { val res = newBase.resources val config = res.configuration - config.fontScale = CustomApplication.getInstance().fontScale//1 设置正常字体大小的倍数 + config.fontScale = CustomApplication.instance.fontScale//1 设置正常字体大小的倍数 val newContext = newBase.createConfigurationContext(config) super.attachBaseContext(newContext) } else { @@ -133,7 +133,7 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B val res = super.getResources() if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) { val config = res.configuration - config.fontScale = CustomApplication.getInstance().fontScale//1 设置正常字体大小的倍数 + config.fontScale = CustomApplication.instance.fontScale//1 设置正常字体大小的倍数 res.updateConfiguration(config, res.displayMetrics) } return res diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.java deleted file mode 100644 index 4ad8d35..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.android.learn.base.application; - -import android.app.Application; -import android.content.Context; -import android.content.res.Configuration; -import android.net.ConnectivityManager; -import android.util.TypedValue; -import android.view.LayoutInflater; - -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.xskin.ExtraAttrRegister; -import com.gaolei.basemodule.R; -import com.iflytek.cloud.SpeechConstant; -import com.iflytek.cloud.SpeechUtility; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreater; -import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator; -import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreater; -import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator; -import com.scwang.smartrefresh.layout.api.RefreshFooter; -import com.scwang.smartrefresh.layout.api.RefreshHeader; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.footer.ClassicsFooter; -import com.scwang.smartrefresh.layout.header.ClassicsHeader; -import com.umeng.analytics.MobclickAgent; -import com.umeng.commonsdk.UMConfigure; -import com.wind.me.xskinloader.SkinInflaterFactory; -import com.wind.me.xskinloader.SkinManager; - -import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper; - - -public class CustomApplication extends Application { - public static ConnectivityManager connectivityManager; - public static Context context; - private static CustomApplication instance; - - @Override - public void onCreate() { - super.onCreate(); - connectivityManager = (ConnectivityManager) getApplicationContext() - .getSystemService(Context.CONNECTIVITY_SERVICE); - context = this; - instance = this; - // LeakCanary.install(this); - // BlockCanary.install(this, new AppContext()).start(); - - //初始化友盟 - UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, ""); - //初始化换肤 - SkinInflaterFactory.setFactory(LayoutInflater.from(this)); // for skin change - SkinManager.get().init(this); - //扩展换肤属性和style中的换肤属性 - ExtraAttrRegister.init(); - //初始化讯飞语言识别 - SpeechUtility.createUtility(this, "appid=" + "5c22ed2f"); - /** - * 必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回 - * 第一个参数:应用程序上下文 - * 第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的 View 的 class 添加到该集合中,目前在库中已经添加了 WebView 和 SurfaceView - */ - // - BGASwipeBackHelper.init(this, null); - - } - - public static CustomApplication getInstance() { - return instance; - } -// public class AppContext extends BlockCanaryContext { -// private static final String TAG = "AppContext"; -// -// @Override -// public String provideQualifier() { -// String qualifier = ""; -// try { -// PackageInfo info = getApplicationContext().getPackageManager() -// .getPackageInfo(getApplicationContext().getPackageName(), 0); -// qualifier += info.versionCode + "_" + info.versionName + "_YYB"; -// } catch (PackageManager.NameNotFoundException e) { -// Log.e(TAG, "provideQualifier exception", e); -// } -// return qualifier; -// } -// -// @Override -// public int provideBlockThreshold() { -// return 1000; -// } -// -// @Override -// public boolean displayNotification() { -// return BuildConfig.DEBUG; -// } -// -// @Override -// public boolean stopWhenDebugging() { -// return false; -// } -// } - - /** - * @return 获取字体缩放比例 - */ - public float getFontScale() { - int currentIndex = (Integer) SPUtils.getParam(this, "currentIndex", 1); - return 1 + currentIndex * 0.1f; - } - - //static 代码段可以防止内存泄露 - static { - //设置全局的Header构建器 - SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() { - @Override - public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { -// layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色 - ClassicsHeader header = new ClassicsHeader(context);//指定为经典Header,默认是 贝塞尔雷达Header - header.setTextSizeTitle(14);//设置标题文字大小(sp单位) - return header;//.setTimeFormat(new DynamicTimeFormat("更新于 %s")); - } - }); - //设置全局的Footer构建器 - SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() { - @Override - public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { - ClassicsFooter footer = new ClassicsFooter(context); //指定为经典Footer,默认是 BallPulseFooter - footer.setTextSizeTitle(14);//设置标题文字大小(sp单位) - - return footer; - } - }); - } - -// @Override -// protected void attachBaseContext(Context newBase) { -// //语言切换 -// super.attachBaseContext(LanguageUtil.setLocal(newBase)); -// } - - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt new file mode 100644 index 0000000..52dfa1d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt @@ -0,0 +1,136 @@ +package com.android.learn.base.application + +import android.app.Application +import android.content.Context +import android.content.res.Configuration +import android.net.ConnectivityManager +import android.util.TypedValue +import android.view.LayoutInflater + +import com.android.learn.base.utils.LanguageUtil +import com.android.learn.base.utils.SPUtils +import com.android.learn.base.xskin.ExtraAttrRegister +import com.gaolei.basemodule.R +import com.iflytek.cloud.SpeechConstant +import com.iflytek.cloud.SpeechUtility +import com.scwang.smartrefresh.layout.SmartRefreshLayout +import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreater +import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator +import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreater +import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator +import com.scwang.smartrefresh.layout.api.RefreshFooter +import com.scwang.smartrefresh.layout.api.RefreshHeader +import com.scwang.smartrefresh.layout.api.RefreshLayout +import com.scwang.smartrefresh.layout.footer.ClassicsFooter +import com.scwang.smartrefresh.layout.header.ClassicsHeader +import com.umeng.analytics.MobclickAgent +import com.umeng.commonsdk.UMConfigure +import com.wind.me.xskinloader.SkinInflaterFactory +import com.wind.me.xskinloader.SkinManager + +import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper + + +class CustomApplication : Application() { + // public class AppContext extends BlockCanaryContext { + // private static final String TAG = "AppContext"; + // + // @Override + // public String provideQualifier() { + // String qualifier = ""; + // try { + // PackageInfo info = getApplicationContext().getPackageManager() + // .getPackageInfo(getApplicationContext().getPackageName(), 0); + // qualifier += info.versionCode + "_" + info.versionName + "_YYB"; + // } catch (PackageManager.NameNotFoundException e) { + // Log.e(TAG, "provideQualifier exception", e); + // } + // return qualifier; + // } + // + // @Override + // public int provideBlockThreshold() { + // return 1000; + // } + // + // @Override + // public boolean displayNotification() { + // return BuildConfig.DEBUG; + // } + // + // @Override + // public boolean stopWhenDebugging() { + // return false; + // } + // } + + /** + * @return 获取字体缩放比例 + */ + val fontScale: Float + get() { + val currentIndex = SPUtils.getParam(this, "currentIndex", 1) as Int + return 1 + currentIndex * 0.1f + } + + override fun onCreate() { + super.onCreate() + connectivityManager = applicationContext + .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + context = this + instance = this + // LeakCanary.install(this); + // BlockCanary.install(this, new AppContext()).start(); + + //初始化友盟 + UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, "") + //初始化换肤 + SkinInflaterFactory.setFactory(LayoutInflater.from(this)) // for skin change + SkinManager.get().init(this) + //扩展换肤属性和style中的换肤属性 + ExtraAttrRegister.init() + //初始化讯飞语言识别 + SpeechUtility.createUtility(this, "appid=" + "5c22ed2f") + /** + * 必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回 + * 第一个参数:应用程序上下文 + * 第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的 View 的 class 添加到该集合中,目前在库中已经添加了 WebView 和 SurfaceView + */ + // + BGASwipeBackHelper.init(this, null) + + } + + companion object { + lateinit var connectivityManager: ConnectivityManager + lateinit var context: Context + lateinit var instance: CustomApplication + private set + + //static 代码段可以防止内存泄露 + init { + //设置全局的Header构建器 + SmartRefreshLayout.setDefaultRefreshHeaderCreator { context, layout -> + // layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色 + val header = ClassicsHeader(context)//指定为经典Header,默认是 贝塞尔雷达Header + header.setTextSizeTitle(14f)//设置标题文字大小(sp单位) + header//.setTimeFormat(new DynamicTimeFormat("更新于 %s")); + } + //设置全局的Footer构建器 + SmartRefreshLayout.setDefaultRefreshFooterCreator { context, layout -> + val footer = ClassicsFooter(context) //指定为经典Footer,默认是 BallPulseFooter + footer.setTextSizeTitle(14f)//设置标题文字大小(sp单位) + + footer + } + } + } + + // @Override + // protected void attachBaseContext(Context newBase) { + // //语言切换 + // super.attachBaseContext(LanguageUtil.setLocal(newBase)); + // } + + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/Colorful.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/Colorful.java deleted file mode 100644 index 1a3e22d..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/Colorful.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.android.learn.base.colorful; - -import java.util.HashSet; -import java.util.Set; - -import android.app.Activity; -import android.content.res.Resources.Theme; -import android.support.v4.app.Fragment; -import android.view.View; -import android.widget.TextView; - -import com.android.learn.base.colorful.setter.TextColorSetter; -import com.android.learn.base.colorful.setter.ViewBackgroundColorSetter; -import com.android.learn.base.colorful.setter.ViewBackgroundDrawableSetter; -import com.android.learn.base.colorful.setter.ViewSetter; - - -/** - * 主题切换控制类 - * - * @author mrsimple - * - */ -public final class Colorful { - /** - * Colorful Builder - */ - Builder mBuilder; - - /** - * private constructor - * - * @param builder - */ - private Colorful(Builder builder) { - mBuilder = builder; - } - - /** - * 设置新的主题 - * - * @param newTheme - */ - public void setTheme(int newTheme) { - mBuilder.setTheme(newTheme); - } - - /** - * - * 构建Colorful的Builder对象 - * - * @author mrsimple - * - */ - public static class Builder { - /** - * 存储了视图和属性资源id的关系表 - */ - Set mElements = new HashSet(); - /** - * 目标Activity - */ - Activity mActivity; - - /** - * @param activity - */ - public Builder(Activity activity) { - mActivity = activity; - } - - /** - * - * @param fragment - */ - public Builder(Fragment fragment) { - mActivity = fragment.getActivity(); - } - - private View findViewById(int viewId) { - return mActivity.findViewById(viewId); - } - - /** - * 将View id与存储该view背景色的属性进行绑定 - * - * @param viewId - * 控件id - * @param colorId - * 颜色属性id - * @return - */ - public Builder backgroundColor(int viewId, int colorId) { - mElements.add(new ViewBackgroundColorSetter(findViewById(viewId), - colorId)); - return this; - } - - - public Builder backgroundDrawable(int viewId, int drawableId) { - mElements.add(new ViewBackgroundDrawableSetter( - findViewById(viewId), drawableId)); - return this; - } - - /** - * 将TextView id与存储该TextView文本颜色的属性进行绑定 - * - * @param viewId - * TextView或者TextView子类控件的id - * @param colorId - * 颜色属性id - * @return - */ - public Builder textColor(int viewId, int colorId) { - TextView textView = (TextView) findViewById(viewId); - mElements.add(new TextColorSetter(textView, colorId)); - return this; - } - - /** - * 用户手动构造并且添加Setter - * - * @param setter - * 用户自定义的Setter - * @return - */ - public Builder setter(ViewSetter setter) { - mElements.add(setter); - return this; - } - - /** - * 设置新的主题 - * - * @param newTheme - */ - protected void setTheme(int newTheme) { - mActivity.setTheme(newTheme); - makeChange(newTheme); - } - - /** - * 修改各个视图绑定的属性 - */ - private void makeChange(int themeId) { - Theme curTheme = mActivity.getTheme(); - for (ViewSetter setter : mElements) { - setter.setValue(curTheme, themeId); - } - } - - /** - * 创建Colorful对象 - * - * @return - */ - public Colorful create() { - return new Colorful(this); - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/TextColorSetter.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/TextColorSetter.java deleted file mode 100644 index 244779e..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/TextColorSetter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.widget.TextView; -/** - * TextView 文本颜色Setter - * @author mrsimple - * - */ -public class TextColorSetter extends ViewSetter { - - public TextColorSetter(TextView textView, int resId) { - super(textView, resId); - } - - public TextColorSetter(int viewId, int resId) { - super(viewId, resId); - } - - @Override - public void setValue(Theme newTheme, int themeId) { - if (mView == null) { - return; - } - ((TextView) mView).setTextColor(getColor(newTheme)); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java deleted file mode 100644 index b092335..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.view.View; - -/** - * View的背景色Setter - * @author mrsimple - * - */ -public class ViewBackgroundColorSetter extends ViewSetter { - - public ViewBackgroundColorSetter(View target, int resId) { - super(target, resId); - } - - public ViewBackgroundColorSetter(int viewId, int resId) { - super(viewId, resId); - } - - @Override - public void setValue(Theme newTheme, int themeId) { - if ( mView != null ) { - mView.setBackgroundColor(getColor(newTheme)); - } - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java deleted file mode 100644 index 1f284a7..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.view.View; - -/** - * View的背景Drawabler Setter - * @author mrsimple - * - */ -public final class ViewBackgroundDrawableSetter extends ViewSetter { - - public ViewBackgroundDrawableSetter(View targetView, int resId) { - super(targetView, resId); - } - - - public ViewBackgroundDrawableSetter(int viewId, int resId) { - super(viewId, resId); - } - - @SuppressWarnings("deprecation") - @Override - public void setValue(Theme newTheme, int themeId) { - if ( mView == null ) { - return ; - } - TypedArray a = newTheme.obtainStyledAttributes(themeId, - new int[] { mAttrResId }); - int attributeResourceId = a.getResourceId(0, 0); - Drawable drawable = mView.getResources().getDrawable( - attributeResourceId); - a.recycle(); - mView.setBackgroundDrawable(drawable); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewGroupSetter.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewGroupSetter.java deleted file mode 100644 index de2f50a..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewGroupSetter.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.Set; - -import android.content.res.Resources.Theme; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AbsListView; - -/** - * ViewGroup类型的Setter,用于修改ListView、RecyclerView等ViewGroup类型的Item - * View,核心思想为遍历每个Item View中的子控件,然后根据用户绑定的view - * id与属性来将View修改为当前Theme下的最新属性值,达到ViewGroup控件的换肤效果。 - * - * TODO : Color与Drawable的设计问题,是否需要修改为桥接模式 {@see ViewBackgroundColorSetter}、 - * {@see ViewBackgroundDrawableSetter} - * - * @author mrsimple - * - */ -public class ViewGroupSetter extends ViewSetter { - - /** - * ListView的子试图的Setter - */ - protected Set mItemViewSetters = new HashSet(); - - /** - * - * @param targetView - * @param resId - */ - public ViewGroupSetter(ViewGroup targetView, int resId) { - super(targetView, resId); - } - - public ViewGroupSetter(ViewGroup targetView) { - super(targetView, 0); - } - - /** - * 设置View的背景色 - * - * @param viewId - * @param colorId - * @return - */ - public ViewGroupSetter childViewBgColor(int viewId, int colorId) { - mItemViewSetters.add(new ViewBackgroundColorSetter(viewId, colorId)); - return this; - } - - /** - * 设置View的drawable背景 - * - * @param viewId - * @param drawableId - * @return - */ - public ViewGroupSetter childViewBgDrawable(int viewId, int drawableId) { - mItemViewSetters.add(new ViewBackgroundDrawableSetter(viewId, - drawableId)); - return this; - } - - /** - * 设置文本颜色,因此View的类型必须为TextView或者其子类 - * - * @param viewId - * @param colorId - * @return - */ - public ViewGroupSetter childViewTextColor(int viewId, int colorId) { - mItemViewSetters.add(new TextColorSetter(viewId, colorId)); - return this; - } - - @Override - public void setValue(Theme newTheme, int themeId) { - mView.setBackgroundColor(getColor(newTheme)); - // 清空AbsListView的元素 - clearListViewRecyclerBin(mView); - // 清空RecyclerView - clearRecyclerViewRecyclerBin(mView); - // 修改所有子元素的相关属性 - changeChildenAttrs((ViewGroup) mView, newTheme, themeId); - } - - /** - * - * @param viewId - * @return - */ - private View findViewById(View rootView, int viewId) { - View targetView = rootView.findViewById(viewId); - Log.d("", "### viewgroup find view : " + targetView); - return targetView; - } - - /** - * 修改子视图的对应属性 - * - * @param viewGroup - * @param newTheme - * @param themeId - */ - private void changeChildenAttrs(ViewGroup viewGroup, Theme newTheme, - int themeId) { - int childCount = viewGroup.getChildCount(); - for (int i = 0; i < childCount; i++) { - View childView = viewGroup.getChildAt(i); - // 深度遍历 - if (childView instanceof ViewGroup) { - changeChildenAttrs((ViewGroup) childView, newTheme, themeId); - } - - // 遍历子元素与要修改的属性,如果相同那么则修改子View的属性 - for (ViewSetter setter : mItemViewSetters) { - // 每次都要从ViewGroup中查找数据 - setter.mView = findViewById(viewGroup, setter.mViewId); - - Log.e("", "### childView : " + childView + ", id = " - + childView.getId()); - Log.e("", "### setter view : " + setter.mView + ", id = " - + setter.getViewId()); - if (childView.getId() == setter.getViewId()) { - setter.setValue(newTheme, themeId); - Log.e("", "@@@ 修改新的属性: " + childView); - } - } - } - } - - private void clearListViewRecyclerBin(View rootView) { - if (rootView instanceof AbsListView) { - try { - Field localField = AbsListView.class - .getDeclaredField("mRecycler"); - localField.setAccessible(true); - Method localMethod = Class.forName( - "android.widget.AbsListView$RecycleBin") - .getDeclaredMethod("clear", new Class[0]); - localMethod.setAccessible(true); - localMethod.invoke(localField.get(rootView), new Object[0]); - Log.e("", "### 清空AbsListView的RecycerBin "); - } catch (NoSuchFieldException e1) { - e1.printStackTrace(); - } catch (ClassNotFoundException e2) { - e2.printStackTrace(); - } catch (NoSuchMethodException e3) { - e3.printStackTrace(); - } catch (IllegalAccessException e4) { - e4.printStackTrace(); - } catch (InvocationTargetException e5) { - e5.printStackTrace(); - } - } - } - - private void clearRecyclerViewRecyclerBin(View rootView) { - if (rootView instanceof RecyclerView) { - try { - Field localField = RecyclerView.class - .getDeclaredField("mRecycler"); - localField.setAccessible(true); - Method localMethod = Class.forName( - "android.support.v7.widget.RecyclerView$Recycler") - .getDeclaredMethod("clear", new Class[0]); - localMethod.setAccessible(true); - localMethod.invoke(localField.get(rootView), new Object[0]); - Log.e("", "### 清空RecyclerView的Recycer "); - rootView.invalidate(); - } catch (NoSuchFieldException e1) { - e1.printStackTrace(); - } catch (ClassNotFoundException e2) { - e2.printStackTrace(); - } catch (NoSuchMethodException e3) { - e3.printStackTrace(); - } catch (IllegalAccessException e4) { - e4.printStackTrace(); - } catch (InvocationTargetException e5) { - e5.printStackTrace(); - } - } - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewSetter.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewSetter.java deleted file mode 100644 index 15c4293..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/colorful/setter/ViewSetter.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.util.TypedValue; -import android.view.View; - -/** - * ViewSetter,用于通过{@see #mAttrResId} - * 设置View的某个属性值,例如背景Drawable、背景色、文本颜色等。如需修改其他属性,可以自行扩展ViewSetter. - * - * @author mrsimple - * - */ -public abstract class ViewSetter { - - /** - * 目标View - */ - protected View mView; - /** - * 目标view id,有时在初始化时还未构建该视图,比如ListView的Item View中的某个控件 - */ - protected int mViewId; - /** - * 目标View要的特定属性id - */ - protected int mAttrResId; - - public ViewSetter(View targetView, int resId) { - mView = targetView; - mAttrResId = resId; - } - - public ViewSetter(int viewId, int resId) { - mViewId = viewId; - mAttrResId = resId; - } - - /** - * - * @param newTheme - * @param themeId - */ - public abstract void setValue(Theme newTheme, int themeId); - - /** - * 获取视图的Id - * - * @return - */ - protected int getViewId() { - return mView != null ? mView.getId() : -1; - } - - protected boolean isViewNotFound() { - return mView == null; - } - - /** - * - * @param newTheme - * @param resId - * @return - */ - protected int getColor(Theme newTheme) { - TypedValue typedValue = new TypedValue(); - newTheme.resolveAttribute(mAttrResId, typedValue, true); - return typedValue.data; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/DBManager.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/DBManager.java deleted file mode 100644 index bb08085..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/DBManager.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.android.learn.base.db; - -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; - -import com.android.learn.base.greendao.gen.DaoMaster; -import com.android.learn.base.greendao.gen.DaoSession; -import com.android.learn.base.greendao.gen.SearchRecordDao; - -import org.greenrobot.greendao.query.QueryBuilder; - -import java.util.List; - -public class DBManager { - private final static String dbName = "search_record"; - private static DBManager mInstance; - private DaoMaster.DevOpenHelper openHelper; - private Context context; - - public DBManager(Context context) { - this.context = context; - openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); - } - - /** - * 获取单例引用 - * - * @param context - * @return - */ - public static DBManager getInstance(Context context) { - if (mInstance == null) { - synchronized (DBManager.class) { - if (mInstance == null) { - mInstance = new DBManager(context); - } - } - } - return mInstance; - } - /** - * 获取可写数据库 - */ - private SQLiteDatabase getWritableDatabase() { - if (openHelper == null) { - openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); - } - SQLiteDatabase db = openHelper.getWritableDatabase(); - return db; - } - /** - * 获取可读数据库 - */ - private SQLiteDatabase getReadableDatabase() { - if (openHelper == null) { - openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); - } - SQLiteDatabase db = openHelper.getReadableDatabase(); - return db; - } - /** - * 插入一条记录 - * - * @param searchRecord - */ - public void insertUser(SearchRecord searchRecord) { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.insert(searchRecord); - } - - /** - * 插入用户集合 - * - * @param users - */ - public void insertUserList(List users) { - if (users == null || users.isEmpty()) { - return; - } - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.insertInTx(users); - } - /** - * 删除一条记录 - * - * @param searchRecord - */ - public void deleteUser(SearchRecord searchRecord) { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.delete(searchRecord); - } - public void deleteAll() { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.deleteAll(); - } - - /** - * 更新一条记录 - * - * @param searchRecord - */ - public void updateUser(SearchRecord searchRecord) { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.update(searchRecord); - } - /** - * 查询用户列表 - */ - public List queryUserList() { - DaoMaster daoMaster = new DaoMaster(getReadableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - QueryBuilder qb = userDao.queryBuilder(); - List list = qb.list(); - return list; - } - - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/DBManager.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/DBManager.kt new file mode 100644 index 0000000..9542445 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/DBManager.kt @@ -0,0 +1,135 @@ +package com.android.learn.base.db + +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import com.android.learn.base.application.CustomApplication.Companion.context + +import com.android.learn.base.greendao.gen.DaoMaster +import com.android.learn.base.greendao.gen.DaoSession +import com.android.learn.base.greendao.gen.SearchRecordDao + +import org.greenrobot.greendao.query.QueryBuilder + +class DBManager private constructor(){ + private var openHelper: DaoMaster.DevOpenHelper? = null + /** + * 获取可写数据库 + */ + private val writableDatabase: SQLiteDatabase + get() { + if (openHelper == null) { + openHelper = DaoMaster.DevOpenHelper(context, dbName, null) + } + return openHelper!!.writableDatabase + } + /** + * 获取可读数据库 + */ + private val readableDatabase: SQLiteDatabase + get() { + if (openHelper == null) { + openHelper = DaoMaster.DevOpenHelper(context, dbName, null) + } + return openHelper!!.readableDatabase + } + + init { + openHelper = DaoMaster.DevOpenHelper(context, dbName, null) + } + + /** + * 插入一条记录 + * + * @param searchRecord + */ + fun insertUser(searchRecord: SearchRecord) { + val daoMaster = DaoMaster(writableDatabase) + val daoSession = daoMaster.newSession() + val userDao = daoSession.searchRecordDao + userDao.insert(searchRecord) + } + + /** + * 插入用户集合 + * + * @param users + */ + fun insertUserList(users: List?) { + if (users == null || users.isEmpty()) { + return + } + val daoMaster = DaoMaster(writableDatabase) + val daoSession = daoMaster.newSession() + val userDao = daoSession.searchRecordDao + userDao.insertInTx(users) + } + + /** + * 删除一条记录 + * + * @param searchRecord + */ + fun deleteUser(searchRecord: SearchRecord) { + val daoMaster = DaoMaster(writableDatabase) + val daoSession = daoMaster.newSession() + val userDao = daoSession.searchRecordDao + userDao.delete(searchRecord) + } + + fun deleteAll() { + val daoMaster = DaoMaster(writableDatabase) + val daoSession = daoMaster.newSession() + val userDao = daoSession.searchRecordDao + userDao.deleteAll() + } + + /** + * 更新一条记录 + * + * @param searchRecord + */ + fun updateUser(searchRecord: SearchRecord) { + val daoMaster = DaoMaster(writableDatabase) + val daoSession = daoMaster.newSession() + val userDao = daoSession.searchRecordDao + userDao.update(searchRecord) + } + + /** + * 查询用户列表 + */ + fun queryUserList(): List { + val daoMaster = DaoMaster(readableDatabase) + val daoSession = daoMaster.newSession() + val userDao = daoSession.searchRecordDao + val qb = userDao.queryBuilder() + return qb.list() + } + + companion object { + private val dbName = "search_record" + private var mInstance: DBManager? = null + fun getInstance() = Holder.INSTANCE + /** + * 获取单例引用 + * + * @param context + * @return + */ +// fun getInstance(context: Context): DBManager? { +// if (mInstance == null) { +// synchronized(DBManager::class.java) { +// if (mInstance == null) { +// mInstance = DBManager(context) +// } +// } +// } +// return mInstance +// } + } + + + private object Holder { + val INSTANCE = DBManager() + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/SearchRecord.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/SearchRecord.java deleted file mode 100644 index 3ef04b1..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/SearchRecord.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.android.learn.base.db; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Id; -import org.greenrobot.greendao.annotation.Generated; - -@Entity -public class SearchRecord { - @Id - private Long id; - private String name; - @Generated(hash = 2029079304) - public SearchRecord(Long id, String name) { - this.id = id; - this.name = name; - } - @Generated(hash = 839789598) - public SearchRecord() { - } - public Long getId() { - return this.id; - } - public void setId(Long id) { - this.id = id; - } - public String getName() { - return this.name; - } - public void setName(String name) { - this.name = name; - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/SearchRecord.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/SearchRecord.kt new file mode 100644 index 0000000..21de964 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/db/SearchRecord.kt @@ -0,0 +1,23 @@ +package com.android.learn.base.db + +import org.greenrobot.greendao.annotation.Entity +import org.greenrobot.greendao.annotation.Id +import org.greenrobot.greendao.annotation.Generated + +@Entity +class SearchRecord { + @Id + var id: Long? = null + var name: String? = null + + @Generated(hash = 2029079304) + constructor(id: Long?, name: String) { + this.id = id + this.name = name + } + + @Generated(hash = 839789598) + constructor() { + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/JSSEProvider.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/JSSEProvider.java deleted file mode 100644 index 7c76334..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/JSSEProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.learn.base.email; - -import java.security.AccessController; -import java.security.Provider; - -public class JSSEProvider extends Provider { - - public JSSEProvider() { - super("HarmonyJSSE", 1.0, "Harmony JSSE Provider"); - AccessController.doPrivileged(new java.security.PrivilegedAction() { - public Void run() { - put("SSLContext.TLS", - "org.apache.harmony.xnet.provider.jsse.SSLContextImpl"); - put("Alg.Alias.SSLContext.TLSv1", "TLS"); - put("KeyManagerFactory.X509", - "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl"); - put("TrustManagerFactory.X509", - "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl"); - return null; - } - }); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/JSSEProvider.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/JSSEProvider.kt new file mode 100644 index 0000000..64fafe4 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/JSSEProvider.kt @@ -0,0 +1,21 @@ +package com.android.learn.base.email + +import java.security.AccessController +import java.security.PrivilegedAction +import java.security.Provider + +class JSSEProvider : Provider("HarmonyJSSE", 1.0, "Harmony JSSE Provider") { + init { + AccessController.doPrivileged(java.security.PrivilegedAction { + put("SSLContext.TLS", + "org.apache.harmony.xnet.provider.jsse.SSLContextImpl") + put("Alg.Alias.SSLContext.TLSv1", "TLS") + put("KeyManagerFactory.X509", + "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl") + put("TrustManagerFactory.X509", + "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl") + null + }) + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/MailSender.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/MailSender.java deleted file mode 100644 index 1d11182..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/MailSender.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.android.learn.base.email; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.security.Security; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Properties; - -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.activation.FileDataSource; -import javax.mail.Authenticator; -import javax.mail.BodyPart; -import javax.mail.Message; -import javax.mail.Multipart; -import javax.mail.PasswordAuthentication; -import javax.mail.Session; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeBodyPart; -import javax.mail.internet.MimeMessage; -import javax.mail.internet.MimeMultipart; - -public class MailSender extends Authenticator { - - private String user; - private String password; - private Session session; - private String mailhost = "smtp.qq.com";//在这里配置你送邮件的主机地址,如qq邮箱、163邮箱等是不一样的 - private String port= "465";//在这里配置你送邮件的主机端口,如qq邮箱、163邮箱等是不一样的 - private Multipart messageMultipart; - private Properties properties; - static { - Security.addProvider(new JSSEProvider()); - } - - public MailSender(String user, String password) { - this.user = user; - this.password = password; - - properties = new Properties(); - properties.setProperty("mail.transport.protocol", "smtp"); - properties.setProperty("mail.host", mailhost); - properties.put("mail.smtp.auth", "true"); - properties.put("mail.smtp.port",port); - properties.put("mail.smtp.socketFactory.port",port); - properties.put("mail.smtp.socketFactory.class", - "javax.net.ssl.SSLSocketFactory"); - properties.put("mail.smtp.socketFactory.fallback", "false"); - properties.setProperty("mail.smtp.quitwait", "false"); - - session = Session.getDefaultInstance(properties, this); - messageMultipart=new MimeMultipart(); - } - - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(user, password); - } - - public synchronized void sendMail(String subject, String body, - String sender, String recipients,String attachment) throws Exception { - MimeMessage message = new MimeMessage(session); - message.setSender(new InternetAddress(sender));//閭欢鍙戜欢浜� - message.setSubject(subject);//閭欢涓婚 - //璁剧疆閭欢鍐呭 - BodyPart bodyPart=new MimeBodyPart(); - bodyPart.setText(body); - messageMultipart.addBodyPart(bodyPart); -// message.setDataHandler(handler); - - //璁剧疆閭欢闄勪欢 - if(attachment!=null){ - DataSource dataSource=new FileDataSource(attachment); - DataHandler dataHandler=new DataHandler(dataSource); - bodyPart.setDataHandler(dataHandler); - bodyPart.setFileName(attachment.substring(attachment.lastIndexOf("/")+1)); - } - message.setContent(messageMultipart); - if (recipients.indexOf(',') > 0) - //澶氫釜鑱旂郴浜� - message.setRecipients(Message.RecipientType.TO, - InternetAddress.parse(recipients)); - else - //鍗曚釜鑱旂郴浜� - message.setRecipient(Message.RecipientType.TO, new InternetAddress( - recipients)); - Transport.send(message); - } - - //缁ф壙DataSource璁剧疆瀛楃缂栫爜 - public class ByteArrayDataSource implements DataSource { - private byte[] data; - private String type; - - public ByteArrayDataSource(byte[] data, String type) { - super(); - this.data = data; - this.type = type; - } - - public ByteArrayDataSource(byte[] data) { - super(); - this.data = data; - } - - public void setType(String type) { - this.type = type; - } - - public String getContentType() { - if (type == null) - return "application/octet-stream"; - else - return type; - } - - public InputStream getInputStream() throws IOException { - return new ByteArrayInputStream(data); - } - - public String getName() { - return "ByteArrayDataSource"; - } - - public OutputStream getOutputStream() throws IOException { - throw new IOException("Not Supported"); - } - - public PrintWriter getLogWriter() throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public int getLoginTimeout() throws SQLException { - // TODO Auto-generated method stub - return 0; - } - - public void setLogWriter(PrintWriter out) throws SQLException { - // TODO Auto-generated method stub - - } - - public void setLoginTimeout(int seconds) throws SQLException { - // TODO Auto-generated method stub - - } - - public boolean isWrapperFor(Class arg0) throws SQLException { - // TODO Auto-generated method stub - return false; - } - - public T unwrap(Class arg0) throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public Connection getConnection() throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public Connection getConnection(String theUsername, String thePassword) - throws SQLException { - // TODO Auto-generated method stub - return null; - } - } - - public String getMailhost() { - return mailhost; - } - - public void setMailhost(String mailhost) { - this.mailhost = mailhost; - properties.setProperty("mail.host", this.mailhost); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/MailSender.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/MailSender.kt new file mode 100644 index 0000000..e52b5e0 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/MailSender.kt @@ -0,0 +1,176 @@ +package com.android.learn.base.email + +import java.io.ByteArrayInputStream +import java.io.IOException +import java.io.InputStream +import java.io.OutputStream +import java.io.PrintWriter +import java.security.Security +import java.sql.Connection +import java.sql.SQLException +import java.util.Properties + +import javax.activation.DataHandler +import javax.activation.DataSource +import javax.activation.FileDataSource +import javax.mail.Authenticator +import javax.mail.BodyPart +import javax.mail.Message +import javax.mail.Multipart +import javax.mail.PasswordAuthentication +import javax.mail.Session +import javax.mail.Transport +import javax.mail.internet.InternetAddress +import javax.mail.internet.MimeBodyPart +import javax.mail.internet.MimeMessage +import javax.mail.internet.MimeMultipart + +class MailSender(private val user: String, private val password: String) : Authenticator() { + private val session: Session + var mailhost = "smtp.qq.com" + set(mailhost) { + field = mailhost + properties.setProperty("mail.host", this.mailhost) + }//在这里配置你送邮件的主机地址,如qq邮箱、163邮箱等是不一样的 + private val port = "465"//在这里配置你送邮件的主机端口,如qq邮箱、163邮箱等是不一样的 + private val messageMultipart: Multipart + private val properties: Properties + + init { + + properties = Properties() + properties.setProperty("mail.transport.protocol", "smtp") + properties.setProperty("mail.host", this.mailhost) + properties["mail.smtp.auth"] = "true" + properties["mail.smtp.port"] = port + properties["mail.smtp.socketFactory.port"] = port + properties["mail.smtp.socketFactory.class"] = "javax.net.ssl.SSLSocketFactory" + properties["mail.smtp.socketFactory.fallback"] = "false" + properties.setProperty("mail.smtp.quitwait", "false") + + session = Session.getDefaultInstance(properties, this) + messageMultipart = MimeMultipart() + } + + override fun getPasswordAuthentication(): PasswordAuthentication { + return PasswordAuthentication(user, password) + } + + @Synchronized + @Throws(Exception::class) + fun sendMail(subject: String?, body: String?, + sender: String?, recipients: String, attachment: String?) { + val message = MimeMessage(session) + message.sender = InternetAddress(sender)//閭欢鍙戜欢浜� + message.subject = subject//閭欢涓婚 + //璁剧疆閭欢鍐呭 + val bodyPart = MimeBodyPart() + bodyPart.setText(body) + messageMultipart.addBodyPart(bodyPart) + // message.setDataHandler(handler); + + //璁剧疆閭欢闄勪欢 + if (attachment != null) { + val dataSource = FileDataSource(attachment) + val dataHandler = DataHandler(dataSource) + bodyPart.dataHandler = dataHandler + bodyPart.fileName = attachment.substring(attachment.lastIndexOf("/") + 1) + } + message.setContent(messageMultipart) + if (recipients.indexOf(',') > 0) + //澶氫釜鑱旂郴浜� + message.setRecipients(Message.RecipientType.TO, + InternetAddress.parse(recipients)) + else + //鍗曚釜鑱旂郴浜� + message.setRecipient(Message.RecipientType.TO, InternetAddress( + recipients)) + Transport.send(message) + } + + //缁ф壙DataSource璁剧疆瀛楃缂栫爜 + inner class ByteArrayDataSource : DataSource { + private var data: ByteArray? = null + private var type: String? = null + + // TODO Auto-generated method stub + // TODO Auto-generated method stub + var logWriter: PrintWriter? + @Throws(SQLException::class) + get() = null + @Throws(SQLException::class) + set(out) { + + } + + // TODO Auto-generated method stub + // TODO Auto-generated method stub + var loginTimeout: Int + @Throws(SQLException::class) + get() = 0 + @Throws(SQLException::class) + set(seconds) { + + } + + // TODO Auto-generated method stub + val connection: Connection? + @Throws(SQLException::class) + get() = null + + constructor(data: ByteArray, type: String) : super() { + this.data = data + this.type = type + } + + constructor(data: ByteArray) : super() { + this.data = data + } + + fun setType(type: String) { + this.type = type + } + + override fun getContentType(): String { + return "application/octet-stream" + } + + @Throws(IOException::class) + override fun getInputStream(): InputStream { + return ByteArrayInputStream(data) + } + + override fun getName(): String { + return "ByteArrayDataSource" + } + + @Throws(IOException::class) + override fun getOutputStream(): OutputStream { + throw IOException("Not Supported") + } + + @Throws(SQLException::class) + fun isWrapperFor(arg0: Class<*>): Boolean { + // TODO Auto-generated method stub + return false + } + + @Throws(SQLException::class) + fun unwrap(arg0: Class): T? { + // TODO Auto-generated method stub + return null + } + + @Throws(SQLException::class) + fun getConnection(theUsername: String, thePassword: String): Connection? { + // TODO Auto-generated method stub + return null + } + } + + companion object { + init { + Security.addProvider(JSSEProvider()) + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/ToastUtils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/ToastUtils.java deleted file mode 100644 index c774d18..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/ToastUtils.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.learn.base.email; - -import android.content.Context; -import android.os.Looper; -import android.widget.Toast; - -public class ToastUtils { - static Toast toast = null; - public static void show(Context context, String text) { - try { - if(toast!=null){ - toast.setText(text); - }else{ - toast= Toast.makeText(context, text, Toast.LENGTH_SHORT); - } - toast.show(); - } catch (Exception e) { - //解决在子线程中调用Toast的异常情况处理 - Looper.prepare(); - Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); - Looper.loop(); - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/ToastUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/ToastUtils.kt new file mode 100644 index 0000000..e781df9 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/email/ToastUtils.kt @@ -0,0 +1,25 @@ +package com.android.learn.base.email + +import android.content.Context +import android.os.Looper +import android.widget.Toast + +object ToastUtils { + internal var toast: Toast? = null + fun show(context: Context, text: String) { + try { + if (toast != null) { + toast!!.setText(text) + } else { + toast = Toast.makeText(context, text, Toast.LENGTH_SHORT) + } + toast!!.show() + } catch (e: Exception) { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare() + Toast.makeText(context, text, Toast.LENGTH_SHORT).show() + Looper.loop() + } + + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/CancelCollectEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/CancelCollectEvent.java deleted file mode 100644 index 9668f40..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/CancelCollectEvent.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.android.learn.base.event; - -public class CancelCollectEvent { - public int id; - - public CancelCollectEvent(int id) { - this.id = id; - - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/CancelCollectEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/CancelCollectEvent.kt new file mode 100644 index 0000000..a0f877e --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/CancelCollectEvent.kt @@ -0,0 +1,3 @@ +package com.android.learn.base.event + +class CancelCollectEvent(var id: Int) \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/ChangeNightEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/ChangeNightEvent.java deleted file mode 100644 index 9fb14b9..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/ChangeNightEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.learn.base.event; - -public class ChangeNightEvent { - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/ChangeNightEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/ChangeNightEvent.kt new file mode 100644 index 0000000..75288c8 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/ChangeNightEvent.kt @@ -0,0 +1,3 @@ +package com.android.learn.base.event + +class ChangeNightEvent \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LoginEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LoginEvent.java deleted file mode 100644 index df35c53..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LoginEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.learn.base.event; - -public class LoginEvent { - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LoginEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LoginEvent.kt new file mode 100644 index 0000000..4c838d3 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LoginEvent.kt @@ -0,0 +1,3 @@ +package com.android.learn.base.event + +class LoginEvent \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LogoutEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LogoutEvent.java deleted file mode 100644 index af9b97d..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LogoutEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.learn.base.event; - -public class LogoutEvent { - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LogoutEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LogoutEvent.kt new file mode 100644 index 0000000..089cf24 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/LogoutEvent.kt @@ -0,0 +1,3 @@ +package com.android.learn.base.event + +class LogoutEvent \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/RestartMainEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/RestartMainEvent.java deleted file mode 100644 index 95c1d29..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/RestartMainEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.android.learn.base.event; - -import android.app.Activity; - -public class RestartMainEvent { - public Activity activity; - public RestartMainEvent(Activity activity){ - this.activity=activity; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/RestartMainEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/RestartMainEvent.kt new file mode 100644 index 0000000..807ec0e --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/RestartMainEvent.kt @@ -0,0 +1,5 @@ +package com.android.learn.base.event + +import android.app.Activity + +class RestartMainEvent(var activity: Activity) \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateDoneEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateDoneEvent.java deleted file mode 100644 index fcdda32..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateDoneEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.android.learn.base.event; - -public class UpdateDoneEvent { - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateDoneEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateDoneEvent.kt new file mode 100644 index 0000000..ff6508a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateDoneEvent.kt @@ -0,0 +1,3 @@ +package com.android.learn.base.event + +class UpdateDoneEvent \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateTodoEvent.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateTodoEvent.java deleted file mode 100644 index ab04c3f..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateTodoEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.android.learn.base.event; - -public class UpdateTodoEvent { - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateTodoEvent.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateTodoEvent.kt new file mode 100644 index 0000000..2c7da32 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/event/UpdateTodoEvent.kt @@ -0,0 +1,3 @@ +package com.android.learn.base.event + +class UpdateTodoEvent \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/fragment/BaseFragment.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/fragment/BaseFragment.kt index 42a2f1a..7fbbbd6 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/fragment/BaseFragment.kt +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/fragment/BaseFragment.kt @@ -83,7 +83,7 @@ abstract class BaseFragment : Fragment(), View.OnClickListener { override fun onClick(v: View) { if (v.id == R.id.bt_error_refresh) { - if (NetUtils.isConnected()) + if (NetUtils.isConnected) mErrorPageView.visibility = View.GONE reload() } diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mview/BaseView.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mview/BaseView.java deleted file mode 100644 index 0de8db4..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mview/BaseView.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.android.learn.base.mview; - -public interface BaseView { - -// void showLoading(); -// void hideLoading(); -// void showErrorMsg(String errorMsg); -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mview/BaseView.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mview/BaseView.kt new file mode 100644 index 0000000..6d7ea4a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mview/BaseView.kt @@ -0,0 +1,5 @@ +package com.android.learn.base.mview + +interface BaseView// void showLoading(); +// void hideLoading(); +// void showErrorMsg(String errorMsg); \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/glide/MyAppGlideModule.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/glide/MyAppGlideModule.java index 95c667d..34d18e4 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/glide/MyAppGlideModule.java +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/glide/MyAppGlideModule.java @@ -27,7 +27,7 @@ public boolean isManifestParsingEnabled() { @Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { int diskCacheSizeBytes = 1024 * 1024 * 100; // 50 MB - glideCachePath= CustomApplication.context.getExternalFilesDir("glide_cache").getAbsolutePath(); + glideCachePath= CustomApplication.Companion.getContext().getExternalFilesDir("glide_cache").getAbsolutePath(); builder.setDiskCache( new DiskLruCacheFactory( glideCachePath, diskCacheSizeBytes ) ); diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java index 92dce17..24119a7 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java @@ -34,7 +34,7 @@ public class CustomizeGsonResponseBodyConverter implements Converter lhs, Pair rhs) { } } - String sign = Utils.md5Encode(sb.toString()); + String sign = Utils.INSTANCE.md5Encode(sb.toString()); params.add(new Pair<>("sign", sign)); for (Pair pair : params) { @@ -143,7 +143,7 @@ public int compare(Pair lhs, Pair rhs) { try { bodyJson.put(pair.first, pair.second); } catch (JSONException e) { - LogUtil.e("JSON", "JsonObject put err"); + LogUtil.INSTANCE.e("JSON", "JsonObject put err"); } } } diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java index bd039f2..a364d0a 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java @@ -15,10 +15,10 @@ public class TokenInterceptor implements Interceptor { public Response intercept(Chain chain) throws IOException { Request request = chain.request(); Response response = chain.proceed(request); - LogUtil.d(TAG,response.code()+""); + LogUtil.INSTANCE.d(TAG,response.code()+""); if (isTokenExpired(response)) {//根据和服务端的约定判断token过期 - LogUtil.d(TAG,"静默自动刷新Token,然后重新请求数据"); + LogUtil.INSTANCE.d(TAG,"静默自动刷新Token,然后重新请求数据"); //同步请求方式,获取最新的Token String newSession = getNewToken(); //使用新的Token,创建新的请求 diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/rxjava/BaseObserver.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/rxjava/BaseObserver.java index 3527b07..9351236 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/rxjava/BaseObserver.java +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/rxjava/BaseObserver.java @@ -50,7 +50,7 @@ public void onNext(T t) { public void onError(Throwable e) { if(isCancelDialog) CustomProgressDialog.cancel(); - if (!NetUtils.isConnected()) { + if (!NetUtils.Companion.isConnected()) { errMsg = "网络连接出错,请检查网络"; } else if (e instanceof HttpException) { @@ -59,7 +59,7 @@ public void onError(Throwable e) { errMsg = "服务器访问异常(IOException)"; } if (!"".equals(errMsg)) - Utils.showToast(errMsg, true); + Utils.INSTANCE.showToast(errMsg, true); } diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/CrashHandler.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/CrashHandler.java deleted file mode 100644 index e4bc9c7..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/CrashHandler.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.AlarmManager; -import android.app.Dialog; -import android.app.PendingIntent; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.os.Environment; -import android.os.Looper; -import android.support.v7.app.AlertDialog; -import android.util.Log; -import android.view.Gravity; -import android.view.WindowManager; -import android.widget.Toast; - - -import com.android.learn.base.application.CustomApplication; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.Writer; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; - -public class CrashHandler implements Thread.UncaughtExceptionHandler { - /** - * 系统默认的异常处理类 - */ - private Thread.UncaughtExceptionHandler mDefaultHandler; - Context mcontext; - private static CrashHandler INSTANCE = new CrashHandler(); - String errorSavePath; - //用来存储设备信息和异常信息 - private Map infos = new LinkedHashMap(); - - public static CrashHandler getInstance() { - return INSTANCE; - } - - public void init(Context context) { - mcontext = context; - mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();// 获取默认的异常处理类 - Thread.setDefaultUncaughtExceptionHandler(this);// 设置当前处理类为默认的异常处理类 - } - - @Override - public void uncaughtException(Thread thread, Throwable ex) { - saveCrashInfoIntoSd(ex); - showToast(mcontext, "程序出错了,请先用其它功能,我们会尽快修复!"); - - try { - Thread.sleep(2000); - } catch (Exception e) { - // TODO: handle exception - } - - -// if (SPUtils.contains("currentTime")) { -// String lastTimeMillis = (String) SPUtils.get("currentTime", String.valueOf("0")); -// LogUtil.d("lastTimeMillis:" + lastTimeMillis); -// LogUtil.d("System.currentTimeMillis():" + System.currentTimeMillis()); -// LogUtil.d("priod:" + (System.currentTimeMillis() - Long.valueOf(lastTimeMillis))); -// long timeInterval = System.currentTimeMillis() - Long.valueOf(lastTimeMillis); -// if (timeInterval > 60 * 1000) { -// SPUtils.put("currentTime", String.valueOf(System.currentTimeMillis())); -// } -// } else { -// SPUtils.put("currentTime", String.valueOf(System.currentTimeMillis())); -// -// } - -// android.os.Process.killProcess(android.os.Process.myPid()); -// System.exit(0); - ExitAppUtils.getInstance().exit(); -// } - } - - private void showToast(final Context context, final String msg) { - new Thread(new Runnable() { - - @Override - public void run() { - Looper.prepare(); - Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); - Looper.loop(); - } - }).start(); - } - - - // 收集设备、软件参数信息 - private void collectDeviceInfo() { - try { - PackageManager pm = CustomApplication.context.getPackageManager(); - PackageInfo pi = pm.getPackageInfo(CustomApplication.context.getPackageName(), PackageManager.GET_ACTIVITIES); - if (pi != null) { - String versionName = pi.versionName == null ? "null" : pi.versionName; - String versionCode = pi.versionCode + ""; - infos.put("systemVersion", SystemUtil.getSystemVersion()); - infos.put("deviceModel", SystemUtil.getSystemModel()); - infos.put("deviceBrand", SystemUtil.getDeviceBrand()); - infos.put("versionName", versionName); - infos.put("versionCode", versionCode); - } - } catch (PackageManager.NameNotFoundException e) { - } - - } - - // 保存错误信息到SD卡文件中 - private void saveCrashInfoIntoSd(Throwable ex) { - collectDeviceInfo(); - //创建文件夹 - errorSavePath = Environment.getExternalStorageDirectory().getPath() + "/" + mcontext.getPackageName() + "/crash"; - File dir = new File(errorSavePath); - if (!dir.exists()) dir.mkdirs(); - - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String time = formatter.format(new Date()); - StringBuffer sb = new StringBuffer(); - sb.append("\n" + time + "\n"); - for (Map.Entry entry : infos.entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); - sb.append(key + "=" + value + "\n"); - } - - sb.append(getCrashInfo(ex)); - - try { - //创建文件 - String fileName = "crash-" + time + ".txt"; - File file = new File(errorSavePath + "//" + fileName); - if (!file.exists()) file.createNewFile(); - - FileOutputStream fos = new FileOutputStream(file); - fos.write(sb.toString().getBytes()); - fos.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 得到程序崩溃的详细信息 - */ - public String getCrashInfo(Throwable ex) { - Writer result = new StringWriter(); - PrintWriter printWriter = new PrintWriter(result); - ex.setStackTrace(ex.getStackTrace()); - ex.printStackTrace(printWriter); - printWriter.close(); - return result.toString(); - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/CustomCrashHandler.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/CustomCrashHandler.java deleted file mode 100644 index 242f86b..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/CustomCrashHandler.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Build; -import android.os.Environment; -import android.os.Looper; -import android.util.Log; -import android.widget.Toast; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.Thread.UncaughtExceptionHandler; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.TimeZone; - -public class CustomCrashHandler implements UncaughtExceptionHandler { - private static final String TAG = "Activity"; - private Context mContext; - private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().toString(); - private static CustomCrashHandler mInstance = new CustomCrashHandler(); - - - private CustomCrashHandler(){} - - public static CustomCrashHandler getInstance(){ - return mInstance; - } - - - @Override - public void uncaughtException(Thread thread, Throwable ex) { - savaInfoToSD(mContext, ex); - - showToast(mContext, "程序出错了,请先用其它功能,我们会尽快修复!"); - try { - thread.sleep(2000); - } catch (InterruptedException e) { - e.printStackTrace(); - } -// android.os.Process.killProcess(android.os.Process.myPid()); -// System.exit(0); - - ExitAppUtils.getInstance().exit(); - - } - - - public void init(Context context){ - mContext = context; - Thread.setDefaultUncaughtExceptionHandler(this); - } - - - private void showToast(final Context context, final String msg){ - new Thread(new Runnable() { - - @Override - public void run() { - Looper.prepare(); - Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); - Looper.loop(); - } - }).start(); - } - - - private HashMap obtainSimpleInfo(Context context){ - HashMap map = new HashMap(); - PackageManager mPackageManager = context.getPackageManager(); - PackageInfo mPackageInfo = null; - try { - mPackageInfo = mPackageManager.getPackageInfo(context.getPackageName(), PackageManager.GET_ACTIVITIES); - } catch (NameNotFoundException e) { - e.printStackTrace(); - } - - map.put("versionName", mPackageInfo.versionName); - map.put("versionCode", "" + mPackageInfo.versionCode); - - map.put("MODEL", "" + Build.MODEL); - map.put("SDK_INT", "" + Build.VERSION.SDK_INT); - map.put("PRODUCT", "" + Build.PRODUCT); - - return map; - } - - - private String obtainExceptionInfo(Throwable throwable) { - StringWriter mStringWriter = new StringWriter(); - PrintWriter mPrintWriter = new PrintWriter(mStringWriter); - throwable.printStackTrace(mPrintWriter); - mPrintWriter.close(); - - Log.e(TAG, mStringWriter.toString()); - return mStringWriter.toString(); - } - - - private String savaInfoToSD(Context context, Throwable ex){ - String fileName = null; - StringBuffer sb = new StringBuffer(); - - for (Map.Entry entry : obtainSimpleInfo(context).entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); - sb.append(key).append(" = ").append(value).append("\n"); - } - - sb.append(obtainExceptionInfo(ex)); - - if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ - File dir = new File(SDCARD_ROOT + File.separator + "crash" + File.separator); - if(! dir.exists()){ - dir.mkdir(); - } - - try{ - fileName = dir.toString() + File.separator + paserTime(System.currentTimeMillis()) + ".log"; - FileOutputStream fos = new FileOutputStream(fileName); - fos.write(sb.toString().getBytes()); - fos.flush(); - fos.close(); - }catch(Exception e){ - e.printStackTrace(); - } - - } - - return fileName; - - } - - - private String paserTime(long milliseconds) { - System.setProperty("user.timezone", "Asia/Shanghai"); - TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); - TimeZone.setDefault(tz); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - String times = format.format(new Date(milliseconds)); - - return times; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/DialogUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/DialogUtil.java deleted file mode 100644 index 5616e8a..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/DialogUtil.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.support.v7.app.AlertDialog; -import android.util.Log; -import android.view.WindowManager; -import android.widget.Toast; - -public class DialogUtil { - - - - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ErrorLogSave.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ErrorLogSave.java deleted file mode 100644 index 7e4cc6f..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ErrorLogSave.java +++ /dev/null @@ -1,191 +0,0 @@ - -package com.android.learn.base.utils; - -import android.content.Context; -import android.os.Environment; -import android.os.Handler; -import android.text.TextUtils; -import android.util.Log; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; - -public class ErrorLogSave extends Thread { - - private static final String TAG = "ErrorLogSave"; - - Context context; - - private static final String SD_PATH = Environment.getExternalStorageDirectory() - .getAbsolutePath(); - - private static final String FILE_PATH = SD_PATH + "/xuetangx_error_log/"; - - private static String packageName; - - protected final Handler mHandler; - - public ErrorLogSave(Context context) { - this.context = context; - mHandler = new Handler(); - packageName = context.getPackageName(); - } - - - public static void onError(Context context) { - new ErrorLogSave(context).start(); - } - - /** - * 获取异常日志信息 - * - * @param paramContext - * @return - */ - private static String getExceptionLog(Context paramContext) { - String localObject = ""; - try { - String str1 = paramContext.getPackageName(); - String str2 = ""; - int i1 = 0; - int i2 = 0; - ArrayList localArrayList = new ArrayList(); - localArrayList.add("logcat"); - localArrayList.add("-d"); - localArrayList.add("-v"); - localArrayList.add("raw"); - localArrayList.add("-s"); - localArrayList.add("AndroidRuntime:E"); - localArrayList.add("-p"); - localArrayList.add(str1); - Process localProcess = Runtime.getRuntime().exec( - (String[]) localArrayList.toArray(new String[localArrayList.size()])); - BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader( - localProcess.getInputStream()), 1024); - for (String str3 = localBufferedReader.readLine(); str3 != null; str3 = localBufferedReader - .readLine()) { - if (str3.indexOf("thread attach failed") < 0) { - str2 = str2 + str3 + '\n'; - } - if ((i2 == 0) && (str3.toLowerCase().indexOf("exception") >= 0)) { - i2 = 1; - } - if ((i1 != 0) || (str3.indexOf(str1) < 0)) { - continue; - } - i1 = 1; - } - if ((str2.length() > 0) && (i2 != 0) && (i1 != 0)) { - localObject = str2; - } - try { - Runtime.getRuntime().exec("logcat -c"); - } catch (Exception localException2) { - Log.e(TAG, "Failed to clear log"); - } - } catch (Exception localException1) { - Log.e(TAG, "Failed to catch error log"); - } - return localObject; - } - - /** - * 存储错误日志到sd卡
目录名称:"/sd/itotem_error_log/"
文件名称: - * packagename_tiem(YYYY_MM_DD-HH_mm_ss) - * - * @param context - * @param errorLog - */ - protected static void cacheErrorLogToSDFile(Context context, String errorLog) { - Log.e(TAG, "cache Error Log To SD File is ruuning:" + errorLog); - if (TextUtils.isEmpty(errorLog)) { - return; - } - FileOutputStream outputStream = null; - try { - long curTimeM = System.currentTimeMillis(); - if (TextUtils.isEmpty(packageName)) { - packageName = context.getPackageName(); - } - // 获取新的文件名称 - String fileName = packageName + "_" + getTime(curTimeM) + ".txt"; - Log.i(TAG, "new file is :" + fileName); - // File file = new File(FILE_PATH, fileName); - File pathFile = new File(FILE_PATH); - File file = new File(pathFile, fileName); - if (!pathFile.exists()) { - pathFile.mkdirs(); - } - if (!file.exists()) { - file.createNewFile(); - } - // 打开一个新的文件 - outputStream = new FileOutputStream(file); - outputStream.write(errorLog.getBytes()); - outputStream.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - return; - } catch (IOException e) { - e.printStackTrace(); - return; - } finally { - if (outputStream != null) { - try { - outputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - outputStream = null; - } - } - } - - private static String getTime(long curTime) { - SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); - Date date = new Date(curTime); - return df1.format(date); - } - - - @Override - public void run() { - String str = getExceptionLog(context); - mHandler.post(new SaveErrorLog2SD(str)); - super.run(); - } - - private static final Object a = new Object();// 线程锁 - - /** - * 保存错误日志到sd卡 - * - * @author pengjun - */ - private class SaveErrorLog2SD implements Runnable { - String errorLog; - - SaveErrorLog2SD(String errorLog) { - this.errorLog = errorLog; - } - - @Override - public void run() { - // TODO 执行保存错误日志到卡 -// String deviceInfo = CollectDataManager.getDebugInfosToErrorMessage(context); -// errorLog += "\n deviceInfo:" + deviceInfo; -// cacheErrorLogToSDFile(context, errorLog); - - } - - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.java deleted file mode 100644 index d41c683..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Activity; - -import java.util.LinkedList; -import java.util.List; - -public class ExitAppUtils { - - private List mActivityList = new LinkedList(); - private static ExitAppUtils instance = new ExitAppUtils(); - - private ExitAppUtils(){}; - - public static ExitAppUtils getInstance(){ - return instance; - } - - public void addActivity(Activity activity){ - mActivityList.add(activity); - } - - public void delActivity(Activity activity){ - mActivityList.remove(activity); - } - - public void exit(){ - for(Activity activity : mActivityList){ - activity.finish(); - } - - System.exit(0); - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.kt new file mode 100644 index 0000000..8b00430 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.kt @@ -0,0 +1,32 @@ +package com.android.learn.base.utils + +import android.app.Activity + +import java.util.LinkedList + +class ExitAppUtils private constructor() { + + private val mActivityList = LinkedList() + + fun addActivity(activity: Activity) { + mActivityList.add(activity) + } + + fun delActivity(activity: Activity) { + mActivityList.remove(activity) + } + + fun exit() { + for (activity in mActivityList) { + activity.finish() + } + + System.exit(0) + } + + companion object { + val instance = ExitAppUtils() + } + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/JsonUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/JsonUtil.java deleted file mode 100644 index 28cecea..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/JsonUtil.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.android.learn.base.utils; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.gson.JsonParser; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * JSON字符换和对象间转换的工具类 - */ -public class JsonUtil { - - private static final Gson GSON = new Gson(); - - /** - * 将json字符串转换成相应的对象 - * - * @param jsonString json字符串 - * @param classOfT 对象类型的class - * @param 对象的类型 - * @return 转换后的对象 - * @throws JsonParseException if json is not a valid representation for an object of type classOfT - */ - public static T decode(String jsonString, Class classOfT) throws RuntimeException { - return GSON.fromJson(jsonString, classOfT); - } - - /** - * 将json字符串转换成相应的对象 - * - * @param jsonString json字符串 - * @param typeOfT 对象类型的type - * @param 对象的类型 - * @return 转换后的对象 - * @throws JsonParseException if json is not a valid representation for an object of type typeOfT - */ - public static T decode(String jsonString, Type typeOfT) throws RuntimeException { - return GSON.fromJson(jsonString, typeOfT); - } - - /** - * 将已经从json转换后的对象(通常是一个Map)转换成对应Bean的对象实例 - * - * @param object 一个转json换中的过程对象,通常是一个Map,若传值为null,则返回null - * @param typeOfT 要转换的对象类型的type - * @param 要转换的对象类型 - * @return 转换后的对象 - * @throws JsonParseException if object is not a valid representation for an object of type typeOfT - */ - public static T decode(Object object, Type typeOfT) throws RuntimeException { - String jsonString = GSON.toJson(object); - return GSON.fromJson(jsonString, typeOfT); - } - - /** - * 将一个JavaBean转换成json字符串 - * - * @param object 待转换的对象 - * @return json字符串 - * @throws JsonParseException if there was a problem while parsing object. - */ - public static String encode(Object object) throws RuntimeException { - return GSON.toJson(object); - } - - - /** - * 获取JsonObject - * - * @param json - * @return - */ - public static JsonObject parseJson(String json) { - JsonParser parser = new JsonParser(); - JsonObject jsonObj = parser.parse(json).getAsJsonObject(); - return jsonObj; - } - - /** - * 根据javaBean转json字符串再将字符串转Map对象 - * - * @param object - * @return - */ - public static Map javaBeanToMap(Object object) { - String strJson = encode(object); - return toMap(parseJson(strJson)); - } - - /** - * 将JSONObjec对象转换成Map-List集合 - * - * @param json - * @return - */ - public static Map toMap(JsonObject json) { - Map map = new HashMap(); - Set> entrySet = json.entrySet(); - for (Iterator> iter = entrySet.iterator(); iter.hasNext(); ) { - Map.Entry entry = iter.next(); - String key = entry.getKey(); - Object value = entry.getValue(); - if (value instanceof JsonArray) - map.put((String) key, toList((JsonArray) value)); - else if (value instanceof JsonObject) - map.put((String) key, toMap((JsonObject) value)); - else - map.put((String) key, value); - } - return map; - } - - /** - * 将JSONArray对象转换成List集合 - * - * @param json - * @return - */ - public static List toList(JsonArray json) { - List list = new ArrayList(); - for (int i = 0; i < json.size(); i++) { - Object value = json.get(i); - if (value instanceof JsonArray) { - list.add(toList((JsonArray) value)); - } else if (value instanceof JsonObject) { - list.add(toMap((JsonObject) value)); - } else { - list.add(value); - } - } - return list; - } - - /** - * Json解析公用方法 数组 - * - * @param json 解析参数 - * @param token 解析的类型 new TypeToken(){} - * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); - * @return - */ - public static T fromJson(JsonElement json, TypeToken token) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, token.getType()); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 数组 - * - * @param json 解析参数 - * @param type 解析的类型 new TypeToken(){}.getType() - * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); - * @return - */ - public static T fromJson(JsonElement json, Type type) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, type); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 单个类 - * - * @param json 解析参数 - * @param t 解析的类。 class - * @return - */ - public static T fromJson(JsonElement json, Class t) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, t); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 数组 - * - * @param json 解析参数 - * @param token 解析的类型 new TypeToken(){} - * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); - * @return - */ - public static T fromJson(String json, TypeToken token) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, token.getType()); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 单个类 - * - * @param json 解析参数 - * @param t 解析的类。 class - * @return - */ - public static T fromJson(String json, Class t) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, t); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * 把数据转换成Json结构 - * - * @param mType Object的数据,支持所有类型 - * @return - */ - public static String toJson(Object mType) { - Gson mGson = new Gson(); - String mResult = mGson.toJson(mType); - return mResult; - } -} - diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/JsonUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/JsonUtil.kt new file mode 100644 index 0000000..f0ea38d --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/JsonUtil.kt @@ -0,0 +1,249 @@ +package com.android.learn.base.utils + +import com.google.gson.Gson +import com.google.gson.JsonArray +import com.google.gson.JsonElement +import com.google.gson.JsonObject +import com.google.gson.JsonParseException +import com.google.gson.JsonParser +import com.google.gson.reflect.TypeToken + +import java.lang.reflect.Type +import java.util.ArrayList +import java.util.HashMap + +/** + * JSON字符换和对象间转换的工具类 + */ +object JsonUtil { + + private val GSON = Gson() + + /** + * 将json字符串转换成相应的对象 + * + * @param jsonString json字符串 + * @param classOfT 对象类型的class + * @param 对象的类型 + * @return 转换后的对象 + * @throws JsonParseException if json is not a valid representation for an object of type classOfT + */ + @Throws(RuntimeException::class) + fun decode(jsonString: String, classOfT: Class): T { + return GSON.fromJson(jsonString, classOfT) + } + + /** + * 将json字符串转换成相应的对象 + * + * @param jsonString json字符串 + * @param typeOfT 对象类型的type + * @param 对象的类型 + * @return 转换后的对象 + * @throws JsonParseException if json is not a valid representation for an object of type typeOfT + */ + @Throws(RuntimeException::class) + fun decode(jsonString: String, typeOfT: Type): T { + return GSON.fromJson(jsonString, typeOfT) + } + + /** + * 将已经从json转换后的对象(通常是一个Map)转换成对应Bean的对象实例 + * + * @param object 一个转json换中的过程对象,通常是一个Map,若传值为null,则返回null + * @param typeOfT 要转换的对象类型的type + * @param 要转换的对象类型 + * @return 转换后的对象 + * @throws JsonParseException if object is not a valid representation for an object of type typeOfT + */ + @Throws(RuntimeException::class) + fun decode(`object`: Any, typeOfT: Type): T? { + val jsonString = GSON.toJson(`object`) + return GSON.fromJson(jsonString, typeOfT) + } + + /** + * 将一个JavaBean转换成json字符串 + * + * @param object 待转换的对象 + * @return json字符串 + * @throws JsonParseException if there was a problem while parsing object. + */ + @Throws(RuntimeException::class) + fun encode(`object`: Any): String { + return GSON.toJson(`object`) + } + + + /** + * 获取JsonObject + * + * @param json + * @return + */ + fun parseJson(json: String): JsonObject { + val parser = JsonParser() + return parser.parse(json).asJsonObject + } + + /** + * 根据javaBean转json字符串再将字符串转Map对象 + * + * @param object + * @return + */ + fun javaBeanToMap(`object`: Any): Map { + val strJson = encode(`object`) + return toMap(parseJson(strJson)) + } + + /** + * 将JSONObjec对象转换成Map-List集合 + * + * @param json + * @return + */ + fun toMap(json: JsonObject): Map { + val map = HashMap() + val entrySet = json.entrySet() + val iter = entrySet.iterator() + while (iter.hasNext()) { + val entry = iter.next() + val key = entry.key + val value = entry.value + if (value is JsonArray) + map[key as String] = toList(value) + else if (value is JsonObject) + map[key as String] = toMap(value) + else + map[key as String] = value + } + return map + } + + /** + * 将JSONArray对象转换成List集合 + * + * @param json + * @return + */ + fun toList(json: JsonArray): List { + val list = ArrayList() + for (i in 0 until json.size()) { + val value = json.get(i) + if (value is JsonArray) { + list.add(toList(value)) + } else if (value is JsonObject) { + list.add(toMap(value)) + } else { + list.add(value) + } + } + return list + } + + /** + * Json解析公用方法 数组 + * + * @param json 解析参数 + * @param token 解析的类型 new TypeToken(){} + * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); + * @return + */ + fun fromJson(json: JsonElement, token: TypeToken): T? { + try { + val gson = Gson() + return gson.fromJson(json, token.type) + } catch (ex: Exception) { + ex.printStackTrace() + } + + return null + } + + /** + * Json解析公用方法 数组 + * + * @param json 解析参数 + * @param type 解析的类型 new TypeToken(){}.getType() + * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); + * @return + */ + fun fromJson(json: JsonElement, type: Type): T? { + try { + val gson = Gson() + return gson.fromJson(json, type) + } catch (ex: Exception) { + ex.printStackTrace() + } + + return null + } + + /** + * Json解析公用方法 单个类 + * + * @param json 解析参数 + * @param t 解析的类。 class + * @return + */ + fun fromJson(json: JsonElement, t: Class): T? { + try { + val gson = Gson() + return gson.fromJson(json, t) + } catch (ex: Exception) { + ex.printStackTrace() + } + + return null + } + + /** + * Json解析公用方法 数组 + * + * @param json 解析参数 + * @param token 解析的类型 new TypeToken(){} + * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); + * @return + */ + fun fromJson(json: String, token: TypeToken): T? { + try { + val gson = Gson() + return gson.fromJson(json, token.type) + } catch (ex: Exception) { + ex.printStackTrace() + } + + return null + } + + /** + * Json解析公用方法 单个类 + * + * @param json 解析参数 + * @param t 解析的类。 class + * @return + */ + fun fromJson(json: String, t: Class): T? { + try { + val gson = Gson() + return gson.fromJson(json, t) + } catch (ex: Exception) { + ex.printStackTrace() + } + + return null + } + + /** + * 把数据转换成Json结构 + * + * @param mType Object的数据,支持所有类型 + * @return + */ + fun toJson(mType: Any): String { + val mGson = Gson() + return mGson.toJson(mType) + } +} + diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/KeyboardUtils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/KeyboardUtils.java deleted file mode 100644 index 0e0bc9c..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/KeyboardUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.view.View; -import android.view.inputmethod.InputMethodManager; - -public class KeyboardUtils { - - public static void showKeyboard(View view) { - InputMethodManager imm = (InputMethodManager) view.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - view.requestFocus(); - imm.showSoftInput(view, 0); - } - } - - public static void hideKeyboard(View view){ - InputMethodManager imm = (InputMethodManager) view.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - imm.hideSoftInputFromWindow(view.getWindowToken(),0); - } - } - public static void toggleSoftInput(View view){ - InputMethodManager imm = (InputMethodManager) view.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - imm.toggleSoftInput(0,0); - } - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/KeyboardUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/KeyboardUtils.kt new file mode 100644 index 0000000..7640343 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/KeyboardUtils.kt @@ -0,0 +1,29 @@ +package com.android.learn.base.utils + +import android.content.Context +import android.view.View +import android.view.inputmethod.InputMethodManager + +object KeyboardUtils { + + fun showKeyboard(view: View) { + val imm = view.context + .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + if (imm != null) { + view.requestFocus() + imm.showSoftInput(view, 0) + } + } + + fun hideKeyboard(view: View) { + val imm = view.context + .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm?.hideSoftInputFromWindow(view.windowToken, 0) + } + + fun toggleSoftInput(view: View) { + val imm = view.context + .getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager + imm?.toggleSoftInput(0, 0) + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LanguageUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LanguageUtil.java deleted file mode 100644 index 3f325d5..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LanguageUtil.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.os.Build; -import android.os.LocaleList; -import android.util.DisplayMetrics; -import android.util.Log; - - -import java.util.Locale; - -public class LanguageUtil { - - private static final String TAG = "LanguageUtil"; - - - /** - * 获取选择的语言设置 - * - * @param context - * @return - */ - public static Locale getSetLanguageLocale(Context context) { - int language = (Integer) SPUtils.getParam(context, "language", 0); - LogUtil.d(TAG, "language---------------" + language); -// LogUtil.d(TAG, "getSystemLocale(context)---------------" + getSystemLocale(context)); - switch (language) { - case 0: - return getSystemLocale(context); - case 1: - return Locale.CHINA; - case 2: - return Locale.ENGLISH; - default: - return Locale.CHINA; - } - } - - public static void saveSelectLanguage(Context context, int select) { - SPUtils.setParam(context, "language", select); - - setApplicationLanguage(context); - } - - public static Context setLocal(Context context) { - LogUtil.d(TAG, "getSetLanguageLocale---------------" + getSetLanguageLocale(context)); - return updateResources(context, getSetLanguageLocale(context)); - } - - private static Context updateResources(Context context, Locale locale) { - Locale.setDefault(locale); - - Resources res = context.getResources(); - Configuration config = new Configuration(res.getConfiguration()); - if (Build.VERSION.SDK_INT >= 17) { - config.setLocale(locale); - context = context.createConfigurationContext(config); - } else { - config.locale = locale; - res.updateConfiguration(config, res.getDisplayMetrics()); - } - return context; - } - - /** - * 我们都会在代码中调用context.getResource().getString()这句代码看起来没什么问题,但是你这个context要是用的是applicationContext那么问题就来了。 - * 你会发现当你切换语言后用这样方式设置的string没有改变,所以我们需要改动我们的代码。 - 解决方法就是,在切换语言后把application的updateConfiguration也要更新了 - */ - public static void setApplicationLanguage(Context context) { - Resources resources = context.getApplicationContext().getResources(); - DisplayMetrics dm = resources.getDisplayMetrics(); - Configuration config = resources.getConfiguration(); - Locale locale = getSetLanguageLocale(context); - config.locale = locale; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - LocaleList localeList = new LocaleList(locale); - LocaleList.setDefault(localeList); - config.setLocales(localeList); - context.getApplicationContext().createConfigurationContext(config); - Locale.setDefault(locale); - } - resources.updateConfiguration(config, dm); - } - - public static Locale getSystemLocale(Context context) { - Locale locale; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - locale = LocaleList.getDefault().get(0); - } else { - locale = Locale.getDefault(); - } - return locale; - } - -// public static void saveSystemCurrentLanguage(Context context) { -// Locale locale; -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { -// locale = LocaleList.getDefault().get(0); -// } else { -// locale = Locale.getDefault(); -// } -// Log.d(TAG, locale.getLanguage()); -// SPUtil.getInstance(context).setSystemCurrentLocal(locale); -// } - -// public static void onConfigurationChanged(Context context){ -//// saveSystemCurrentLanguage(context); -// setLocal(context); -// setApplicationLanguage(context); -// } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LanguageUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LanguageUtil.kt new file mode 100644 index 0000000..7fe0aa2 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LanguageUtil.kt @@ -0,0 +1,111 @@ +package com.android.learn.base.utils + +import android.content.Context +import android.content.res.Configuration +import android.content.res.Resources +import android.os.Build +import android.os.LocaleList +import android.util.DisplayMetrics +import android.util.Log + + +import java.util.Locale + +object LanguageUtil { + + private val TAG = "LanguageUtil" + + + /** + * 获取选择的语言设置 + * + * @param context + * @return + */ + fun getSetLanguageLocale(context: Context): Locale { + val language = SPUtils.getParam(context, "language", 0) as Int + LogUtil.d(TAG, "language---------------$language") + // LogUtil.d(TAG, "getSystemLocale(context)---------------" + getSystemLocale(context)); + when (language) { + 0 -> return getSystemLocale(context) + 1 -> return Locale.CHINA + 2 -> return Locale.ENGLISH + else -> return Locale.CHINA + } + } + + fun saveSelectLanguage(context: Context, select: Int) { + SPUtils.setParam(context, "language", select) + + setApplicationLanguage(context) + } + + fun setLocal(context: Context): Context { + LogUtil.d(TAG, "getSetLanguageLocale---------------" + getSetLanguageLocale(context)) + return updateResources(context, getSetLanguageLocale(context)) + } + + private fun updateResources(context: Context, locale: Locale): Context { + var context = context + Locale.setDefault(locale) + + val res = context.resources + val config = Configuration(res.configuration) + if (Build.VERSION.SDK_INT >= 17) { + config.setLocale(locale) + context = context.createConfigurationContext(config) + } else { + config.locale = locale + res.updateConfiguration(config, res.displayMetrics) + } + return context + } + + /** + * 我们都会在代码中调用context.getResource().getString()这句代码看起来没什么问题,但是你这个context要是用的是applicationContext那么问题就来了。 + * 你会发现当你切换语言后用这样方式设置的string没有改变,所以我们需要改动我们的代码。 + * 解决方法就是,在切换语言后把application的updateConfiguration也要更新了 + */ + fun setApplicationLanguage(context: Context) { + val resources = context.applicationContext.resources + val dm = resources.displayMetrics + val config = resources.configuration + val locale = getSetLanguageLocale(context) + config.locale = locale + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val localeList = LocaleList(locale) + LocaleList.setDefault(localeList) + config.locales = localeList + context.applicationContext.createConfigurationContext(config) + Locale.setDefault(locale) + } + resources.updateConfiguration(config, dm) + } + + fun getSystemLocale(context: Context): Locale { + val locale: Locale + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + locale = LocaleList.getDefault().get(0) + } else { + locale = Locale.getDefault() + } + return locale + } + + // public static void saveSystemCurrentLanguage(Context context) { + // Locale locale; + // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + // locale = LocaleList.getDefault().get(0); + // } else { + // locale = Locale.getDefault(); + // } + // Log.d(TAG, locale.getLanguage()); + // SPUtil.getInstance(context).setSystemCurrentLocal(locale); + // } + + // public static void onConfigurationChanged(Context context){ + //// saveSystemCurrentLanguage(context); + // setLocal(context); + // setApplicationLanguage(context); + // } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LogUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LogUtil.java deleted file mode 100644 index 9b8477f..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LogUtil.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (C) 2006-2014 Tuniu All rights reserved - */ -package com.android.learn.base.utils; - -import android.util.Log; - -import com.gaolei.basemodule.BuildConfig; - - -public class LogUtil { - - private static boolean isDebug = BuildConfig.DEBUG; - private static final String TAG = "zmy"; - - public static void init(boolean isPrintable) { - isDebug = isPrintable; - } - - public static void d(String msg) { - if (!isDebug) { - return; - } - Log.e(TAG, msg); - } - - public static void v(String tag, String msg) { - if (!isDebug) { - return; - } - Log.v(tag, msg); - } - - - public static void d(String tag, String msg) { - if (!isDebug) { - return; - } - Log.d(tag, msg); - } - - - public static void i(String tag, String msg) { - if (!isDebug) { - return; - } - Log.i(tag, msg); - } - - - public static void w(String tag, String msg) { - if (!isDebug) { - return; - } - Log.w(tag, msg); - } - - - public static void e(String tag, String msg) { - if (!isDebug) { - return; - } - Log.e(tag, msg); - } - - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LogUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LogUtil.kt new file mode 100644 index 0000000..164c298 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/LogUtil.kt @@ -0,0 +1,67 @@ +/** + * Copyright (C) 2006-2014 Tuniu All rights reserved + */ +package com.android.learn.base.utils + +import android.util.Log + +import com.gaolei.basemodule.BuildConfig + + +object LogUtil { + + private var isDebug = BuildConfig.DEBUG + private val TAG = "zmy" + + fun init(isPrintable: Boolean) { + isDebug = isPrintable + } + + fun d(msg: String) { + if (!isDebug) { + return + } + Log.e(TAG, msg) + } + + fun v(tag: String, msg: String) { + if (!isDebug) { + return + } + Log.v(tag, msg) + } + + + fun d(tag: String, msg: String) { + if (!isDebug) { + return + } + Log.d(tag, msg) + } + + + fun i(tag: String, msg: String) { + if (!isDebug) { + return + } + Log.i(tag, msg) + } + + + fun w(tag: String, msg: String) { + if (!isDebug) { + return + } + Log.w(tag, msg) + } + + + fun e(tag: String, msg: String) { + if (!isDebug) { + return + } + Log.e(tag, msg) + } + + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/NetUtils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/NetUtils.java deleted file mode 100644 index b4a0234..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/NetUtils.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.android.learn.base.utils; - - -import android.app.Activity; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; - -import com.android.learn.base.application.CustomApplication; - -/** - * 跟网络相关的工具类 - * - * - * - */ -public class NetUtils -{ - private NetUtils() - { - /* cannot be instantiated */ - throw new UnsupportedOperationException("cannot be instantiated"); - } - - - public static boolean isConnected() - { - - ConnectivityManager connectivity = (ConnectivityManager) CustomApplication.context - .getSystemService(Context.CONNECTIVITY_SERVICE); - - if (null != connectivity) - { - - NetworkInfo info = connectivity.getActiveNetworkInfo(); - if (null != info && info.isConnected()) - { - if (info.getState() == NetworkInfo.State.CONNECTED) - { - return true; - } - } - } - return false; - } - - /** - * 判断是否是wifi连接 - */ - public static boolean isWifi() - { - ConnectivityManager cm = (ConnectivityManager) CustomApplication.context - .getSystemService(Context.CONNECTIVITY_SERVICE); - - if (cm == null) - return false; - return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; - - } - - /** - * 打开网络设置界面 - */ - public static void openSetting(Activity activity) - { - Intent intent = new Intent("/"); - ComponentName cm = new ComponentName("com.android.settings", - "com.android.settings.WirelessSettings"); - intent.setComponent(cm); - intent.setAction("android.intent.action.VIEW"); - activity.startActivityForResult(intent, 0); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/NetUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/NetUtils.kt new file mode 100644 index 0000000..1ccc697 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/NetUtils.kt @@ -0,0 +1,72 @@ +package com.android.learn.base.utils + + +import android.app.Activity +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.net.ConnectivityManager +import android.net.NetworkInfo + +import com.android.learn.base.application.CustomApplication + +/** + * 跟网络相关的工具类 + * + * + * + */ +class NetUtils private constructor() { + init { + /* cannot be instantiated */ + throw UnsupportedOperationException("cannot be instantiated") + } + + companion object { + + + val isConnected: Boolean + get() { + + val connectivity = CustomApplication.context + .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + + if (null != connectivity) { + + val info = connectivity.activeNetworkInfo + if (null != info && info.isConnected) { + if (info.state == NetworkInfo.State.CONNECTED) { + return true + } + } + } + return false + } + + /** + * 判断是否是wifi连接 + */ + val isWifi: Boolean + get() { + val cm = CustomApplication.context + .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + ?: return false + + return cm.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI + + } + + /** + * 打开网络设置界面 + */ + fun openSetting(activity: Activity) { + val intent = Intent("/") + val cm = ComponentName("com.android.settings", + "com.android.settings.WirelessSettings") + intent.component = cm + intent.action = "android.intent.action.VIEW" + activity.startActivityForResult(intent, 0) + } + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/PermissionUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/PermissionUtil.java deleted file mode 100644 index 05169ab..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/PermissionUtil.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.android.learn.base.utils; - - -import android.Manifest; -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.Build; -import android.support.v4.app.ActivityCompat; - -public class -PermissionUtil { - - private static String denyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能"; - private static String foreverDenyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能。\n \n 请点击 \"设置\"-\"权限\"-打开所需权限。"; - public static final int PERMISSION_CODE = 10001; - - public static void gotoDetailSettingIntent(Activity context) { - Intent intent = new Intent(); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - if (Build.VERSION.SDK_INT >= 9) { - intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); - intent.setData(Uri.fromParts("package", context.getPackageName(), null)); - } else if (Build.VERSION.SDK_INT <= 8) { - intent.setAction(Intent.ACTION_VIEW); - intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); - intent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName()); - } - context.startActivity(intent); - -// Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); -// Uri uri = Uri.fromParts("package", context.getPackageName(), null); -// intent.setData(uri); - } - - public static void requestDenyDialog(final Activity activity, final String... permissions) { - - String content = getContent(denyRequestContent, permissions); - - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - - builder.setTitle("权限申请") - .setMessage(content) - .setPositiveButton("申请", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - ActivityCompat.requestPermissions(activity, permissions, PERMISSION_CODE); - dialog.dismiss(); - } - }) - .setNegativeButton("取消", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - if (Utils.getTopActivity(activity).equals("MainActivity")) { - activity.finish(); - } - dialog.dismiss(); - } - }); - builder.show(); - } - - public static void requestForeverDenyDialog(final Activity activity, final String... permissions) { - - String content = getContent(foreverDenyRequestContent, permissions); - - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - - builder.setTitle("权限设置") - .setMessage(content) - .setPositiveButton("设置", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - gotoDetailSettingIntent(activity); - dialog.dismiss(); - } - }) - .setNegativeButton("取消", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - - dialog.dismiss(); - } - }); - builder.show(); - } - - public static String getContent(String ifForeverDeny, String... permissions) { - String content = ""; - - if (permissions.length == 1) { - if (permissions[0].equals(Manifest.permission.CAMERA)) - content = String.format(ifForeverDeny, "相机"); - if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) - content = String.format(ifForeverDeny, "存储"); - } - if (permissions.length > 1) { - StringBuilder stringBuilder = new StringBuilder(); - int length = permissions.length; - for (int i = 0; i < length; i++) { - if (permissions[i].equals(Manifest.permission.CAMERA)) - stringBuilder = stringBuilder.append("相机"); - if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) - stringBuilder = stringBuilder.append("存储"); - if (permissions[i].equals(Manifest.permission.ACCESS_FINE_LOCATION)) - stringBuilder = stringBuilder.append("位置"); - if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) - stringBuilder = stringBuilder.append("联系人"); - if (i < length - 1) - stringBuilder = stringBuilder.append("、"); - } - content = String.format(ifForeverDeny, stringBuilder.toString()); - } - return content; - - } - - /** - * 权限请求结果回调接口 - */ - public interface RequestPermissionCallBack { - /** - * 同意授权 - */ - public void granted(); - - /** - * 取消授权 - */ - public void denied(); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/PermissionUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/PermissionUtil.kt new file mode 100644 index 0000000..85dee90 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/PermissionUtil.kt @@ -0,0 +1,118 @@ +package com.android.learn.base.utils + + +import android.Manifest +import android.app.Activity +import android.app.AlertDialog +import android.content.DialogInterface +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.support.v4.app.ActivityCompat + +object PermissionUtil { + + private val denyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能" + private val foreverDenyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能。\n \n 请点击 \"设置\"-\"权限\"-打开所需权限。" + val PERMISSION_CODE = 10001 + + fun gotoDetailSettingIntent(context: Activity) { + val intent = Intent() + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + if (Build.VERSION.SDK_INT >= 9) { + intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS" + intent.data = Uri.fromParts("package", context.packageName, null) + } else if (Build.VERSION.SDK_INT <= 8) { + intent.action = Intent.ACTION_VIEW + intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails") + intent.putExtra("com.android.settings.ApplicationPkgName", context.packageName) + } + context.startActivity(intent) + + // Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); + // Uri uri = Uri.fromParts("package", context.getPackageName(), null); + // intent.setData(uri); + } + + fun requestDenyDialog(activity: Activity, vararg permissions: String) { + + val content = getContent(denyRequestContent, *permissions) + + val builder = AlertDialog.Builder(activity) + + builder.setTitle("权限申请") + .setMessage(content) + .setPositiveButton("申请") { dialog, id -> + ActivityCompat.requestPermissions(activity, permissions, PERMISSION_CODE) + dialog.dismiss() + } + .setNegativeButton("取消") { dialog, id -> + if (Utils.getTopActivity(activity) == "MainActivity") { + activity.finish() + } + dialog.dismiss() + } + builder.show() + } + + fun requestForeverDenyDialog(activity: Activity, vararg permissions: String) { + + val content = getContent(foreverDenyRequestContent, *permissions) + + val builder = AlertDialog.Builder(activity) + + builder.setTitle("权限设置") + .setMessage(content) + .setPositiveButton("设置") { dialog, id -> + gotoDetailSettingIntent(activity) + dialog.dismiss() + } + .setNegativeButton("取消") { dialog, id -> dialog.dismiss() } + builder.show() + } + + fun getContent(ifForeverDeny: String, vararg permissions: String): String { + var content = "" + + if (permissions.size == 1) { + if (permissions[0] == Manifest.permission.CAMERA) + content = String.format(ifForeverDeny, "相机") + if (permissions[0] == Manifest.permission.WRITE_EXTERNAL_STORAGE) + content = String.format(ifForeverDeny, "存储") + } + if (permissions.size > 1) { + var stringBuilder = StringBuilder() + val length = permissions.size + for (i in 0 until length) { + if (permissions[i] == Manifest.permission.CAMERA) + stringBuilder = stringBuilder.append("相机") + if (permissions[i] == Manifest.permission.WRITE_EXTERNAL_STORAGE) + stringBuilder = stringBuilder.append("存储") + if (permissions[i] == Manifest.permission.ACCESS_FINE_LOCATION) + stringBuilder = stringBuilder.append("位置") + if (permissions[i] == Manifest.permission.WRITE_CONTACTS) + stringBuilder = stringBuilder.append("联系人") + if (i < length - 1) + stringBuilder = stringBuilder.append("、") + } + content = String.format(ifForeverDeny, stringBuilder.toString()) + } + return content + + } + + /** + * 权限请求结果回调接口 + */ + interface RequestPermissionCallBack { + /** + * 同意授权 + */ + fun granted() + + /** + * 取消授权 + */ + fun denied() + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.java deleted file mode 100644 index 9dac18c..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.android.learn.base.utils; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; - -public class ResponseStatusUtil { - - - public static void handleResponseStatus(BaseResponse baseData) { - if (baseData == null) return; - Utils.showToast(baseData.errorMsg, true); - } - public static void handleResponseStatus(BaseData baseData) { - if (baseData == null) return; - Utils.showToast(baseData.errorMsg, true); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt new file mode 100644 index 0000000..8ad0757 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt @@ -0,0 +1,18 @@ +package com.android.learn.base.utils + +import com.android.learn.base.mmodel.BaseData +import com.android.learn.base.mmodel.BaseResponse + +object ResponseStatusUtil { + + + fun handleResponseStatus(baseData: BaseResponse<*>?) { + if (baseData == null) return + Utils.showToast(baseData.errorMsg, true) + } + + fun handleResponseStatus(baseData: BaseData?) { + if (baseData == null) return + Utils.showToast(baseData.errorMsg, true) + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SPUtils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SPUtils.java deleted file mode 100644 index 98c6e61..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SPUtils.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.content.SharedPreferences; - - -public class SPUtils { - - /** - * 保存在手机里面的文件名 - */ - private static final String FILE_NAME = "SP_FILE"; - - - /** - * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 - * @param context - * @param key - * @param object - */ - public static void setParam(Context context , String key, Object object){ - - String type = object.getClass().getSimpleName(); - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sp.edit(); - - if("String".equals(type)){ - editor.putString(key, (String)object); - } - else if("Integer".equals(type)){ - editor.putInt(key, (Integer)object); - } - else if("Boolean".equals(type)){ - editor.putBoolean(key, (Boolean)object); - } - else if("Float".equals(type)){ - editor.putFloat(key, (Float)object); - } - else if("Long".equals(type)){ - editor.putLong(key, (Long)object); - } - - editor.commit(); - } - - - /** - * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 - * @param context - * @param key - * @param defaultObject - * @return - */ - public static Object getParam(Context context , String key, Object defaultObject){ - String type = defaultObject.getClass().getSimpleName(); - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); - - if("String".equals(type)){ - return sp.getString(key, (String)defaultObject); - } - - else if("Integer".equals(type)){ - return sp.getInt(key, (Integer)defaultObject); - } - - else if("Boolean".equals(type)){ - return sp.getBoolean(key, (Boolean)defaultObject); - } - - else if("Float".equals(type)){ - return sp.getFloat(key, (Float)defaultObject); - } - - else if("Long".equals(type)){ - return sp.getLong(key, (Long)defaultObject); - } - - return null; - } - - /** - * 清除所有数据 - * @param context - */ - public static void clearAll(Context context) { - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, - Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sp.edit(); - editor.clear().commit(); - } - - /** - * 清除指定数据 - * @param context - */ - public static void clear(Context context,String key) { - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, - Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sp.edit(); - editor.remove(key); - editor.commit(); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SPUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SPUtils.kt new file mode 100644 index 0000000..75da118 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SPUtils.kt @@ -0,0 +1,92 @@ +package com.android.learn.base.utils + +import android.content.Context +import android.content.SharedPreferences + + +object SPUtils { + + /** + * 保存在手机里面的文件名 + */ + private val FILE_NAME = "SP_FILE" + + + /** + * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 + * @param context + * @param key + * @param object + */ + fun setParam(context: Context, key: String, `object`: Any) { + + val type = `object`.javaClass.simpleName + val sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE) + val editor = sp.edit() + + if ("String" == type) { + editor.putString(key, `object` as String) + } else if ("Integer" == type) { + editor.putInt(key, `object` as Int) + } else if ("Boolean" == type) { + editor.putBoolean(key, `object` as Boolean) + } else if ("Float" == type) { + editor.putFloat(key, `object` as Float) + } else if ("Long" == type) { + editor.putLong(key, `object` as Long) + } + + editor.commit() + } + + + /** + * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 + * @param context + * @param key + * @param defaultObject + * @return + */ + fun getParam(context: Context, key: String, defaultObject: Any): Any? { + val type = defaultObject.javaClass.simpleName + val sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE) + + if ("String" == type) { + return sp.getString(key, defaultObject as String) + } else if ("Integer" == type) { + return sp.getInt(key, defaultObject as Int) + } else if ("Boolean" == type) { + return sp.getBoolean(key, defaultObject as Boolean) + } else if ("Float" == type) { + return sp.getFloat(key, defaultObject as Float) + } else if ("Long" == type) { + return sp.getLong(key, defaultObject as Long) + } + + return null + } + + /** + * 清除所有数据 + * @param context + */ + fun clearAll(context: Context) { + val sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE) + val editor = sp.edit() + editor.clear().commit() + } + + /** + * 清除指定数据 + * @param context + */ + fun clear(context: Context, key: String) { + val sp = context.getSharedPreferences(FILE_NAME, + Context.MODE_PRIVATE) + val editor = sp.edit() + editor.remove(key) + editor.commit() + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ScreenUtils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ScreenUtils.java deleted file mode 100644 index ac533ab..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ScreenUtils.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Activity; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Rect; -import android.util.DisplayMetrics; -import android.view.View; -import android.view.WindowManager; - -/** - * 获得屏幕相关的辅助类 - * - * - * - */ -public class ScreenUtils -{ - private ScreenUtils() - { - /* cannot be instantiated */ - throw new UnsupportedOperationException("cannot be instantiated"); - } - - /** - * 获得屏幕高度 - * - * @param context - * @return - */ - public static int getScreenWidth(Context context) - { - WindowManager wm = (WindowManager) context - .getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics outMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(outMetrics); - return outMetrics.widthPixels; - } - - /** - * 获得屏幕宽度 - * - * @param context - * @return - */ - public static int getScreenHeight(Context context) - { - WindowManager wm = (WindowManager) context - .getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics outMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(outMetrics); - return outMetrics.heightPixels; - } - - /** - * 获得状态栏的高度 - * - * @param context - * @return - */ - public static int getStatusHeight(Context context) - { - - int statusHeight = -1; - try - { - Class clazz = Class.forName("com.android.internal.R$dimen"); - Object object = clazz.newInstance(); - int height = Integer.parseInt(clazz.getField("status_bar_height") - .get(object).toString()); - statusHeight = context.getResources().getDimensionPixelSize(height); - } catch (Exception e) - { - e.printStackTrace(); - } - return statusHeight; - } - - /** - * 获取当前屏幕截图,包含状态栏 - * - * @param activity - * @return - */ - public static Bitmap snapShotWithStatusBar(Activity activity) - { - View view = activity.getWindow().getDecorView(); - view.setDrawingCacheEnabled(true); - view.buildDrawingCache(); - Bitmap bmp = view.getDrawingCache(); - int width = getScreenWidth(activity); - int height = getScreenHeight(activity); - Bitmap bp = null; - bp = Bitmap.createBitmap(bmp, 0, 0, width, height); - view.destroyDrawingCache(); - return bp; - - } - - /** - * 获取当前屏幕截图,不包含状态栏 - * - * @param activity - * @return - */ - public static Bitmap snapShotWithoutStatusBar(Activity activity) - { - View view = activity.getWindow().getDecorView(); - view.setDrawingCacheEnabled(true); - view.buildDrawingCache(); - Bitmap bmp = view.getDrawingCache(); - Rect frame = new Rect(); - activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); - int statusBarHeight = frame.top; - - int width = getScreenWidth(activity); - int height = getScreenHeight(activity); - Bitmap bp = null; - bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - - statusBarHeight); - view.destroyDrawingCache(); - return bp; - - } - /** - * dp转换成px - * - * @param context Context - * @param dp dp - * @return px值 - */ - public static int dp2px(Context context, float dp) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dp * scale + 0.5f); - } - public static int px2sp(Context context, float pxValue) { - float fontScale = context.getResources().getDisplayMetrics().scaledDensity; - return (int) (pxValue / fontScale + 0.5f); - } - //转换dip为px - public static int dp2px(Context context, int dip) { - float scale = context.getResources().getDisplayMetrics().density; - return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1)); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ScreenUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ScreenUtils.kt new file mode 100644 index 0000000..75b5924 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ScreenUtils.kt @@ -0,0 +1,142 @@ +package com.android.learn.base.utils + +import android.app.Activity +import android.content.Context +import android.graphics.Bitmap +import android.graphics.Rect +import android.util.DisplayMetrics +import android.view.View +import android.view.WindowManager + +/** + * 获得屏幕相关的辅助类 + * + * + * + */ +class ScreenUtils private constructor() { + init { + /* cannot be instantiated */ + throw UnsupportedOperationException("cannot be instantiated") + } + + companion object { + + /** + * 获得屏幕高度 + * + * @param context + * @return + */ + fun getScreenWidth(context: Context): Int { + val wm = context + .getSystemService(Context.WINDOW_SERVICE) as WindowManager + val outMetrics = DisplayMetrics() + wm.defaultDisplay.getMetrics(outMetrics) + return outMetrics.widthPixels + } + + /** + * 获得屏幕宽度 + * + * @param context + * @return + */ + fun getScreenHeight(context: Context): Int { + val wm = context + .getSystemService(Context.WINDOW_SERVICE) as WindowManager + val outMetrics = DisplayMetrics() + wm.defaultDisplay.getMetrics(outMetrics) + return outMetrics.heightPixels + } + + /** + * 获得状态栏的高度 + * + * @param context + * @return + */ + fun getStatusHeight(context: Context): Int { + + var statusHeight = -1 + try { + val clazz = Class.forName("com.android.internal.R\$dimen") + val `object` = clazz.newInstance() + val height = Integer.parseInt(clazz.getField("status_bar_height") + .get(`object`).toString()) + statusHeight = context.resources.getDimensionPixelSize(height) + } catch (e: Exception) { + e.printStackTrace() + } + + return statusHeight + } + + /** + * 获取当前屏幕截图,包含状态栏 + * + * @param activity + * @return + */ + fun snapShotWithStatusBar(activity: Activity): Bitmap? { + val view = activity.window.decorView + view.isDrawingCacheEnabled = true + view.buildDrawingCache() + val bmp = view.drawingCache + val width = getScreenWidth(activity) + val height = getScreenHeight(activity) + var bp: Bitmap? = null + bp = Bitmap.createBitmap(bmp, 0, 0, width, height) + view.destroyDrawingCache() + return bp + + } + + /** + * 获取当前屏幕截图,不包含状态栏 + * + * @param activity + * @return + */ + fun snapShotWithoutStatusBar(activity: Activity): Bitmap? { + val view = activity.window.decorView + view.isDrawingCacheEnabled = true + view.buildDrawingCache() + val bmp = view.drawingCache + val frame = Rect() + activity.window.decorView.getWindowVisibleDisplayFrame(frame) + val statusBarHeight = frame.top + + val width = getScreenWidth(activity) + val height = getScreenHeight(activity) + var bp: Bitmap? = null + bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight) + view.destroyDrawingCache() + return bp + + } + + /** + * dp转换成px + * + * @param context Context + * @param dp dp + * @return px值 + */ + fun dp2px(context: Context, dp: Float): Int { + val scale = context.resources.displayMetrics.density + return (dp * scale + 0.5f).toInt() + } + + fun px2sp(context: Context, pxValue: Float): Int { + val fontScale = context.resources.displayMetrics.scaledDensity + return (pxValue / fontScale + 0.5f).toInt() + } + + //转换dip为px + fun dp2px(context: Context, dip: Int): Int { + val scale = context.resources.displayMetrics.density + return (dip * scale + 0.5f * if (dip >= 0) 1 else -1).toInt() + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SystemUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SystemUtil.java deleted file mode 100644 index e2c1d3d..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SystemUtil.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Activity; -import android.content.Context; -import android.telephony.TelephonyManager; - -import java.util.Locale; - - -public class SystemUtil { - - /** - * 获取当前手机系统语言。 - * - * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN” - */ - public static String getSystemLanguage() { - return Locale.getDefault().getLanguage(); - } - - /** - * 获取当前系统上的语言列表(Locale列表) - * - * @return 语言列表 - */ - public static Locale[] getSystemLanguageList() { - return Locale.getAvailableLocales(); - } - - /** - * 获取当前手机系统版本号 - * - * @return 系统版本号 - */ - public static String getSystemVersion() { - return android.os.Build.VERSION.RELEASE; - } - - /** - * 获取手机型号 - * - * @return 手机型号 - */ - public static String getSystemModel() { - return android.os.Build.MODEL; - } - - /** - * 获取手机厂商 - * - * @return 手机厂商 - */ - public static String getDeviceBrand() { - return android.os.Build.BRAND; - } - - /** - * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限) - * - * @return 手机IMEI - */ - public static String getIMEI(Context ctx) { - TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE); - if (tm != null) { - return tm.getDeviceId(); - } - return null; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SystemUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SystemUtil.kt new file mode 100644 index 0000000..18967c5 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/SystemUtil.kt @@ -0,0 +1,61 @@ +package com.android.learn.base.utils + +import android.app.Activity +import android.content.Context +import android.telephony.TelephonyManager + +import java.util.Locale + + +object SystemUtil { + + /** + * 获取当前手机系统语言。 + * + * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN” + */ + val systemLanguage: String + get() = Locale.getDefault().language + + /** + * 获取当前系统上的语言列表(Locale列表) + * + * @return 语言列表 + */ + val systemLanguageList: Array + get() = Locale.getAvailableLocales() + + /** + * 获取当前手机系统版本号 + * + * @return 系统版本号 + */ + val systemVersion: String + get() = android.os.Build.VERSION.RELEASE + + /** + * 获取手机型号 + * + * @return 手机型号 + */ + val systemModel: String + get() = android.os.Build.MODEL + + /** + * 获取手机厂商 + * + * @return 手机厂商 + */ + val deviceBrand: String + get() = android.os.Build.BRAND + + /** + * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限) + * + * @return 手机IMEI + */ + fun getIMEI(ctx: Context): String? { + val tm = ctx.getSystemService(Activity.TELEPHONY_SERVICE) as TelephonyManager + return tm?.deviceId + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/Utils.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/Utils.java deleted file mode 100644 index 787925d..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/Utils.java +++ /dev/null @@ -1,244 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.ActivityManager; -import android.content.ClipboardManager; -import android.content.ComponentName; -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.os.Looper; -import android.text.TextUtils; -import android.view.Gravity; -import android.widget.Toast; - - -import com.android.learn.base.application.CustomApplication; - -import java.security.MessageDigest; -import java.text.NumberFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.regex.Pattern; - -/** - * Created by gaolei on 2018/6/15. - */ - -public class Utils { - - public static Pattern intPattern = Pattern.compile("^[-+]?[0-9]"); - public static Pattern decimalPattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$"); - - /** - * md5 加密 - * - * @param str 要加密的字符串 - * @return - */ - public static String md5Encode(String str) { - StringBuffer buf = new StringBuffer(); - try { - MessageDigest md5 = MessageDigest.getInstance("MD5"); - md5.update(str.getBytes()); - byte[] bytes = md5.digest(); - for (int i = 0; i < bytes.length; i++) { - String s = Integer.toHexString(bytes[i] & 0xff); - if (s.length() == 1) { - buf.append("0"); - } - buf.append(s); - } - - } catch (Exception ex) { - } - return buf.toString(); - } - - public static String getTopActivity(Context context) { - ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - ActivityManager.RunningTaskInfo taskInfo = manager.getRunningTasks(1).get(0); - ComponentName componentInfo = taskInfo.topActivity; - String shortClassName = componentInfo.getShortClassName(); //类名 -// String className = info.topActivity.getClassName(); //完整类名 -// String packageName = info.topActivity.getPackageName(); - int index = shortClassName.lastIndexOf("."); - shortClassName = shortClassName.substring(index + 1); - return shortClassName; - } - - //判断手机号是否正确 - public static boolean isMobileNO(String mobile) { - - String telRegex = "[1][23456789]\\d{9}";//"[1]"代表第1位为数字1,"[35678]"代表第二位可以为23456789中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 - - if (TextUtils.isEmpty(mobile)) { - Utils.showToast("请输入正确的手机号", true); - return false; - } else if (!mobile.matches(telRegex)) { - Utils.showToast("请输入正确的手机号", true); - return false; - } - return true; - - } - - /** - * 判断是否是银行卡号 - * - * @param cardId - * @return - */ - public static boolean checkBankCard(String cardId) { - char bit = getBankCardCheckCode(cardId - .substring(0, cardId.length() - 1)); - if (bit == 'N') { - return false; - } - return cardId.charAt(cardId.length() - 1) == bit; - } - - private static char getBankCardCheckCode(String nonCheckCodeCardId) { - if (nonCheckCodeCardId == null - || nonCheckCodeCardId.trim().length() == 0 - || !nonCheckCodeCardId.matches("//d+")) { -// 如果传的不是数据返回N - return 'N'; - } - char[] chs = nonCheckCodeCardId.trim().toCharArray(); - int luhmSum = 0; - for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) { - int k = chs[i] - '0'; - if (j % 2 == 0) { - k *= 2; - k = k / 10 + k % 10; - } - luhmSum += k; - } - return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0'); - } - - public static void showToast(String content, boolean isShort) { - try { - Toast toast = Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG); - toast.setGravity(Gravity.CENTER, 0, 0); - toast.show(); - } catch (Exception e) { - //解决在子线程中调用Toast的异常情况处理 - Looper.prepare(); - Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); - Looper.loop(); - } - - } - public static void showToast(String content, boolean isShort,int gravity) { - try { - Toast toast = Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG); - toast.setGravity(gravity, 0, 0); - toast.show(); - } catch (Exception e) { - //解决在子线程中调用Toast的异常情况处理 - Looper.prepare(); - Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); - Looper.loop(); - } - - } - - public static String ms2Date(long _ms) { - Date date = new Date(_ms); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); - return format.format(date); - } - - public static String keepDecimal2(float value) { - NumberFormat ddf1 = NumberFormat.getNumberInstance(); - ddf1.setMaximumFractionDigits(2); - return ddf1.format(value); - } - public static void copyTxt(Context context,String content) { - ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - // 将文本内容放到系统剪贴板里。 - cm.setText(content); - Toast.makeText(context, "复制成功,可以分享给朋友们了", Toast.LENGTH_LONG).show(); - } - - public static int stringToInt(String value) { - return Integer.parseInt(value.trim()); - } - - public static double stringToDouble(String value) { - return Double.parseDouble(value.trim()); - } - - public static float stringToFloat(String value) { - return Float.parseFloat(value.trim()); - } - - public static float stringToDigit(String value) { - - - if (intPattern.matcher(value).matches()) { -//数字 - return Integer.parseInt(value.trim()); - } else if (decimalPattern.matcher(value).matches()) { -//小数 - return Float.parseFloat(value.trim()); - } else { -//非数字 - Utils.showToast("数据格式转化出错", true); - } - return Float.parseFloat(value.trim()); - } - public static int getVersionCode(Context context) { - try { - PackageManager packageManager = context.getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo( - context.getPackageName(), 0); - return packageInfo.versionCode; - } catch (Exception e) { - e.printStackTrace(); - } - return 0; - } - public static String getVersionName(Context context) { - try { - PackageManager packageManager = context.getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo( - context.getPackageName(), 0); - return packageInfo.versionName; - } catch (Exception e) { - e.printStackTrace(); - } - return ""; - } - - //假设传入的日期格式是yyyy-MM-dd HH:mm:ss, 也可以传入yyyy-MM-dd,如2018-1-1或者2018-01-01格式 - - public static boolean isValidDate(String strDate) { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2018-02-29会被接受,并转换成2018-03-01 - - format.setLenient(false); - Date date = format.parse(strDate); - - //判断传入的yyyy年-MM月-dd日 字符串是否为数字 - String[] sArray = strDate.split("-"); - for (String s : sArray) { - boolean isNum = s.matches("[0-9]+"); - //+表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7") - if (!isNum) { - return false; - } - } - } catch (Exception e) { - // e.printStackTrace(); - // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 - return false; - } - - return true; - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/Utils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/Utils.kt new file mode 100644 index 0000000..fc8ef11 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/Utils.kt @@ -0,0 +1,264 @@ +package com.android.learn.base.utils + +import android.app.ActivityManager +import android.content.ClipboardManager +import android.content.ComponentName +import android.content.Context +import android.content.pm.PackageInfo +import android.content.pm.PackageManager +import android.os.Looper +import android.text.TextUtils +import android.view.Gravity +import android.widget.Toast + + +import com.android.learn.base.application.CustomApplication + +import java.security.MessageDigest +import java.security.NoSuchAlgorithmException +import java.text.NumberFormat +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale +import java.util.regex.Pattern +import kotlin.experimental.and + +/** + * Created by gaolei on 2018/6/15. + */ + +object Utils { + + var intPattern = Pattern.compile("^[-+]?[0-9]") + var decimalPattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$") + + /** + * md5 加密 + * + * @param str 要加密的字符串 + * @return + */ + fun md5Encode(text: String): String { + try { + //获取md5加密对象 + val instance: MessageDigest = MessageDigest.getInstance("MD5") + //对字符串加密,返回字节数组 + val digest:ByteArray = instance.digest(text.toByteArray()) + var sb : StringBuffer = StringBuffer() + for (b in digest) { + //获取低八位有效值 + var i :Int = b.toInt() and 0xff + //将整数转化为16进制 + var hexString = Integer.toHexString(i) + if (hexString.length < 2) { + //如果是一位的话,补0 + hexString = "0" + hexString + } + sb.append(hexString) + } + return sb.toString() + + } catch (e: NoSuchAlgorithmException) { + e.printStackTrace() + } + + return "" + } + + + fun getTopActivity(context: Context): String { + val manager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + val taskInfo = manager.getRunningTasks(1)[0] + val componentInfo = taskInfo.topActivity + var shortClassName = componentInfo.shortClassName //类名 + // String className = info.topActivity.getClassName(); //完整类名 + // String packageName = info.topActivity.getPackageName(); + val index = shortClassName.lastIndexOf(".") + shortClassName = shortClassName.substring(index + 1) + return shortClassName + } + + //判断手机号是否正确 + fun isMobileNO(mobile: String): Boolean { + + val telRegex = "[1][23456789]\\d{9}"//"[1]"代表第1位为数字1,"[35678]"代表第二位可以为23456789中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 + + if (TextUtils.isEmpty(mobile)) { + Utils.showToast("请输入正确的手机号", true) + return false + } else if (!mobile.matches(telRegex.toRegex())) { + Utils.showToast("请输入正确的手机号", true) + return false + } + return true + + } + + /** + * 判断是否是银行卡号 + * + * @param cardId + * @return + */ + fun checkBankCard(cardId: String): Boolean { + val bit = getBankCardCheckCode(cardId + .substring(0, cardId.length - 1)) + return if (bit == 'N') { + false + } else cardId[cardId.length - 1] == bit + } + + private fun getBankCardCheckCode(nonCheckCodeCardId: String?): Char { + if (nonCheckCodeCardId == null + || nonCheckCodeCardId.trim { it <= ' ' }.length == 0 + || !nonCheckCodeCardId.matches("//d+".toRegex())) { + // 如果传的不是数据返回N + return 'N' + } + val chs = nonCheckCodeCardId.trim { it <= ' ' }.toCharArray() + var luhmSum = 0 + var i = chs.size - 1 + var j = 0 + while (i >= 0) { + var k = chs[i] - '0' + if (j % 2 == 0) { + k *= 2 + k = k / 10 + k % 10 + } + luhmSum += k + i-- + j++ + } + return if (luhmSum % 10 == 0) '0' else (10 - luhmSum % 10 + '0'.toInt()).toChar() + } + + fun showToast(content: String, isShort: Boolean) { + try { + val toast = Toast.makeText(CustomApplication.context, content, if (isShort) Toast.LENGTH_SHORT else Toast.LENGTH_LONG) + toast.setGravity(Gravity.CENTER, 0, 0) + toast.show() + } catch (e: Exception) { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare() + Toast.makeText(CustomApplication.context, content, if (isShort) Toast.LENGTH_SHORT else Toast.LENGTH_LONG).show() + Looper.loop() + } + + } + + fun showToast(content: String, isShort: Boolean, gravity: Int) { + try { + val toast = Toast.makeText(CustomApplication.context, content, if (isShort) Toast.LENGTH_SHORT else Toast.LENGTH_LONG) + toast.setGravity(gravity, 0, 0) + toast.show() + } catch (e: Exception) { + //解决在子线程中调用Toast的异常情况处理 + Looper.prepare() + Toast.makeText(CustomApplication.context, content, if (isShort) Toast.LENGTH_SHORT else Toast.LENGTH_LONG).show() + Looper.loop() + } + + } + + fun ms2Date(_ms: Long): String { + val date = Date(_ms) + val format = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()) + return format.format(date) + } + + fun keepDecimal2(value: Float): String { + val ddf1 = NumberFormat.getNumberInstance() + ddf1.maximumFractionDigits = 2 + return ddf1.format(value.toDouble()) + } + + fun copyTxt(context: Context, content: String) { + val cm = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + // 将文本内容放到系统剪贴板里。 + cm.text = content + Toast.makeText(context, "复制成功,可以分享给朋友们了", Toast.LENGTH_LONG).show() + } + + fun stringToInt(value: String): Int { + return Integer.parseInt(value.trim { it <= ' ' }) + } + + fun stringToDouble(value: String): Double { + return java.lang.Double.parseDouble(value.trim { it <= ' ' }) + } + + fun stringToFloat(value: String): Float { + return java.lang.Float.parseFloat(value.trim { it <= ' ' }) + } + + fun stringToDigit(value: String): Float { + + + if (intPattern.matcher(value).matches()) { + //数字 + return Integer.parseInt(value.trim { it <= ' ' }).toFloat() + } else if (decimalPattern.matcher(value).matches()) { + //小数 + return java.lang.Float.parseFloat(value.trim { it <= ' ' }) + } else { + //非数字 + Utils.showToast("数据格式转化出错", true) + } + return java.lang.Float.parseFloat(value.trim { it <= ' ' }) + } + + fun getVersionCode(context: Context): Int { + try { + val packageManager = context.packageManager + val packageInfo = packageManager.getPackageInfo( + context.packageName, 0) + return packageInfo.versionCode + } catch (e: Exception) { + e.printStackTrace() + } + + return 0 + } + + fun getVersionName(context: Context): String { + try { + val packageManager = context.packageManager + val packageInfo = packageManager.getPackageInfo( + context.packageName, 0) + return packageInfo.versionName + } catch (e: Exception) { + e.printStackTrace() + } + + return "" + } + + //假设传入的日期格式是yyyy-MM-dd HH:mm:ss, 也可以传入yyyy-MM-dd,如2018-1-1或者2018-01-01格式 + + fun isValidDate(strDate: String): Boolean { + val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") + try { + // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2018-02-29会被接受,并转换成2018-03-01 + + format.isLenient = false + val date = format.parse(strDate) + + //判断传入的yyyy年-MM月-dd日 字符串是否为数字 + val sArray = strDate.split("-".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() + for (s in sArray) { + val isNum = s.matches("[0-9]+".toRegex()) + //+表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7") + if (!isNum) { + return false + } + } + } catch (e: Exception) { + // e.printStackTrace(); + // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 + return false + } + + return true + } + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/account/UserUtil.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/account/UserUtil.java deleted file mode 100644 index 5eb40f3..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/account/UserUtil.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.android.learn.base.utils.account; - -import com.android.learn.base.event.LoginEvent; -import com.android.learn.base.mmodel.RegisterLoginData; - -import org.greenrobot.eventbus.EventBus; - -public class UserUtil { - - public static boolean logined = false; - public static RegisterLoginData userInfo; - - public static boolean isLogined() { - return logined; - } - - public static void setLogined(boolean logined) { - UserUtil.logined = logined; - } - - public static RegisterLoginData getUserInfo() { - return userInfo; - } - - public static void setUserInfo(RegisterLoginData userInfo) { - UserUtil.userInfo = userInfo; - if (userInfo != null) { - setLogined(true); - } else setLogined(false); - LoginEvent accountEvent = new LoginEvent(); - EventBus.getDefault().post(accountEvent); - - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/account/UserUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/account/UserUtil.kt new file mode 100644 index 0000000..ee97999 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/account/UserUtil.kt @@ -0,0 +1,27 @@ +package com.android.learn.base.utils.account + +import com.android.learn.base.event.LoginEvent +import com.android.learn.base.mmodel.RegisterLoginData + +import org.greenrobot.eventbus.EventBus + +object UserUtil { + + var isLogined = false + var userInfo: RegisterLoginData? = null + + fun gainUserInfo(): RegisterLoginData? { + return userInfo + } + + fun assignUserInfo(userInfo: RegisterLoginData?) { + UserUtil.userInfo = userInfo + if (userInfo != null) { + isLogined = true + } else + isLogined = false + val accountEvent = LoginEvent() + EventBus.getDefault().post(accountEvent) + + } +} From c7ddaf2b8a6af512121bf998e6f09717478fa473 Mon Sep 17 00:00:00 2001 From: GaoLei Date: Wed, 30 Jan 2019 08:39:38 +0800 Subject: [PATCH 14/38] =?UTF-8?q?=E5=AE=9E=E7=8E=B0view=E8=BD=AC=E5=8C=96k?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidLearnProject/.idea/workspace.xml | 579 ++++++------------ .../base/thirdframe/rxjava/BaseObserver.java | 4 +- .../learn/base/view/CircleImageView.java | 73 --- .../learn/base/view/CircleImageView.kt | 61 ++ .../learn/base/view/CustomProgressDialog.java | 58 -- .../learn/base/view/CustomProgressDialog.kt | 58 ++ .../android/learn/base/view/HeaderView.java | 4 - .../android/learn/base/view/Html5Webview.java | 219 ------- .../android/learn/base/view/Html5Webview.kt | 191 ++++++ .../android/learn/base/view/ProgressView.java | 70 --- .../android/learn/base/view/ProgressView.kt | 59 ++ .../android/learn/base/view/TitleView.java | 38 -- .../com/android/learn/base/view/TitleView.kt | 32 + .../view/colorfultab/ColorClipTabLayout.java | 215 ------- .../view/colorfultab/ColorClipTabLayout.kt | 202 ++++++ .../view/colorfultab/ColorClipTestView.java | 75 --- .../view/colorfultab/ColorClipTestView.kt | 69 +++ .../base/view/colorfultab/ColorClipView.java | 234 ------- .../base/view/colorfultab/ColorClipView.kt | 223 +++++++ 19 files changed, 1081 insertions(+), 1383 deletions(-) delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/CircleImageView.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/CircleImageView.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/CustomProgressDialog.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/CustomProgressDialog.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/HeaderView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/Html5Webview.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/Html5Webview.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/ProgressView.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/ProgressView.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/TitleView.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/TitleView.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/colorfultab/ColorClipTabLayout.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/colorfultab/ColorClipTabLayout.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/colorfultab/ColorClipTestView.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/colorfultab/ColorClipTestView.kt delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/colorfultab/ColorClipView.java create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/colorfultab/ColorClipView.kt diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index df28843..883dbb7 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -12,92 +12,26 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - + + + - - - - - - - - - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + + + - - + + - - + + - - + + - + @@ -245,7 +173,6 @@ - glide.with dispose composi ondest @@ -275,10 +202,12 @@ add getUserInfo setUserInfo + matrix getString kapt + mmatrix @@ -10760,9 +10689,6 @@ - - - + @@ -11385,7 +11327,7 @@ - + @@ -11397,9 +11339,10 @@ - + - + + @@ -11410,7 +11353,6 @@ - @@ -11499,405 +11441,413 @@ - + - - + + + - + - - + + + - + - + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + - + - - + + + + + + + + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + + - + - - + + - + - - + + - + - - + + - + - - + + - - - - - - - - - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - - - + - - - - - + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/KnowledgeChildActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/KnowledgeChildActivity.kt index ceb5e33..e404787 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/KnowledgeChildActivity.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/KnowledgeChildActivity.kt @@ -72,7 +72,7 @@ class KnowledgeChildActivity : BaseMvpActivity val intent = Intent(this@KnowledgeChildActivity, ArticleDetailActivity::class.java) val bundle = Bundle() - bundle.putString("url", feedArticleAdapter!!.data[position].getLink()) + bundle.putString("url", feedArticleAdapter!!.data[position].link) intent.putExtras(bundle) startActivity(intent) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/MyCollectActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/MyCollectActivity.kt index 1644a2e..dd8857d 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/MyCollectActivity.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/MyCollectActivity.kt @@ -71,7 +71,7 @@ class MyCollectActivity : BaseMvpActivity val intent = Intent(this@MyCollectActivity, ArticleDetailActivity::class.java) val bundle = Bundle() - bundle.putString("url", articleDataList!![position].getLink()) + bundle.putString("url", articleDataList!![position].link) intent.putExtras(bundle) startActivity(intent) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SearchResultActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SearchResultActivity.kt index 584c770..a095915 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SearchResultActivity.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/activity/SearchResultActivity.kt @@ -66,7 +66,7 @@ class SearchResultActivity : BaseMvpActivity val intent = Intent(this@SearchResultActivity, ArticleDetailActivity::class.java) val bundle = Bundle() - bundle.putString("url", feedArticleAdapter!!.data[position].getLink()) + bundle.putString("url", feedArticleAdapter!!.data[position].link) intent.putExtras(bundle) startActivity(intent) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ArticleQuickAdapter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ArticleQuickAdapter.kt index 1ae28b7..311ca0b 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ArticleQuickAdapter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ArticleQuickAdapter.kt @@ -22,9 +22,9 @@ class ArticleQuickAdapter( val context: Context?, internal var list: List) : PagerAdapter() { private val mLayoutInflater: LayoutInflater - private var mList: List = ArrayList() + private var mList: List = ArrayList()!! init { this.mList = mList @@ -40,7 +40,7 @@ class HorizontalPagerAdapter(private val mContext: Context?, mList: List(R.id.txt_item) as TextView - val treeBean = mList[position] + val treeBean = mList[position]!! txt.text = treeBean.name val recyclerView = view.findViewById(R.id.recyclerView) recyclerView.layoutManager = LinearLayoutManager(mContext) diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ProjectQuickAdapter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ProjectQuickAdapter.kt index 9a20b71..9825702 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ProjectQuickAdapter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/adapter/ProjectQuickAdapter.kt @@ -15,11 +15,11 @@ import com.chad.library.adapter.base.BaseViewHolder class ProjectQuickAdapter(internal var context: Context?, list: List) : BaseQuickAdapter(R.layout.item_project_list, list) { override fun convert(helper: BaseViewHolder, projectInfo: ProjectData) { - helper.setText(R.id.item_project_list_title_tv, projectInfo.getTitle()) - .setText(R.id.item_project_list_content_tv, projectInfo.getDesc()) - .setText(R.id.item_project_list_time_tv, projectInfo.getNiceDate()) - .setText(R.id.item_project_list_author_tv, projectInfo.getAuthor()) + helper.setText(R.id.item_project_list_title_tv, projectInfo.title) + .setText(R.id.item_project_list_content_tv, projectInfo.desc) + .setText(R.id.item_project_list_time_tv, projectInfo.niceDate) + .setText(R.id.item_project_list_author_tv, projectInfo.author) - ImageLoader.instance.load(context!!, projectInfo.getEnvelopePic(), helper.getView(R.id.item_project_list_iv) as ImageView) + ImageLoader.instance.load(context!!, projectInfo.envelopePic, helper.getView(R.id.item_project_list_iv) as ImageView) } } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/HomeFragment.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/HomeFragment.kt index e67dec9..62619ab 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/HomeFragment.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/HomeFragment.kt @@ -86,7 +86,7 @@ class HomeFragment : BaseMvpFragment(), HomeCo override fun showArticleList(listData: FeedArticleListData, isRefresh: Boolean) { - val newDataList = listData.getDatas() + val newDataList = listData.datas if (newDataList == null || newDataList.size == 0) { smartRefreshLayout!!.finishLoadMoreWithNoMoreData() return @@ -168,7 +168,7 @@ class HomeFragment : BaseMvpFragment(), HomeCo feedArticleAdapter!!.onItemClickListener = BaseQuickAdapter.OnItemClickListener { adapter, view, position -> val intent = Intent(activity, ArticleDetailActivity::class.java) val bundle = Bundle() - bundle.putString("url", articleDataList!![position].getLink()) + bundle.putString("url", articleDataList!![position].link) intent.putExtras(bundle) startActivity(intent) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/ProjectFragment.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/ProjectFragment.kt index 3777dcf..8b19482 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/ProjectFragment.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/ProjectFragment.kt @@ -63,7 +63,7 @@ class ProjectFragment : BaseMvpFragment( override fun showProjectList(listData: ProjectListData, isRefresh: Boolean) { - val newDataList = listData.data.getDatas() + val newDataList = listData.data.datas if (newDataList == null || newDataList.size == 0) { smartRefreshLayout!!.finishLoadMoreWithNoMoreData() return @@ -84,7 +84,7 @@ class ProjectFragment : BaseMvpFragment( projectAdapter.setOnItemClickListener { adapter, view, position -> val intent = Intent(activity, ArticleDetailActivity::class.java) val bundle = Bundle() - bundle.putString("url", projectDataList!![position].getLink()) + bundle.putString("url", projectDataList!![position].link) intent.putExtras(bundle) startActivity(intent) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/WechatSubFragment.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/WechatSubFragment.kt index 790606f..8ad4144 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/WechatSubFragment.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/fragment/WechatSubFragment.kt @@ -74,7 +74,7 @@ class WechatSubFragment : BaseMvpFragment val intent = Intent(activity, ArticleDetailActivity::class.java) val bundle = Bundle() - bundle.putString("url", feedArticleAdapter!!.data[position].getLink()) + bundle.putString("url", feedArticleAdapter!!.data[position].link) intent.putExtras(bundle) startActivity(intent) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/CollectPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/CollectPresenter.kt index 876d09e..ac228c6 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/CollectPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/CollectPresenter.kt @@ -24,7 +24,7 @@ class CollectPresenter : BasePresenter(), CollectContract. override fun onNext(data: BaseResponse) { if (data.errorCode == BaseData.SUCCESS) { - mView!!.showCollectList(data.getData()) + mView!!.showCollectList(data.data) } else ResponseStatusUtil.handleResponseStatus(data) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/HomePresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/HomePresenter.kt index f78a1f9..997b9ff 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/HomePresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/HomePresenter.kt @@ -22,7 +22,7 @@ class HomePresenter : BasePresenter(), HomeContract.Presenter val observable = mRestService.getFeedArticleList(-1) addSubscribe(observable, object : BaseObserver>(false) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData(), true) + mView!!.showArticleList(feedArticleListData.data, true) } }) @@ -34,7 +34,7 @@ class HomePresenter : BasePresenter(), HomeContract.Presenter val observable = mRestService.getFeedArticleList(mCurrentPage) addSubscribe(observable, object : BaseObserver>(false) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData(), false) + mView!!.showArticleList(feedArticleListData.data, false) } }) } @@ -43,7 +43,7 @@ class HomePresenter : BasePresenter(), HomeContract.Presenter val observable = mRestService.getFeedArticleList(num) addSubscribe(observable, object : BaseObserver>(true) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData(), false) + mView!!.showArticleList(feedArticleListData.data, false) } }) } @@ -63,7 +63,7 @@ class HomePresenter : BasePresenter(), HomeContract.Presenter override fun addCollectArticle(position: Int, feedArticleData: FeedArticleData) { - val observable = mRestService.addCollectArticle(feedArticleData.getId()) + val observable = mRestService.addCollectArticle(feedArticleData.id) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { @@ -79,7 +79,7 @@ class HomePresenter : BasePresenter(), HomeContract.Presenter } override fun cancelCollectArticle(position: Int, feedArticleData: FeedArticleData) { - val observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1) + val observable = mRestService.cancelCollectArticle(feedArticleData.id, -1) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgeChildPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgeChildPresenter.kt index 61a2396..0abfc3a 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgeChildPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgeChildPresenter.kt @@ -19,7 +19,7 @@ class KnowledgeChildPresenter : BasePresenter(), Kn val observable = mRestService.getKnowledgeArticleList(num, cid) addSubscribe(observable, object : BaseObserver>(true) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData(), false) + mView!!.showArticleList(feedArticleListData.data, false) } }) } @@ -28,7 +28,7 @@ class KnowledgeChildPresenter : BasePresenter(), Kn val observable = mRestService.getKnowledgeArticleList(-1, cid) addSubscribe(observable, object : BaseObserver>(false) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData(), true) + mView!!.showArticleList(feedArticleListData.data, true) } }) @@ -40,13 +40,13 @@ class KnowledgeChildPresenter : BasePresenter(), Kn val observable = mRestService.getKnowledgeArticleList(mCurrentPage, cid) addSubscribe(observable, object : BaseObserver>(false) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData(), false) + mView!!.showArticleList(feedArticleListData.data, false) } }) } override fun addCollectArticle(position: Int, feedArticleData: FeedArticleData) { - val observable = mRestService.addCollectArticle(feedArticleData.getId()) + val observable = mRestService.addCollectArticle(feedArticleData.id) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { @@ -62,7 +62,7 @@ class KnowledgeChildPresenter : BasePresenter(), Kn } override fun cancelCollectArticle(position: Int, feedArticleData: FeedArticleData) { - val observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1) + val observable = mRestService.cancelCollectArticle(feedArticleData.id, -1) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgePresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgePresenter.kt index ff36a3f..bf5ff00 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgePresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/KnowledgePresenter.kt @@ -1,5 +1,6 @@ package com.android.learn.mpresenter +import com.android.learn.base.mmodel.BaseListResponse import com.android.learn.base.mmodel.BaseResponse import com.android.learn.base.mmodel.TreeBean import com.android.learn.base.mpresenter.BasePresenter @@ -24,8 +25,8 @@ class KnowledgePresenter : BasePresenter(), KnowledgeCon override fun getKnowledge() { val observable = mRestService.knowledgeTree - val baseObserver = object : BaseObserver>>(false) { - override fun onNext(datas: BaseResponse>) { + val baseObserver = object : BaseObserver>>(false) { + override fun onNext(datas: BaseListResponse>) { mView!!.showKnowledge(datas.data) } } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/MainActivityPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/MainActivityPresenter.kt index 94d50b9..e58ed7d 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/MainActivityPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/MainActivityPresenter.kt @@ -1,12 +1,8 @@ package com.android.learn.mpresenter -import com.android.learn.base.mmodel.BaseData -import com.android.learn.base.mmodel.BaseResponse -import com.android.learn.base.mmodel.FeedArticleListData +import com.android.learn.base.mmodel.* import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData -import com.android.learn.base.mmodel.HotKeyData -import com.android.learn.base.mmodel.TreeBean import com.android.learn.base.mpresenter.BasePresenter import com.android.learn.base.thirdframe.rxjava.BaseObserver import com.android.learn.base.utils.ResponseStatusUtil @@ -22,13 +18,13 @@ class MainActivityPresenter : BasePresenter(), MainAc override fun getHotKey() { val observable = mRestService.hotKey - addSubscribe(observable, object : BaseObserver>>(true) { + addSubscribe(observable, object : BaseObserver>>(true) { - override fun onNext(datas: BaseResponse>) { + override fun onNext(datas: BaseListResponse>) { if (datas.errorCode == BaseData.SUCCESS) { mView!!.showHotKey(datas.data) } else - ResponseStatusUtil.handleResponseStatus(datas) + ResponseStatusUtil.handleListResponseStatus(datas as BaseListResponse>) } }) diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/SearchPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/SearchPresenter.kt index 4f7f73d..f86465f 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/SearchPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/SearchPresenter.kt @@ -20,7 +20,7 @@ class SearchPresenter : BasePresenter(), SearchContract.Pre val observable = mRestService.search(mCurrentPage, key) addSubscribe(observable, object : BaseObserver>(true) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData()) + mView!!.showArticleList(feedArticleListData.data) } }) } @@ -30,13 +30,13 @@ class SearchPresenter : BasePresenter(), SearchContract.Pre val observable = mRestService.search(mCurrentPage, key) addSubscribe(observable, object : BaseObserver>(true) { override fun onNext(feedArticleListData: BaseResponse) { - mView!!.showArticleList(feedArticleListData.getData()) + mView!!.showArticleList(feedArticleListData.data) } }) } override fun addCollectArticle(position: Int, feedArticleData: FeedArticleListData.FeedArticleData) { - val observable = mRestService.addCollectArticle(feedArticleData.getId()) + val observable = mRestService.addCollectArticle(feedArticleData.id) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { @@ -52,7 +52,7 @@ class SearchPresenter : BasePresenter(), SearchContract.Pre } override fun cancelCollectArticle(position: Int, feedArticleData: FeedArticleListData.FeedArticleData) { - val observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1) + val observable = mRestService.cancelCollectArticle(feedArticleData.id, -1) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/TodoPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/TodoPresenter.kt index 6afbfa1..75c0161 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/TodoPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/TodoPresenter.kt @@ -22,7 +22,7 @@ class TodoPresenter : BasePresenter(), TodoContract.Presenter override fun onNext(data: BaseResponse) { if (data.errorCode == BaseData.SUCCESS) { - mView!!.showListNotDone(data.getData()) + mView!!.showListNotDone(data.data) } else ResponseStatusUtil.handleResponseStatus(data) } @@ -37,7 +37,7 @@ class TodoPresenter : BasePresenter(), TodoContract.Presenter override fun onNext(data: BaseResponse) { if (data.errorCode == BaseData.SUCCESS) { - mView!!.showListDone(data.getData()) + mView!!.showListDone(data.data) } else ResponseStatusUtil.handleResponseStatus(data) } diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatPresenter.kt index 326b261..164076a 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatPresenter.kt @@ -1,12 +1,8 @@ package com.android.learn.mpresenter -import com.android.learn.base.mmodel.BannerListData -import com.android.learn.base.mmodel.BaseData -import com.android.learn.base.mmodel.BaseResponse -import com.android.learn.base.mmodel.FeedArticleListData +import com.android.learn.base.mmodel.* import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData -import com.android.learn.base.mmodel.WxArticle import com.android.learn.base.mpresenter.BasePresenter import com.android.learn.base.thirdframe.rxjava.BaseObserver import com.android.learn.base.utils.ResponseStatusUtil @@ -20,8 +16,8 @@ class WechatPresenter : BasePresenter(), WechatContract.Pre override fun getWxArticle() { val observable = mRestService.wxArticle - addSubscribe(observable, object : BaseObserver>>(false) { - override fun onNext(datas: BaseResponse>) { + addSubscribe(observable, object : BaseObserver>>(false) { + override fun onNext(datas: BaseListResponse>) { mView!!.showWxArticle(datas.data) } }) diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatSubPresenter.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatSubPresenter.kt index 9e2e98f..fd6f993 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatSubPresenter.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/mpresenter/WechatSubPresenter.kt @@ -21,7 +21,7 @@ class WechatSubPresenter : BasePresenter(), WechatSubCon addSubscribe(observable, object : BaseObserver>(true) { override fun onNext(listData: BaseResponse) { - mView!!.showWxArticleById(listData.getData()) + mView!!.showWxArticleById(listData.data) } }) @@ -29,7 +29,7 @@ class WechatSubPresenter : BasePresenter(), WechatSubCon } override fun addCollectArticle(position: Int, feedArticleData: FeedArticleData) { - val observable = mRestService.addCollectArticle(feedArticleData.getId()) + val observable = mRestService.addCollectArticle(feedArticleData.id) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { @@ -45,7 +45,7 @@ class WechatSubPresenter : BasePresenter(), WechatSubCon } override fun cancelCollectArticle(position: Int, feedArticleData: FeedArticleData) { - val observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1) + val observable = mRestService.cancelCollectArticle(feedArticleData.id, -1) addSubscribe(observable, object : BaseObserver(true) { override fun onNext(data: BaseData) { diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BannerListData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BannerListData.java deleted file mode 100644 index e920968..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BannerListData.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.util.List; - - -public class BannerListData extends BaseData { - -// { -// "desc":"最新项目上线啦~", "id":13, "imagePath": -// "http://www.wanandroid.com/blogimgs/5ae04af4-72b9-4696-81cb-1644cdcd2d29.jpg", "isVisible": -// 1, "order":0, "title":"最新项目上线啦~", "type":0, "url":"http://www.wanandroid.com/pindex" -// } - - - public List data; - - public class BannerData { - - public int id; - public String url; - public String imagePath; - public String title; - public String desc; - public int isVisible; - public int order; - public int type; - - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BannerListData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BannerListData.kt new file mode 100644 index 0000000..0c22ba0 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BannerListData.kt @@ -0,0 +1,29 @@ +package com.android.learn.base.mmodel + + +class BannerListData : BaseData() { + + // { + // "desc":"最新项目上线啦~", "id":13, "imagePath": + // "http://www.wanandroid.com/blogimgs/5ae04af4-72b9-4696-81cb-1644cdcd2d29.jpg", "isVisible": + // 1, "order":0, "title":"最新项目上线啦~", "type":0, "url":"http://www.wanandroid.com/pindex" + // } + + + lateinit var data: List + + inner class BannerData { + + var id: Int = 0 + lateinit var url: String + lateinit var imagePath: String + lateinit var title: String + lateinit var desc: String + var isVisible: Int = 0 + var order: Int = 0 + var type: Int = 0 + + } + + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseData.java deleted file mode 100644 index 8b53774..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseData.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.learn.base.mmodel; - -/** - * @author quchao - * @date 2018/2/12 - */ - -public class BaseData { - - public static final int SUCCESS = 0; - public static final int FAIL = -1; - - public int errorCode; - - public String errorMsg; - - - public int getErrorCode() { - return errorCode; - } - - public void setErrorCode(int errorCode) { - this.errorCode = errorCode; - } - - public String getErrorMsg() { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } - - -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseData.kt new file mode 100644 index 0000000..62fb174 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseData.kt @@ -0,0 +1,21 @@ +package com.android.learn.base.mmodel + +/** + * @author quchao + * @date 2018/2/12 + */ + +open class BaseData { + + var errorCode: Int = 0 + + lateinit var errorMsg: String + + companion object { + + val SUCCESS = 0 + val FAIL = -1 + } + + +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseListResponse.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseListResponse.kt new file mode 100644 index 0000000..5e1c844 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseListResponse.kt @@ -0,0 +1,20 @@ +package com.android.learn.base.mmodel + +class BaseListResponse> { + + /** + * 0:成功,1:失败 + */ + var errorCode: Int = 0 + + lateinit var errorMsg: String + + lateinit var data: T + + companion object { + + val SUCCESS = 0 + val FAIL = 1 + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseResponse.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseResponse.java deleted file mode 100644 index 0e3e5e0..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseResponse.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.android.learn.base.mmodel; - -public class BaseResponse { - - public static final int SUCCESS = 0; - public static final int FAIL = 1; - - /** - * 0:成功,1:失败 - */ - public int errorCode; - - public String errorMsg; - - public T data; - - public int getErrorCode() { - return errorCode; - } - - public void setErrorCode(int errorCode) { - this.errorCode = errorCode; - } - - public String getErrorMsg() { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseResponse.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseResponse.kt new file mode 100644 index 0000000..d419d6e --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/BaseResponse.kt @@ -0,0 +1,20 @@ +package com.android.learn.base.mmodel + +class BaseResponse { + + /** + * 0:成功,1:失败 + */ + var errorCode: Int = 0 + + lateinit var errorMsg: String + + lateinit var data: T + + companion object { + + val SUCCESS = 0 + val FAIL = 1 + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/FeedArticleListData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/FeedArticleListData.java deleted file mode 100644 index f252a36..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/FeedArticleListData.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - -public class FeedArticleListData { - - public int curPage; - public List datas; - public int offset; - public boolean over; - public int pageCount; - public int size; - public int total; - - public int getCurPage() { - return curPage; - } - - public void setCurPage(int curPage) { - this.curPage = curPage; - } - - public List getDatas() { - return datas; - } - - public void setDatas(List datas) { - this.datas = datas; - } - - public int getOffset() { - return offset; - } - - public void setOffset(int offset) { - this.offset = offset; - } - - public boolean isOver() { - return over; - } - - public void setOver(boolean over) { - this.over = over; - } - - public int getPageCount() { - return pageCount; - } - - public void setPageCount(int pageCount) { - this.pageCount = pageCount; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public class FeedArticleData implements Serializable { - - public String apkLink; - public String author; - public int chapterId; - public String chapterName; - public boolean collect=true; - public int courseId; - public String desc; - public String envelopePic; - public int id; - public String link; - public String niceDate; - public String origin; - public String projectLink; - public int superChapterId; - public String superChapterName; - public long publishTime; - public String title; - public int visible; - public int zan,originId; - - public String getApkLink() { - return apkLink; - } - - public void setApkLink(String apkLink) { - this.apkLink = apkLink; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public int getChapterId() { - return chapterId; - } - - public void setChapterId(int chapterId) { - this.chapterId = chapterId; - } - - public String getChapterName() { - return chapterName; - } - - public void setChapterName(String chapterName) { - this.chapterName = chapterName; - } - - public boolean isCollect() { - return collect; - } - - public void setCollect(boolean collect) { - this.collect = collect; - } - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getEnvelopePic() { - return envelopePic; - } - - public void setEnvelopePic(String envelopePic) { - this.envelopePic = envelopePic; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getNiceDate() { - return niceDate; - } - - public void setNiceDate(String niceDate) { - this.niceDate = niceDate; - } - - public String getOrigin() { - return origin; - } - - public void setOrigin(String origin) { - this.origin = origin; - } - - public String getProjectLink() { - return projectLink; - } - - public void setProjectLink(String projectLink) { - this.projectLink = projectLink; - } - - public int getSuperChapterId() { - return superChapterId; - } - - public void setSuperChapterId(int superChapterId) { - this.superChapterId = superChapterId; - } - - public String getSuperChapterName() { - return superChapterName; - } - - public void setSuperChapterName(String superChapterName) { - this.superChapterName = superChapterName; - } - - public long getPublishTime() { - return publishTime; - } - - public void setPublishTime(long publishTime) { - this.publishTime = publishTime; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public int getZan() { - return zan; - } - - public void setZan(int zan) { - this.zan = zan; - } - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/FeedArticleListData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/FeedArticleListData.kt new file mode 100644 index 0000000..011ae3f --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/FeedArticleListData.kt @@ -0,0 +1,39 @@ +package com.android.learn.base.mmodel + +import java.io.Serializable + +class FeedArticleListData: BaseData() { + + var curPage: Int = 0 + lateinit var datas: List + var offset: Int = 0 + var isOver: Boolean = false + var pageCount: Int = 0 + var size: Int = 0 + var total: Int = 0 + + inner class FeedArticleData : Serializable { + + lateinit var apkLink: String + lateinit var author: String + var chapterId: Int = 0 + lateinit var chapterName: String + var isCollect = true + var courseId: Int = 0 + lateinit var desc: String + lateinit var envelopePic: String + var id: Int = 0 + lateinit var link: String + lateinit var niceDate: String + lateinit var origin: String + lateinit var projectLink: String + var superChapterId: Int = 0 + lateinit var superChapterName: String + var publishTime: Long = 0 + lateinit var title: String + var visible: Int = 0 + var zan: Int = 0 + var originId: Int = 0 + } + +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/HotKeyData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/HotKeyData.java deleted file mode 100644 index c4fab0f..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/HotKeyData.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.android.learn.base.mmodel; - -public class HotKeyData { - - - /** - * id : 6 - * link : - * name : 面试 - * order : 1 - * visible : 1 - */ - - private int id; - private String link; - private String name; - private int order; - private int visible; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/HotKeyData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/HotKeyData.kt new file mode 100644 index 0000000..a8e1be1 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/HotKeyData.kt @@ -0,0 +1,19 @@ +package com.android.learn.base.mmodel + +class HotKeyData: BaseData() { + + + /** + * id : 6 + * link : + * name : 面试 + * order : 1 + * visible : 1 + */ + + var id: Int = 0 + lateinit var link: String + lateinit var name: String + var order: Int = 0 + var visible: Int = 0 +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/ProjectListData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/ProjectListData.java deleted file mode 100644 index aaec995..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/ProjectListData.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - - -/** - * @author quchao - * @date 2018/2/24 - */ - -public class ProjectListData { - - /** - * "curPage": 1, - * "datas": [], - * "offset": 0, - * "over": true, - * "pageCount": 1, - * "size": 15, - * "total": 8 - */ - public ListData data; - - public class ListData { - public int curPage; - public List datas; - public int offset; - public boolean over; - public int pageCount; - public int size; - public int total; - public List getDatas() { - return datas; - } - - public void setDatas(List datas) { - this.datas = datas; - } -// public int getCurPage() { -// return curPage; -// } -// -// public void setCurPage(int curPage) { -// this.curPage = curPage; -// } -// -// public int getOffset() { -// return offset; -// } -// -// public void setOffset(int offset) { -// this.offset = offset; -// } -// -// public boolean isOver() { -// return over; -// } -// -// public void setOver(boolean over) { -// this.over = over; -// } -// -// public int getPageCount() { -// return pageCount; -// } -// -// public void setPageCount(int pageCount) { -// this.pageCount = pageCount; -// } -// -// public int getSize() { -// return size; -// } -// -// public void setSize(int size) { -// this.size = size; -// } -// -// public int getTotal() { -// return total; -// } -// -// public void setTotal(int total) { -// this.total = total; -// } - } - - public class ProjectData implements Serializable - { - -// { -// "apkLink": "", -// "author": "LiangLuDev", -// "chapterId": 294, -// "chapterName": "完整项目", -// "collect": false, -// "courseId": 13, -// "desc": "注册登录、用户信息、用户密码、用户图像修改、书籍分类、本地书籍扫描、书架、书籍搜索(作者名或书籍名)、书籍阅读(仅txt格式,暂不支持PDF等其他格式)、阅读字体、背景颜色、翻页效果等设置、意见反馈(反馈信息发送到我的邮箱)、应用版本更新", -// "envelopePic": "http://www.wanandroid.com/blogimgs/fab6fb8b-c3aa-495f-b6a9-c007d78751c0.gif", -// "fresh": false, -// "id": 2836, -// "link": "http://www.wanandroid.com/blog/show/2116", -// "niceDate": "2018-04-22", -// "origin": "", -// "projectLink": "https://github.com/LiangLuDev/WeYueReader", -// "publishTime": 1524376619000, -// "superChapterId": 0, -// "superChapterName": "", -// "tags": [ ], -// "title": "微Yue电子书阅读 WeYueReader", -// "type": 0, -// "visible": 1, -// "zan": 0 -//} - public String apkLink; - public String author; - public int chapterId; - public String chapterName; - public boolean collect; - public int courseId; - public String desc; - public String envelopePic; - public int id; - public String link; - public String niceDate; - public String origin; - public String projectLink; - public int superChapterId; - public String superChapterName; - public long publishTime; - public String title; - public int visible; - public int zan; - -// public String getApkLink() { -// return apkLink; -// } -// -// public void setApkLink(String apkLink) { -// this.apkLink = apkLink; -// } -// - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public int getChapterId() { - return chapterId; - } -// -// public void setChapterId(int chapterId) { -// this.chapterId = chapterId; -// } -// -// public String getChapterName() { -// return chapterName; -// } -// -// public void setChapterName(String chapterName) { -// this.chapterName = chapterName; -// } -// -// public boolean isCollect() { -// return collect; -// } -// -// public void setCollect(boolean collect) { -// this.collect = collect; -// } -// -// public int getCourseId() { -// return courseId; -// } -// -// public void setCourseId(int courseId) { -// this.courseId = courseId; -// } -// - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getEnvelopePic() { - return envelopePic; - } - - public void setEnvelopePic(String envelopePic) { - this.envelopePic = envelopePic; - } -// -// public int getId() { -// return id; -// } -// -// public void setId(int id) { -// this.id = id; -// } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getNiceDate() { - return niceDate; - } - - public void setNiceDate(String niceDate) { - this.niceDate = niceDate; - } -// -// public String getOrigin() { -// return origin; -// } -// -// public void setOrigin(String origin) { -// this.origin = origin; -// } -// -// public String getProjectLink() { -// return projectLink; -// } -// -// public void setProjectLink(String projectLink) { -// this.projectLink = projectLink; -// } -// -// public int getSuperChapterId() { -// return superChapterId; -// } -// -// public void setSuperChapterId(int superChapterId) { -// this.superChapterId = superChapterId; -// } -// -// public String getSuperChapterName() { -// return superChapterName; -// } -// -// public void setSuperChapterName(String superChapterName) { -// this.superChapterName = superChapterName; -// } -// -// public long getPublishTime() { -// return publishTime; -// } -// -// public void setPublishTime(long publishTime) { -// this.publishTime = publishTime; -// } -// - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } -// -// public int getVisible() { -// return visible; -// } -// -// public void setVisible(int visible) { -// this.visible = visible; -// } -// -// public int getZan() { -// return zan; -// } -// -// public void setZan(int zan) { -// this.zan = zan; -// } - - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/ProjectListData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/ProjectListData.kt new file mode 100644 index 0000000..55dd0ca --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/ProjectListData.kt @@ -0,0 +1,231 @@ +package com.android.learn.base.mmodel + +import java.io.Serializable + + +/** + * @author quchao + * @date 2018/2/24 + */ + +class ProjectListData : BaseData() { + + /** + * "curPage": 1, + * "datas": [], + * "offset": 0, + * "over": true, + * "pageCount": 1, + * "size": 15, + * "total": 8 + */ + lateinit var data: ListData + + inner class ListData { + var curPage: Int = 0 + lateinit var datas: List + var offset: Int = 0 + var over: Boolean = false + var pageCount: Int = 0 + var size: Int = 0 + var total: Int = 0 + // public int getCurPage() { + // return curPage; + // } + // + // public void setCurPage(int curPage) { + // this.curPage = curPage; + // } + // + // public int getOffset() { + // return offset; + // } + // + // public void setOffset(int offset) { + // this.offset = offset; + // } + // + // public boolean isOver() { + // return over; + // } + // + // public void setOver(boolean over) { + // this.over = over; + // } + // + // public int getPageCount() { + // return pageCount; + // } + // + // public void setPageCount(int pageCount) { + // this.pageCount = pageCount; + // } + // + // public int getSize() { + // return size; + // } + // + // public void setSize(int size) { + // this.size = size; + // } + // + // public int getTotal() { + // return total; + // } + // + // public void setTotal(int total) { + // this.total = total; + // } + } + + inner class ProjectData : Serializable { + + // { + // "apkLink": "", + // "author": "LiangLuDev", + // "chapterId": 294, + // "chapterName": "完整项目", + // "collect": false, + // "courseId": 13, + // "desc": "注册登录、用户信息、用户密码、用户图像修改、书籍分类、本地书籍扫描、书架、书籍搜索(作者名或书籍名)、书籍阅读(仅txt格式,暂不支持PDF等其他格式)、阅读字体、背景颜色、翻页效果等设置、意见反馈(反馈信息发送到我的邮箱)、应用版本更新", + // "envelopePic": "http://www.wanandroid.com/blogimgs/fab6fb8b-c3aa-495f-b6a9-c007d78751c0.gif", + // "fresh": false, + // "id": 2836, + // "link": "http://www.wanandroid.com/blog/show/2116", + // "niceDate": "2018-04-22", + // "origin": "", + // "projectLink": "https://github.com/LiangLuDev/WeYueReader", + // "publishTime": 1524376619000, + // "superChapterId": 0, + // "superChapterName": "", + // "tags": [ ], + // "title": "微Yue电子书阅读 WeYueReader", + // "type": 0, + // "visible": 1, + // "zan": 0 + //} + lateinit var apkLink: String + // public String getApkLink() { + // return apkLink; + // } + // + // public void setApkLink(String apkLink) { + // this.apkLink = apkLink; + // } + // + lateinit var author: String + var chapterId: Int = 0 + lateinit var chapterName: String + var collect: Boolean = false + var courseId: Int = 0 + // + // public void setChapterId(int chapterId) { + // this.chapterId = chapterId; + // } + // + // public String getChapterName() { + // return chapterName; + // } + // + // public void setChapterName(String chapterName) { + // this.chapterName = chapterName; + // } + // + // public boolean isCollect() { + // return collect; + // } + // + // public void setCollect(boolean collect) { + // this.collect = collect; + // } + // + // public int getCourseId() { + // return courseId; + // } + // + // public void setCourseId(int courseId) { + // this.courseId = courseId; + // } + // + lateinit var desc: String + lateinit var envelopePic: String + var id: Int = 0 + // + // public int getId() { + // return id; + // } + // + // public void setId(int id) { + // this.id = id; + // } + + lateinit var link: String + lateinit var niceDate: String + lateinit var origin: String + lateinit var projectLink: String + var superChapterId: Int = 0 + lateinit var superChapterName: String + var publishTime: Long = 0 + // + // public String getOrigin() { + // return origin; + // } + // + // public void setOrigin(String origin) { + // this.origin = origin; + // } + // + // public String getProjectLink() { + // return projectLink; + // } + // + // public void setProjectLink(String projectLink) { + // this.projectLink = projectLink; + // } + // + // public int getSuperChapterId() { + // return superChapterId; + // } + // + // public void setSuperChapterId(int superChapterId) { + // this.superChapterId = superChapterId; + // } + // + // public String getSuperChapterName() { + // return superChapterName; + // } + // + // public void setSuperChapterName(String superChapterName) { + // this.superChapterName = superChapterName; + // } + // + // public long getPublishTime() { + // return publishTime; + // } + // + // public void setPublishTime(long publishTime) { + // this.publishTime = publishTime; + // } + // + lateinit var title: String + var visible: Int = 0 + var zan: Int = 0 + // + // public int getVisible() { + // return visible; + // } + // + // public void setVisible(int visible) { + // this.visible = visible; + // } + // + // public int getZan() { + // return zan; + // } + // + // public void setZan(int zan) { + // this.zan = zan; + // } + + } +} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/RegisterLoginData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/RegisterLoginData.java deleted file mode 100644 index 545aa0b..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/RegisterLoginData.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.util.List; - -/** - * @author quchao - * @date 2018/2/26 - */ - -public class RegisterLoginData extends BaseData { - - public Data data; - - public class Data { - public String username; - public String password; - public String email, icon, token; - public int id, type; - // private List chapterTops; - public List collectIds; - - @Override - public String toString() { - return "RegisterLoginData{" + - "username='" + username + '\'' + - ", password='" + password + '\'' + - ", email='" + email + '\'' + - ", icon='" + icon + '\'' + - ", token='" + token + '\'' + - ", id=" + id + - ", type=" + type + - ", collectIds=" + collectIds + - '}'; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/RegisterLoginData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/RegisterLoginData.kt new file mode 100644 index 0000000..a48078a --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/RegisterLoginData.kt @@ -0,0 +1,36 @@ +package com.android.learn.base.mmodel + +/** + * @author quchao + * @date 2018/2/26 + */ + +class RegisterLoginData : BaseData() { + + var data: Data? = null + + inner class Data { + lateinit var username: String + lateinit var password: String + lateinit var email: String + lateinit var icon: String + lateinit var token: String + var id: Int = 0 + var type: Int = 0 + // private List chapterTops; + lateinit var collectIds: List + + override fun toString(): String { + return "RegisterLoginData{" + + "username='" + username + '\''.toString() + + ", password='" + password + '\''.toString() + + ", email='" + email + '\''.toString() + + ", icon='" + icon + '\''.toString() + + ", token='" + token + '\''.toString() + + ", id=" + id + + ", type=" + type + + ", collectIds=" + collectIds + + '}'.toString() + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TodoData.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TodoData.java deleted file mode 100644 index dc3e812..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TodoData.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - -public class TodoData { - - - /** - * curPage : 1 - * datas : [{"completeDate":null,"completeDateStr":"","content":"圣诞节快乐","date":1545667200000,"dateStr":"2018-12-25","id":5566,"priority":0,"status":0,"title":"圣诞节","type":0,"userId":13479},{"completeDate":null,"completeDateStr":"","content":"圣诞夜快乐","date":1545580800000,"dateStr":"2018-12-24","id":5564,"priority":0,"status":0,"title":"圣诞夜","type":0,"userId":13479}] - * offset : 0 - * over : true - * pageCount : 1 - * size : 20 - * total : 2 - */ - - private int curPage; - private int offset; - private boolean over; - private int pageCount; - private int size; - private int total; - private List datas; - - public int getCurPage() { - return curPage; - } - - public void setCurPage(int curPage) { - this.curPage = curPage; - } - - public int getOffset() { - return offset; - } - - public void setOffset(int offset) { - this.offset = offset; - } - - public boolean isOver() { - return over; - } - - public void setOver(boolean over) { - this.over = over; - } - - public int getPageCount() { - return pageCount; - } - - public void setPageCount(int pageCount) { - this.pageCount = pageCount; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public List getDatas() { - return datas; - } - - public void setDatas(List datas) { - this.datas = datas; - } - - public static class DatasBean implements Serializable{ - /** - * completeDate : null - * completeDateStr : - * content : 圣诞节快乐 - * date : 1545667200000 - * dateStr : 2018-12-25 - * id : 5566 - * priority : 0 - * status : 0 - * title : 圣诞节 - * type : 0 - * userId : 13479 - */ - - private Object completeDate; - private String completeDateStr; - private String content; - private long date; - private String dateStr; - private int id; - private int priority; - private int status; - private String title; - private int type; - private int userId; - - public Object getCompleteDate() { - return completeDate; - } - - public void setCompleteDate(Object completeDate) { - this.completeDate = completeDate; - } - - public String getCompleteDateStr() { - return completeDateStr; - } - - public void setCompleteDateStr(String completeDateStr) { - this.completeDateStr = completeDateStr; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public long getDate() { - return date; - } - - public void setDate(long date) { - this.date = date; - } - - public String getDateStr() { - return dateStr; - } - - public void setDateStr(String dateStr) { - this.dateStr = dateStr; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getPriority() { - return priority; - } - - public void setPriority(int priority) { - this.priority = priority; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public int getUserId() { - return userId; - } - - public void setUserId(int userId) { - this.userId = userId; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TodoData.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TodoData.kt new file mode 100644 index 0000000..344add8 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TodoData.kt @@ -0,0 +1,53 @@ +package com.android.learn.base.mmodel + +import java.io.Serializable + +class TodoData: BaseData() { + + + /** + * curPage : 1 + * datas : [{"completeDate":null,"completeDateStr":"","content":"圣诞节快乐","date":1545667200000,"dateStr":"2018-12-25","id":5566,"priority":0,"status":0,"title":"圣诞节","type":0,"userId":13479},{"completeDate":null,"completeDateStr":"","content":"圣诞夜快乐","date":1545580800000,"dateStr":"2018-12-24","id":5564,"priority":0,"status":0,"title":"圣诞夜","type":0,"userId":13479}] + * offset : 0 + * over : true + * pageCount : 1 + * size : 20 + * total : 2 + */ + + var curPage: Int = 0 + var offset: Int = 0 + var isOver: Boolean = false + var pageCount: Int = 0 + var size: Int = 0 + var total: Int = 0 + lateinit var datas: List + + class DatasBean : Serializable { + /** + * completeDate : null + * completeDateStr : + * content : 圣诞节快乐 + * date : 1545667200000 + * dateStr : 2018-12-25 + * id : 5566 + * priority : 0 + * status : 0 + * title : 圣诞节 + * type : 0 + * userId : 13479 + */ + + lateinit var completeDate: Any + lateinit var completeDateStr: String + lateinit var content: String + var date: Long = 0 + lateinit var dateStr: String + var id: Int = 0 + var priority: Int = 0 + var status: Int = 0 + lateinit var title: String + var type: Int = 0 + var userId: Int = 0 + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TreeBean.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TreeBean.java deleted file mode 100644 index a3f694b..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TreeBean.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - - -public class TreeBean implements Serializable { - - /** - * children : [{"children":[],"courseId":13,"id":60,"name":"Android Studio相关","order":1000,"parentChapterId":150,"visible":1},"..."] - * courseId : 13 - * id : 150 - * name : 开发环境 - * order : 1 - * parentChapterId : 0 - * visible : 1 - */ - - private int courseId; - private int id; - private String name; - private int order; - private int parentChapterId; - private int visible; - private List children; - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getParentChapterId() { - return parentChapterId; - } - - public void setParentChapterId(int parentChapterId) { - this.parentChapterId = parentChapterId; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public List getChildren() { - return children; - } - - public void setChildren(List children) { - this.children = children; - } - - public static class ChildrenBean { - /** - * children : [] - * courseId : 13 - * id : 60 - * name : Android Studio相关 - * order : 1000 - * parentChapterId : 150 - * visible : 1 - */ - - private int courseId; - private int id; - private String name; - private int order; - private int parentChapterId; - private int visible; - private List children; - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getParentChapterId() { - return parentChapterId; - } - - public void setParentChapterId(int parentChapterId) { - this.parentChapterId = parentChapterId; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public List getChildren() { - return children; - } - - public void setChildren(List children) { - this.children = children; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TreeBean.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TreeBean.kt new file mode 100644 index 0000000..a45d7ad --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/TreeBean.kt @@ -0,0 +1,45 @@ +package com.android.learn.base.mmodel + +import java.io.Serializable + + +class TreeBean :BaseData(), Serializable { + + /** + * children : [{"children":[],"courseId":13,"id":60,"name":"Android Studio相关","order":1000,"parentChapterId":150,"visible":1},"..."] + * courseId : 13 + * id : 150 + * name : 开发环境 + * order : 1 + * parentChapterId : 0 + * visible : 1 + */ + + var courseId: Int = 0 + var id: Int = 0 + lateinit var name: String + var order: Int = 0 + var parentChapterId: Int = 0 + var visible: Int = 0 + lateinit var children: List + + class ChildrenBean { + /** + * children : [] + * courseId : 13 + * id : 60 + * name : Android Studio相关 + * order : 1000 + * parentChapterId : 150 + * visible : 1 + */ + + var courseId: Int = 0 + var id: Int = 0 + lateinit var name: String + var order: Int = 0 + var parentChapterId: Int = 0 + var visible: Int = 0 + lateinit var children: List<*> + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/WxArticle.java b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/WxArticle.java deleted file mode 100644 index 298592d..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/WxArticle.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.android.learn.base.mmodel; - -import com.google.gson.Gson; - -import java.util.List; - -public class WxArticle { - - - /** - * children : [] - * courseId : 13 - * id : 408 - * name : 鸿洋 - * order : 190000 - * parentChapterId : 407 - * userControlSetTop : false - * visible : 1 - */ - - private int courseId; - private int id; - private String name; - private int order; - private int parentChapterId; - private boolean userControlSetTop; - private int visible; - private List children; - - public static WxArticle objectFromData(String str) { - - return new Gson().fromJson(str, WxArticle.class); - } - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getParentChapterId() { - return parentChapterId; - } - - public void setParentChapterId(int parentChapterId) { - this.parentChapterId = parentChapterId; - } - - public boolean isUserControlSetTop() { - return userControlSetTop; - } - - public void setUserControlSetTop(boolean userControlSetTop) { - this.userControlSetTop = userControlSetTop; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public List getChildren() { - return children; - } - - public void setChildren(List children) { - this.children = children; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/WxArticle.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/WxArticle.kt new file mode 100644 index 0000000..22e0192 --- /dev/null +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/mmodel/WxArticle.kt @@ -0,0 +1,35 @@ +package com.android.learn.base.mmodel + +import com.google.gson.Gson + +class WxArticle:BaseData() { + + + /** + * children : [] + * courseId : 13 + * id : 408 + * name : 鸿洋 + * order : 190000 + * parentChapterId : 407 + * userControlSetTop : false + * visible : 1 + */ + + var courseId: Int = 0 + var id: Int = 0 + lateinit var name: String + var order: Int = 0 + var parentChapterId: Int = 0 + var isUserControlSetTop: Boolean = false + var visible: Int = 0 + lateinit var children: List<*> + + companion object { + + fun objectFromData(str: String): WxArticle { + + return Gson().fromJson(str, WxArticle::class.java) + } + } +} diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/ApiService.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/ApiService.kt index 8e328e9..5f97ae4 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/ApiService.kt +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/thirdframe/retrofit/ApiService.kt @@ -1,16 +1,7 @@ package com.android.learn.base.thirdframe.retrofit -import com.android.learn.base.mmodel.BannerListData -import com.android.learn.base.mmodel.BaseData -import com.android.learn.base.mmodel.BaseResponse -import com.android.learn.base.mmodel.FeedArticleListData -import com.android.learn.base.mmodel.HotKeyData -import com.android.learn.base.mmodel.RegisterLoginData -import com.android.learn.base.mmodel.ProjectListData -import com.android.learn.base.mmodel.TodoData -import com.android.learn.base.mmodel.TreeBean -import com.android.learn.base.mmodel.WxArticle +import com.android.learn.base.mmodel.* import io.reactivex.Observable import retrofit2.http.Field @@ -28,13 +19,13 @@ interface ApiService { val bannerListData: Observable @get:GET("tree/json") - val knowledgeTree: Observable>> + val knowledgeTree: Observable>> @get:GET("hotkey/json") - val hotKey: Observable>> + val hotKey: Observable>> @get:GET("wxarticle/chapters/json") - val wxArticle: Observable>> + val wxArticle: Observable>> @GET("project/list/{page}/json") diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt index 8ad0757..54a4a9b 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ResponseStatusUtil.kt @@ -1,6 +1,7 @@ package com.android.learn.base.utils import com.android.learn.base.mmodel.BaseData +import com.android.learn.base.mmodel.BaseListResponse import com.android.learn.base.mmodel.BaseResponse object ResponseStatusUtil { @@ -11,6 +12,11 @@ object ResponseStatusUtil { Utils.showToast(baseData.errorMsg, true) } + fun handleListResponseStatus( baseData: BaseListResponse>) { + if (baseData == null) return + Utils.showToast(baseData.errorMsg, true) + } + fun handleResponseStatus(baseData: BaseData?) { if (baseData == null) return Utils.showToast(baseData.errorMsg, true) From 44c663e93a36dbcca4a3e9030649d3ff6077ecc4 Mon Sep 17 00:00:00 2001 From: GaoLei Date: Wed, 30 Jan 2019 22:23:39 +0800 Subject: [PATCH 18/38] =?UTF-8?q?=E8=A7=A3=E5=86=B3webview=E5=B4=A9?= =?UTF-8?q?=E6=BA=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AndroidLearnProject/.idea/workspace.xml | 658 +++--------------- .../java/com/android/learn/MainActivity.kt | 70 +- .../learn/activity/ArticleDetailActivity.kt | 2 +- .../learn/activity/FeedbackActivity.kt | 13 +- .../android/learn/mpresenter/HomePresenter.kt | 4 +- .../learn/base/activity/BaseActivity.kt | 11 +- .../android/learn/base/view/Html5Webview.java | 90 +++ .../android/learn/base/view/Html5Webview.kt | 191 ----- .../src/main/res/layout/title_view.xml | 1 + 9 files changed, 195 insertions(+), 845 deletions(-) create mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/Html5Webview.java delete mode 100644 AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/view/Html5Webview.kt diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index 53eb632..9346a65 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -6,54 +6,20 @@ - - - - - - - - - - - - + - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ondest - r.layout.ac - compileSdkVersion - 1.1.60 - implementation kotlin r.layout viewPager @@ -163,7 +90,6 @@ getLayoutId layoutId fun onResume() - initData oncreate initPresenter tv_register_contract_content @@ -178,6 +104,12 @@ matrix getChildren null + onpages + initData + favicon + webview_article + setTitleText + iv_back getString @@ -10664,14 +10596,6 @@ - + @@ -11236,40 +11274,41 @@ + - - - + - - + - + + - + + + + + + + + + + + + + - - - - - - - - - - @@ -11363,6 +11402,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b939ff00bcc866baa3cf0ab24b94551a16213b92 Mon Sep 17 00:00:00 2001 From: GaoLei Date: Thu, 14 Feb 2019 07:16:52 +0800 Subject: [PATCH 20/38] =?UTF-8?q?=E5=88=A0=E9=99=A4code=5Fbackup=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/code_backup/MainActivity.java | 671 ------------------ .../activity/ArticleDetailActivity.java | 84 --- .../activity/FeedbackActivity.java | 297 -------- .../activity/FontSizeActivity.java | 156 ---- .../activity/KnowledgeChildActivity.java | 165 ----- .../activity/LanguageActivity.java | 113 --- .../activity/MyCollectActivity.java | 151 ---- .../code_backup/activity/MyTodoActivity.java | 153 ---- .../activity/RegisterLoginActivity.java | 175 ----- .../activity/SearchResultActivity.java | 156 ---- .../code_backup/activity/SettingActivity.java | 205 ------ .../code_backup/activity/SplashActivity.java | 76 -- .../code_backup/activity/TodoAddActivity.java | 119 ---- .../activity/TodoEditActivity.java | 124 ---- .../adapter/ArticleQuickAdapter.java | 55 -- .../adapter/DividerItemDecoration.java | 94 --- .../adapter/HorizontalPagerAdapter.java | 95 --- .../code_backup/adapter/MainTabAdapter.java | 41 -- .../adapter/ProjectQuickAdapter.java | 32 - .../adapter/SearchRecordAdapter.java | 30 - .../code_backup/adapter/TodoQuickAdapter.java | 48 -- .../code_backup/fragment/HomeFragment.java | 268 ------- .../fragment/KnowledgeFragment.java | 79 --- .../code_backup/fragment/ProjectFragment.java | 126 ---- .../code_backup/fragment/TodoFragment.java | 229 ------ .../code_backup/fragment/UserFragment.java | 139 ---- .../code_backup/fragment/WechatFragment.java | 117 --- .../fragment/WechatSubFragment.java | 191 ----- .../mcontract/CollectContract.java | 26 - .../code_backup/mcontract/HomeContract.java | 39 - .../mcontract/KnowledgeChildContract.java | 32 - .../mcontract/KnowledgeContract.java | 22 - .../mcontract/MainActivityContract.java | 26 - .../mcontract/ProjectContract.java | 24 - .../mcontract/RegisterLoginContract.java | 25 - .../code_backup/mcontract/SearchContract.java | 35 - .../mcontract/SplashLoginContract.java | 25 - .../mcontract/TodoAddContract.java | 24 - .../code_backup/mcontract/TodoContract.java | 34 - .../mcontract/TodoEditContract.java | 25 - .../mcontract/UserInfoContract.java | 18 - .../code_backup/mcontract/WechatContract.java | 28 - .../mcontract/WechatSubContract.java | 37 - .../mpresenter/CollectPresenter.java | 52 -- .../code_backup/mpresenter/HomePresenter.java | 120 ---- .../mpresenter/KnowledgeChildPresenter.java | 88 --- .../mpresenter/KnowledgePresenter.java | 45 -- .../mpresenter/MainActivityPresenter.java | 41 -- .../mpresenter/ProjectPresenter.java | 52 -- .../mpresenter/RegisterLoginPresenter.java | 46 -- .../mpresenter/SearchPresenter.java | 75 -- .../mpresenter/SplashLoginPresenter.java | 28 - .../mpresenter/TodoAddPresenter.java | 33 - .../mpresenter/TodoEditPresenter.java | 35 - .../code_backup/mpresenter/TodoPresenter.java | 80 --- .../mpresenter/UserInfoPresenter.java | 26 - .../mpresenter/WechatPresenter.java | 34 - .../mpresenter/WechatSubPresenter.java | 80 --- .../code_backup/view/CustomViewPager.java | 63 -- .../code_backup/view/SearchViewUtils.java | 105 --- .../code_backup/view/fontsliderbar/Bar.java | 134 ---- .../view/fontsliderbar/FontSliderBar.java | 421 ----------- .../code_backup/view/fontsliderbar/Thumb.java | 101 --- .../learn/base/activity/BaseActivity.java | 242 ------- .../learn/base/activity/BaseMvpActivity.java | 40 -- .../activity/BasePermisssionActivity.java | 88 --- .../base/application/CustomApplication.java | 142 ---- .../android/learn/base/colorful/Colorful.java | 162 ----- .../base/colorful/setter/TextColorSetter.java | 28 - .../setter/ViewBackgroundColorSetter.java | 28 - .../setter/ViewBackgroundDrawableSetter.java | 39 - .../base/colorful/setter/ViewGroupSetter.java | 193 ----- .../base/colorful/setter/ViewSetter.java | 70 -- .../android/learn/base/db/DBManager.java | 130 ---- .../android/learn/base/db/SearchRecord.java | 33 - .../learn/base/email/JSSEProvider.java | 24 - .../android/learn/base/email/MailSender.java | 183 ----- .../android/learn/base/email/ToastUtils.java | 24 - .../learn/base/event/CancelCollectEvent.java | 11 - .../learn/base/event/ChangeNightEvent.java | 5 - .../android/learn/base/event/LoginEvent.java | 5 - .../android/learn/base/event/LogoutEvent.java | 5 - .../learn/base/event/RestartMainEvent.java | 10 - .../learn/base/event/UpdateDoneEvent.java | 6 - .../learn/base/event/UpdateTodoEvent.java | 6 - .../learn/base/fragment/BaseFragment.java | 103 --- .../learn/base/fragment/BaseLazyFragment.java | 66 -- .../learn/base/fragment/BaseMvpFragment.java | 82 --- .../learn/base/mmodel/BannerListData.java | 31 - .../android/learn/base/mmodel/BaseData.java | 35 - .../learn/base/mmodel/BaseResponse.java | 41 -- .../base/mmodel/FeedArticleListData.java | 247 ------- .../android/learn/base/mmodel/HotKeyData.java | 59 -- .../learn/base/mmodel/ProjectListData.java | 289 -------- .../learn/base/mmodel/RegisterLoginData.java | 36 - .../android/learn/base/mmodel/TodoData.java | 198 ------ .../android/learn/base/mmodel/TreeBean.java | 158 ----- .../android/learn/base/mmodel/WxArticle.java | 98 --- .../learn/base/mpresenter/BasePresenter.java | 47 -- .../android/learn/base/mview/BaseView.java | 8 - .../base/thirdframe/glide/ImageLoader.java | 43 -- .../thirdframe/glide/MyAppGlideModule.java | 50 -- .../base/thirdframe/retrofit/ApiService.java | 101 --- .../CustomizeGsonConverterFactory.java | 50 -- .../CustomizeGsonRequestBodyConverter.java | 43 -- .../CustomizeGsonResponseBodyConverter.java | 42 -- .../retrofit/RetrofitDynamicProvider.java | 83 --- .../thirdframe/retrofit/RetrofitProvider.java | 94 --- .../interceptor/DefaultHeaderInterceptor.java | 23 - .../interceptor/GzipRequestInterceptor.java | 48 -- .../interceptor/HttpLoggingInterceptor.java | 44 -- .../interceptor/OfflineCacheInterceptor.java | 38 - .../interceptor/OnlineCacheInterceptor.java | 25 - .../interceptor/ParamsEncryptInterceptor.java | 100 --- .../interceptor/ProgressInterceptor.java | 41 -- .../interceptor/RetryIntercepter.java | 30 - .../retrofit/interceptor/SignInterceptor.java | 160 ----- .../interceptor/TokenInterceptor.java | 70 -- .../interceptor/UrlResetInterceptor.java | 47 -- .../interceptor/util/ProgressListener.java | 16 - .../util/ProgressResponseBody.java | 86 --- .../base/thirdframe/rxjava/BaseObserver.java | 72 -- .../learn/base/utils/CrashHandler.java | 164 ----- .../learn/base/utils/CustomCrashHandler.java | 151 ---- .../android/learn/base/utils/DialogUtil.java | 16 - .../learn/base/utils/ErrorLogSave.java | 191 ----- .../learn/base/utils/ExitAppUtils.java | 36 - .../android/learn/base/utils/JsonUtil.java | 245 ------- .../learn/base/utils/KeyboardUtils.java | 32 - .../learn/base/utils/LanguageUtil.java | 114 --- .../android/learn/base/utils/LogUtil.java | 67 -- .../android/learn/base/utils/NetUtils.java | 76 -- .../learn/base/utils/PermissionUtil.java | 130 ---- .../learn/base/utils/ResponseStatusUtil.java | 17 - .../android/learn/base/utils/SPUtils.java | 104 --- .../android/learn/base/utils/ScreenUtils.java | 145 ---- .../android/learn/base/utils/SystemUtil.java | 69 -- .../android/learn/base/utils/Utils.java | 244 ------- .../learn/base/utils/account/UserUtil.java | 34 - .../learn/base/view/CircleImageView.java | 73 -- .../learn/base/view/CustomProgressDialog.java | 58 -- .../android/learn/base/view/HeaderView.java | 4 - .../android/learn/base/view/Html5Webview.java | 219 ------ .../android/learn/base/view/ProgressView.java | 70 -- .../android/learn/base/view/TitleView.java | 38 - .../view/colorfultab/ColorClipTabLayout.java | 215 ------ .../view/colorfultab/ColorClipTestView.java | 75 -- .../base/view/colorfultab/ColorClipView.java | 234 ------ .../learn/base/xskin/CustomTitleView.java | 138 ---- .../xskin/CustomViewTextColorResDeployer.java | 26 - .../learn/base/xskin/ExtraAttrRegister.java | 27 - .../base/xskin/ViewBackgroundStyleParser.java | 66 -- .../bean/TalkBackChineseWordVo.java | 33 - .../android/speechdemo/bean/TalkBackVo.java | 70 -- .../speechdemo/bean/TalkBackWordsVo.java | 35 - .../android/speechdemo/xf/JsonParser.java | 117 --- .../speechdemo/xf/SettingTextWatcher.java | 71 -- 157 files changed, 13950 deletions(-) delete mode 100644 AndroidLearnProject/app/src/main/code_backup/MainActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/ArticleDetailActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/FeedbackActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/FontSizeActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/KnowledgeChildActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/LanguageActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/MyCollectActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/MyTodoActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/RegisterLoginActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/SearchResultActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/SettingActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/activity/SplashActivity.java delete mode 100755 AndroidLearnProject/app/src/main/code_backup/activity/TodoAddActivity.java delete mode 100755 AndroidLearnProject/app/src/main/code_backup/activity/TodoEditActivity.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/ArticleQuickAdapter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/DividerItemDecoration.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/HorizontalPagerAdapter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/MainTabAdapter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/ProjectQuickAdapter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/SearchRecordAdapter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/adapter/TodoQuickAdapter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/HomeFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/KnowledgeFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/ProjectFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/TodoFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/WechatFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/fragment/WechatSubFragment.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/CollectContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/HomeContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeChildContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/MainActivityContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/ProjectContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/RegisterLoginContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/SearchContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/SplashLoginContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/TodoAddContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/TodoContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/TodoEditContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/UserInfoContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/WechatContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mcontract/WechatSubContract.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/CollectPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/HomePresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgeChildPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgePresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/MainActivityPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/ProjectPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/RegisterLoginPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/SearchPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/SplashLoginPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoAddPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoEditPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/UserInfoPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatSubPresenter.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/view/CustomViewPager.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/view/SearchViewUtils.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Bar.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/FontSliderBar.java delete mode 100644 AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Thumb.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java delete mode 100644 AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java diff --git a/AndroidLearnProject/app/src/main/code_backup/MainActivity.java b/AndroidLearnProject/app/src/main/code_backup/MainActivity.java deleted file mode 100644 index 62f8668..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/MainActivity.java +++ /dev/null @@ -1,671 +0,0 @@ -package com.android.learn; - -import android.Manifest; -import android.content.Intent; -import android.content.res.Configuration; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.os.Bundle; -import android.os.Environment; -import android.os.Handler; -import android.support.design.widget.TabLayout; -import android.support.v4.app.Fragment; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.text.Spannable; -import android.text.SpannableStringBuilder; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.text.TextUtils; -import android.text.style.ForegroundColorSpan; -import android.util.Log; -import android.util.TypedValue; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.inputmethod.EditorInfo; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import android.widget.Toast; - -import com.android.learn.activity.SearchResultActivity; -import com.android.learn.adapter.MainTabAdapter; -import com.android.learn.adapter.SearchRecordAdapter; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.db.DBManager; -import com.android.learn.base.db.SearchRecord; -import com.android.learn.base.event.ChangeNightEvent; -import com.android.learn.base.event.RestartMainEvent; -import com.android.learn.base.mmodel.HotKeyData; -import com.android.learn.base.utils.KeyboardUtils; -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.PermissionUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.ScreenUtils; -import com.android.learn.base.utils.Utils; -import com.android.learn.base.view.TitleView; -import com.android.learn.fragment.HomeFragment; -import com.android.learn.fragment.KnowledgeFragment; -import com.android.learn.fragment.ProjectFragment; -import com.android.learn.fragment.UserFragment; -import com.android.learn.fragment.WechatFragment; -import com.android.learn.mcontract.MainActivityContract; -import com.android.learn.mpresenter.MainActivityPresenter; -import com.android.learn.view.CustomViewPager; -import com.android.learn.view.SearchViewUtils; -import com.android.speechdemo.xf.JsonParser; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.iflytek.cloud.InitListener; -import com.iflytek.cloud.RecognizerResult; -import com.iflytek.cloud.SpeechConstant; -import com.iflytek.cloud.SpeechError; -import com.iflytek.cloud.SpeechRecognizer; -import com.iflytek.cloud.ui.RecognizerDialog; -import com.iflytek.cloud.ui.RecognizerDialogListener; -import com.iflytek.sunflower.FlowerCollector; -import com.opensource.svgaplayer.SVGADrawable; -import com.opensource.svgaplayer.SVGADynamicEntity; -import com.opensource.svgaplayer.SVGAImageView; -import com.opensource.svgaplayer.SVGAParser; -import com.opensource.svgaplayer.SVGAVideoEntity; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; -import org.jetbrains.annotations.NotNull; -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.lankton.flowlayout.FlowLayout; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; -import kotlin.jvm.functions.Function2; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; - -public class MainActivity extends BaseMvpActivity implements MainActivityContract.View { - - private ArrayList mFragments; - private ArrayList titles; - - @BindView(R.id.viewPager) - CustomViewPager viewPager; - @BindView(R.id.tabLayout) - TabLayout tabLayout; - @BindView(R.id.title) - TextView title; - @BindView(R.id.header_layout) - TitleView header_layout; - @BindView(R.id.iv_svga) - SVGAImageView iv_svga; - @BindView(R.id.cardview_search) - LinearLayout cardview_search; - @BindView(R.id.et_search) - EditText et_search; - @BindView(R.id.iv_search) - ImageView iv_search; - @BindView(R.id.iv_search_back) - ImageView iv_search_back; - @BindView(R.id.history_recycleview) - RecyclerView history_recycleview; - @BindView(R.id.title_view_divider) - View title_view_divider; - @BindView(R.id.flowlayout) - FlowLayout flowlayout; - HomeFragment homeFragment; - ProjectFragment projectFragment; - boolean isSearching; - SearchRecordAdapter searchRecordAdapter; - String TAG = "MainActivity"; - private SpeechRecognizer mIat; - private RecognizerDialog mIatDialog; - private Toast mToast; - // 用HashMap存储听写结果 - private HashMap mIatResults = new LinkedHashMap(); - // 引擎类型 这里我只考虑了一种引擎类型 :云端的 - private String mCLOUDType = SpeechConstant.TYPE_CLOUD; - - @Override - protected int getLayoutId() { - return R.layout.activity_main; - } - - @Override - protected void initData(Bundle bundle) { - initView(); - requestPermission(); - EventBus.getDefault().register(this); - } - - protected void initView() { - mFragments = new ArrayList(); - homeFragment = new HomeFragment(); - projectFragment = new ProjectFragment(); - mFragments.add(homeFragment); - mFragments.add(projectFragment); - mFragments.add(new KnowledgeFragment()); - mFragments.add(new WechatFragment()); - mFragments.add(new UserFragment()); - - titles = new ArrayList(); - titles.add(getString(R.string.home)); - titles.add(getString(R.string.project)); - titles.add(getString(R.string.knowledge)); - titles.add(getString(R.string.public_account)); - titles.add(getString(R.string.mine)); - - MainTabAdapter adapter = new MainTabAdapter(getSupportFragmentManager(), mFragments); - viewPager.setOffscreenPageLimit(mFragments.size()); - viewPager.setAdapter(adapter); - viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); - //将TabLayout和ViewPager关联起来 - tabLayout.setupWithViewPager(viewPager); - initTab(); - initSearchRecord(); - iv_search.setVisibility(View.VISIBLE); - Boolean isNightMode = (Boolean) SPUtils.getParam(this, "nightMode", new Boolean(false)); - if (isNightMode) { - title_view_divider.setVisibility(View.VISIBLE); - } else { - title_view_divider.setVisibility(View.GONE); - } - - et_search.setOnEditorActionListener(new TextView.OnEditorActionListener() { - @Override - public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if (actionId == EditorInfo.IME_ACTION_SEARCH) {//搜索按键action - beginSearch(); - } - return false; - } - }); - - } - - private void beginSearch() { - String content = et_search.getText().toString(); - if (TextUtils.isEmpty(content)) { - Utils.showToast(getString(R.string.search_content_no), true); - } - - Bundle bundle = new Bundle(); - bundle.putString("key", content); - SearchResultActivity.startActivity(MainActivity.this, bundle); - DBManager dbManager = DBManager.getInstance(MainActivity.this); - SearchRecord searchRecord = new SearchRecord(); - searchRecord.setName(content); - dbManager.insertUser(searchRecord); - et_search.setText(""); - KeyboardUtils.hideKeyboard(et_search); - } - - private void initSearchRecord() { - ArrayList list = new ArrayList<>(); - searchRecordAdapter = new SearchRecordAdapter(this, list); - history_recycleview.setLayoutManager(new LinearLayoutManager(this)); - history_recycleview.setAdapter(searchRecordAdapter); - searchRecordAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Bundle bundle = new Bundle(); - bundle.putString("key", searchRecordAdapter.getData().get(position).getName()); - SearchResultActivity.startActivity(MainActivity.this, bundle); - } - }); - } - - /** - * 设置添加Tab - */ - private void initTab() { - - tabLayout.getTabAt(0).setCustomView(R.layout.tab_home); - tabLayout.getTabAt(1).setCustomView(R.layout.tab_project); - tabLayout.getTabAt(2).setCustomView(R.layout.tab_knowledge); - tabLayout.getTabAt(3).setCustomView(R.layout.tab_navigation); - tabLayout.getTabAt(4).setCustomView(R.layout.tab_mine); - - - tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { - //标签选中之后执行的方法 - @Override - public void onTabSelected(TabLayout.Tab tab) { - int position = tab.getPosition(); - title.setText(titles.get(position)); - - if (position == 4) header_layout.setVisibility(View.GONE); - else header_layout.setVisibility(View.VISIBLE); - } - - //标签没选中 - @Override - public void onTabUnselected(TabLayout.Tab tab) { - - } - - @Override - public void onTabReselected(TabLayout.Tab tab) { - - } - }); - Boolean isRestartMain = (Boolean) SPUtils.getParam(this, "isRestartMain", new Boolean(false)); - LogUtil.d(TAG, "isRestartMain:" + isRestartMain); - if (isRestartMain) { - //切换语言或切换字体大小,重启MainActivity则会走这里 - viewPager.setCurrentItem(4); -// tabLayout.getTabAt(4).getCustomView().setSelected(true); - SPUtils.setParam(MainActivity.this, "isRestartMain", new Boolean(false)); - } else { - //默认选中的Tab - viewPager.setCurrentItem(0); -// tabLayout.getTabAt(0).getCustomView().setSelected(true); - loadSVGAAnimation(); - - } - - } - - @OnClick({R.id.title, R.id.iv_svga, R.id.iv_search_back, R.id.iv_search, R.id.tv_search_clear, R.id.iv_speech_search}) - public void onClick(View view) { - switch (view.getId()) { - case R.id.title: - int index = viewPager.getCurrentItem(); - if (index == 0) - homeFragment.scrollToTop(); - if (index == 1) - projectFragment.scrollToTop(); - break; - - case R.id.iv_svga: - iv_svga.stopAnimation(); - iv_svga.setVisibility(View.GONE); - break; - case R.id.iv_search_back: - SearchViewUtils.handleToolBar(getApplicationContext(), cardview_search, et_search); - break; - case R.id.iv_search: - SearchViewUtils.handleToolBar(getApplicationContext(), cardview_search, et_search); - isSearching = true; - break; - case R.id.tv_search_clear: - searchRecordAdapter.getData().clear(); - searchRecordAdapter.notifyDataSetChanged(); - DBManager.getInstance(this).deleteAll(); - break; - case R.id.iv_speech_search: - KeyboardUtils.hideKeyboard(et_search); - requestRecordAudioPermission(); - break; - } - - } - - public void requestPermission() { - requestPermission(this, new PermissionUtil.RequestPermissionCallBack() { - - @Override - public void granted() { - - } - - @Override - public void denied() { - } - }, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE}); - } - - public void onRestart() { - super.onRestart(); - //跳转到设置界面后返回,重新检查权限 - requestPermission(); - } - - public void onStart() { - super.onStart(); - List recordList = DBManager.getInstance(this).queryUserList(); - searchRecordAdapter.getData().clear(); - searchRecordAdapter.addData(recordList); - - } - - // 用来计算返回键的点击间隔时间 - private long exitTime = 0; - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK - && event.getAction() == KeyEvent.ACTION_DOWN) { - if (isSearching) { - SearchViewUtils.handleToolBar(getApplicationContext(), cardview_search, et_search); - isSearching = false; - return false; - } - if ((System.currentTimeMillis() - exitTime) > 2000) { - //弹出提示,可以有多种方式 - Toast.makeText(getApplicationContext(), getString(R.string.press_exit), Toast.LENGTH_SHORT).show(); - exitTime = System.currentTimeMillis(); - } else { - finish(); - } - return true; - } - - return super.onKeyDown(keyCode, event); - } - - - private void loadSVGAAnimation() { - SVGAParser parser = new SVGAParser(this); - resetDownloader(parser); - try { - parser.parse(new URL("https://github.com/yyued/SVGA-Samples/blob/master/kingset.svga?raw=true"), new SVGAParser.ParseCompletion() { - @Override - public void onComplete(@NotNull SVGAVideoEntity videoItem) { - SVGADrawable drawable = new SVGADrawable(videoItem, requestDynamicItemWithSpannableText()); - iv_svga.setImageDrawable(drawable); - iv_svga.startAnimation(); - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - /** - *要执行的操作 - */ - iv_svga.stopAnimation(); - iv_svga.setVisibility(View.GONE); - } - }, 5000); - - } - - @Override - public void onError() { - - } - }); - } catch (Exception e) { - System.out.print(true); - } - } - - /** - * 你可以设置富文本到 ImageKey 相关的元素上 - * 富文本是会自动换行的,不要设置过长的文本 - * - * @return - */ - private SVGADynamicEntity requestDynamicItemWithSpannableText() { - SVGADynamicEntity dynamicEntity = new SVGADynamicEntity(); - SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(getString(R.string.welcome_learn_android)); - spannableStringBuilder.setSpan(new ForegroundColorSpan(Color.YELLOW), 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); - TextPaint textPaint = new TextPaint(); - textPaint.setColor(Color.WHITE); - textPaint.setTextSize(28); - dynamicEntity.setDynamicText(new StaticLayout( - spannableStringBuilder, - 0, - spannableStringBuilder.length(), - textPaint, - 0, - android.text.Layout.Alignment.ALIGN_CENTER, - 1.0f, - 0.0f, - false - ), "banner"); - dynamicEntity.setDynamicDrawer(new Function2() { - @Override - public Boolean invoke(Canvas canvas, Integer frameIndex) { - Paint aPaint = new Paint(); - aPaint.setColor(Color.WHITE); - canvas.drawCircle(50, 54, frameIndex % 5, aPaint); - return false; - } - }, "banner"); - return dynamicEntity; - } - - /** - * 设置下载器,这是一个可选的配置项。 - * - * @param parser - */ - private void resetDownloader(SVGAParser parser) { - parser.setFileDownloader(new SVGAParser.FileDownloader() { - @Override - public void resume(final URL url, final Function1 complete, final Function1 failure) { - new Thread(new Runnable() { - @Override - public void run() { - OkHttpClient client = new OkHttpClient(); - Request request = new Request.Builder().url(url).get().build(); - try { - Response response = client.newCall(request).execute(); - complete.invoke(response.body().byteStream()); - } catch (IOException e) { - e.printStackTrace(); - failure.invoke(e); - } - } - }).start(); - } - }); - } - - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(RestartMainEvent event) { - Intent intent = getIntent(); - overridePendingTransition(0, 0); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - finish(); - overridePendingTransition(0, 0); - startActivity(intent); - event.activity.finish(); - SPUtils.setParam(MainActivity.this, "isRestartMain", new Boolean(true)); - - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(ChangeNightEvent event) { - Boolean isNightMode = (Boolean) SPUtils.getParam(this, "nightMode", new Boolean(false)); - if (isNightMode) { - title_view_divider.setVisibility(View.VISIBLE); - } else { - title_view_divider.setVisibility(View.GONE); - } - setStatusBar(); - } - - public void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - } - - @Override - public MainActivityPresenter initPresenter() { - return new MainActivityPresenter(); - } - - @Override - protected void loadData() { - mPresenter.getHotKey(); - } - - - @Override - public void showHotKey(List list) { - addFolowLayoutView(list); - - } - - private void addFolowLayoutView(List list) { - int length = list.size(); - for (int i = 0; i < list.size(); i++) { - final HotKeyData hotKeyData = list.get(i); - int ranHeight = ScreenUtils.dp2px(this, 30); - ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ranHeight); - lp.setMargins(ScreenUtils.dp2px(this, 10), 0, ScreenUtils.dp2px(this, 10), 0); - final TextView tv = new TextView(this); - tv.setPadding(ScreenUtils.dp2px(this, 15), 0, ScreenUtils.dp2px(this, 15), 0); - tv.setTextColor(Color.parseColor("#FF3030")); - tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); - int index = (int) (Math.random() * length); - tv.setText(hotKeyData.getName()); - tv.setGravity(Gravity.CENTER_VERTICAL); - tv.setLines(1); - tv.setBackgroundResource(R.drawable.bg_tag); - flowlayout.addView(tv, lp); - tv.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Bundle bundle = new Bundle(); - bundle.putString("key", tv.getText().toString()); - SearchResultActivity.startActivity(MainActivity.this, bundle); - DBManager dbManager = DBManager.getInstance(MainActivity.this); - SearchRecord searchRecord = new SearchRecord(); - searchRecord.setName(tv.getText().toString()); - dbManager.insertUser(searchRecord); - } - }); - } - flowlayout.relayoutToAlign(); - } - - public void requestRecordAudioPermission() { - requestPermission(this, new PermissionUtil.RequestPermissionCallBack() { - @Override - public void granted() { - // 使用SpeechRecognizer对象,可根据回调消息自定义界面;这种方式主要是考虑到了,没有听写Dialog的时候,进行的听写监听 - mIat = SpeechRecognizer.createRecognizer(MainActivity.this, mInitListener); - Log.i(TAG, "onCreate: mIat == null ?" + mIat); - //SpeechRecognizer对象 null 的原因:一、 so 文件放错了位置 二、so文件与自己的SDK不匹配 3、Application中没有配置好appid - // 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer - // 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置显示RecognizerDialog需要的布局文件和图片资源 - mIatDialog = new RecognizerDialog(MainActivity.this, mInitListener); - // 移动数据分析,收集开始听写事件 - FlowerCollector.onEvent(MainActivity.this, "iat_recognize"); - - et_search.setText("");// 清空显示内容 - mIatResults.clear(); - // 设置参数 - setParam(); - - // 显示听写对话框 - mIatDialog.setListener(mRecognizerDialogListener); - mIatDialog.show(); - Utils.showToast(getString(R.string.begin_speech), true, Gravity.BOTTOM); - } - - @Override - public void denied() { - } - }, new String[]{Manifest.permission.RECORD_AUDIO}); - } - - public void setParam() { - // 清空参数 - mIat.setParameter(SpeechConstant.PARAMS, null); - - // 设置听写引擎 注意:这里我只设置云端的方式!后面再考虑本地和混合的类型 - mIat.setParameter(SpeechConstant.ENGINE_TYPE, mCLOUDType); - // 设置返回结果格式 - mIat.setParameter(SpeechConstant.RESULT_TYPE, "json"); - - // 设置语言 - mIat.setParameter(SpeechConstant.LANGUAGE, "cn"); - mIat.setParameter(SpeechConstant.ACCENT, "mandarin"); - - // 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理 - mIat.setParameter(SpeechConstant.VAD_BOS, "4000"); - - // 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音 - mIat.setParameter(SpeechConstant.VAD_EOS, "1000"); - - // 设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点 - mIat.setParameter(SpeechConstant.ASR_PTT, "0"); - - // 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限 - // 注:AUDIO_FORMAT参数语记需要更新版本才能生效 - mIat.setParameter(SpeechConstant.AUDIO_FORMAT, "wav"); - mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/iat.wav"); - } - - private InitListener mInitListener = new InitListener() { - @Override - public void onInit(int code) { - } - }; - /** - * 听写UI监听器 - */ - private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() { - /** - * 识别成功时回调数据 - */ - public void onResult(RecognizerResult results, boolean isLast) { - LogUtil.d(TAG, "printResult(results)------------"); - printResult(results); - } - - /** - * 识别回调错误. - */ - public void onError(SpeechError error) { - - } - }; - - /** - * 成功时显示说话的文字 - * - * @param results - */ - private void printResult(RecognizerResult results) { - String text = JsonParser.parseIatResult(results.getResultString()); - - String sn = null; - // 读取json结果中的sn字段 - try { - JSONObject resultJson = new JSONObject(results.getResultString()); - sn = resultJson.optString("sn"); - } catch (JSONException e) { - e.printStackTrace(); - } - - mIatResults.put(sn, text); - - StringBuffer resultBuffer = new StringBuffer(); - for (String key : mIatResults.keySet()) { - resultBuffer.append(mIatResults.get(key)); - } - - et_search.setText(resultBuffer.toString()); - //考虑到TextView只能显示文字 ,后面还要测试文字转语音,所以换EditText控件 - et_search.setSelection(et_search.length()); - KeyboardUtils.showKeyboard(et_search); - LogUtil.d(TAG, "printResult(results)------------resultBuffer.toString():" + resultBuffer.toString()); - if (et_search.getText().toString().length() > 0 && !"SearchResultActivity".equals(Utils.getTopActivity(this))) - beginSearch(); - } - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - // 在这里添加屏幕切换后的操作 - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/ArticleDetailActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/ArticleDetailActivity.java deleted file mode 100644 index ccad459..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/ArticleDetailActivity.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseActivity; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.view.Html5Webview; - -import butterknife.BindView; -import butterknife.OnClick; - -public class ArticleDetailActivity extends BaseMvpActivity { - - @BindView(R.id.webview_article) - Html5Webview webview_article; - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.iv_search) - ImageView iv_search; - String url; - public static void startActivity(Context context, Bundle bundle) { - Intent intent = new Intent(context, ArticleDetailActivity.class); - - if (bundle != null) - intent.putExtras(bundle); - context.startActivity(intent); - } - @Override - protected int getLayoutId() { - return R.layout.activity_article_detail; - } - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.article_detail)); - iv_back.setVisibility(View.VISIBLE); - url = bundle.getString("url"); - webview_article.loadUrl(url); - iv_search.setVisibility(View.VISIBLE); - iv_search.setImageResource(R.drawable.icon_share); - } - - - - @OnClick({R.id.iv_search}) - public void click(View view) { - switch (view.getId()) { - case R.id.iv_search: - share("分享地址", url); - } - } - - private void share(String title, String content) { - Intent share_intent = new Intent(); - share_intent.setAction(Intent.ACTION_SEND);//设置分享行为 - share_intent.setType("text/plain");//设置分享内容的类型 - share_intent.putExtra(Intent.EXTRA_SUBJECT, title);//添加分享内容标题 - share_intent.putExtra(Intent.EXTRA_TEXT, content);//添加分享内容 - //创建分享的Dialog - share_intent = Intent.createChooser(share_intent, "分享"); - startActivity(share_intent); - } - - @Override - public BasePresenter initPresenter() { - return null; - } - - @Override - protected void loadData() { - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/FeedbackActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/FeedbackActivity.java deleted file mode 100644 index 0e6ebdb..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/FeedbackActivity.java +++ /dev/null @@ -1,297 +0,0 @@ -package com.android.learn.activity; - -import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.ContentUris; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.os.Environment; -import android.provider.DocumentsContract; -import android.provider.MediaStore; -import android.util.Log; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.TextView; - - -import com.android.learn.R; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.email.MailSender; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.Utils; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class FeedbackActivity extends BaseMvpActivity { - - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.send_btn) - TextView send_btn; - @BindView(R.id.add_attachment) - TextView add_attachment; - @BindView(R.id.file_dir) - TextView file_dir; - - @BindView(R.id.et_email_title) - EditText et_email_title; - @BindView(R.id.et_email_content) - EditText et_email_content; - private final int FILECHOOSER_RESULTCODE = 1; - private String sendEmail = "gaoleiemail@163.com";//发送方邮件 - private String sendEmaiPassword = "gl1201";//发送方邮箱密码(或授权码) - private String receiveEmail = "gaoleiandroid@163.com";//接收方邮件 - private String file_path = null; - - - public static void startActivity(Context context) { - Intent intent = new Intent(context, FeedbackActivity.class); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_help_feedback; - } - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.help_feedback)); - iv_back.setVisibility(View.VISIBLE); - } - - @Override - public BasePresenter initPresenter() { - return null; - } - - @Override - protected void loadData() { - - } - - @OnClick({R.id.send_btn, R.id.add_attachment}) - public void click(View view) { - switch (view.getId()) { - case R.id.send_btn: - SenderRunnable senderRunnable = new SenderRunnable(sendEmail, sendEmaiPassword); - String sendTitle = et_email_title.getText().toString(); - String sendContent = et_email_content.getText().toString(); - if ("".equals(sendTitle.trim())) { - Utils.showToast(getString(R.string.please_input_contact), true); - return; - } - if ("".equals(sendContent.trim())) { - Utils.showToast(getString(R.string.please_input_content), true); - return; - } - senderRunnable.setMail(sendTitle, sendContent, - receiveEmail, file_path); - new Thread(senderRunnable).start(); -// sendEmail(); - break; - case R.id.add_attachment: - showFileChooser(); - break; - } - } - - - private void showFileChooser() { - Intent i = new Intent(Intent.ACTION_GET_CONTENT); - i.addCategory(Intent.CATEGORY_OPENABLE); - i.setType("image/*"); - startActivityForResult(Intent.createChooser(i, "File Chooser"), - FILECHOOSER_RESULTCODE); - } - - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - Uri uri = data.getData(); - - file_path = getPathByUri4kitkat(this, uri); - Log.d("gaolei", "file_path---------------" + file_path); - file_dir.setText(file_path); - - } - super.onActivityResult(requestCode, resultCode, data); - } - - class SenderRunnable implements Runnable { - - private String user; - private String password; - private String subject; - private String body; - private String receiver; - private MailSender sender; - private String attachment; - - public SenderRunnable(String user, String password) { - this.user = user; - this.password = password; - sender = new MailSender(user, password); - String mailhost = user.substring(user.lastIndexOf("@") + 1, - user.lastIndexOf(".")); - if (!mailhost.equals("gmail")) { - mailhost = "smtp." + mailhost + ".com"; - Log.i("hello", mailhost); - sender.setMailhost(mailhost); - } - } - - public void setMail(String subject, String body, String receiver, - String attachment) { - this.subject = subject; - this.body = body; - this.receiver = receiver; - this.attachment = attachment; - } - - public void run() { - // TODO Auto-generated method stub - try { - sender.sendMail(subject, body, user, receiver, attachment); - Utils.showToast(getString(R.string.feedback_send_success), false); - runOnUiThread(new Runnable() { - @Override - public void run() { - finish(); - } - }); - } catch (Exception e) { - // TODO Auto-generated catch block - if (e.getMessage() != null) - Utils.showToast(getString(R.string.feedback_send_fail), false); - e.printStackTrace(); - } finally { - finish(); - } - } - } - - // 专为Android4.4设计的从Uri获取文件绝对路径,以前的方法已不好使了。targetSdkVersion 22;如果targetSdkVersion>=23怎需要动态获取WRITE_EXTERNAL_STORAGE权限;如果targetSdkVersion>=24 则可能需要用到FileProvider - @SuppressLint("NewApi") - public static String getPathByUri4kitkat(final Context context, final Uri uri) { - final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; - // DocumentProvider - if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { - if (isExternalStorageDocument(uri)) {// ExternalStorageProvider - final String docId = DocumentsContract.getDocumentId(uri); - final String[] split = docId.split(":"); - final String type = split[0]; - if ("primary".equalsIgnoreCase(type)) { - return Environment.getExternalStorageDirectory() + "/" + split[1]; - } - } else if (isDownloadsDocument(uri)) {// DownloadsProvider - final String id = DocumentsContract.getDocumentId(uri); - final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), - Long.valueOf(id)); - return getDataColumn(context, contentUri, null, null); - } else if (isMediaDocument(uri)) {// MediaProvider - final String docId = DocumentsContract.getDocumentId(uri); - final String[] split = docId.split(":"); - final String type = split[0]; - Uri contentUri = null; - if ("image".equals(type)) { - contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; - } else if ("video".equals(type)) { - contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; - } else if ("audio".equals(type)) { - contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; - } - final String selection = "_id=?"; - final String[] selectionArgs = new String[]{split[1]}; - return getDataColumn(context, contentUri, selection, selectionArgs); - } - } else if ("content".equalsIgnoreCase(uri.getScheme())) {// MediaStore - return getDataColumn(context, uri, null, null); - } else if ("file".equalsIgnoreCase(uri.getScheme())) {// File - return uri.getPath(); - } - return null; - } - - /** - * Get the value of the data column for this Uri. This is useful for - * MediaStore Uris, and other file-based ContentProviders. - * - * @param context The context. - * @param uri The Uri to query. - * @param selection (Optional) Filter used in the query. - * @param selectionArgs (Optional) Selection arguments used in the query. - * @return The value of the _data column, which is typically a file path. - */ - public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { - Cursor cursor = null; - final String column = "_data"; - final String[] projection = {column}; - try { - cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); - if (cursor != null && cursor.moveToFirst()) { - final int column_index = cursor.getColumnIndexOrThrow(column); - return cursor.getString(column_index); - } - } finally { - if (cursor != null) - cursor.close(); - } - return null; - } - - /** - * @param uri The Uri to check. - * @return Whether the Uri authority is ExternalStorageProvider. - */ - public static boolean isExternalStorageDocument(Uri uri) { - return "com.android.externalstorage.documents".equals(uri.getAuthority()); - } - - /** - * @param uri The Uri to check. - * @return Whether the Uri authority is DownloadsProvider. - */ - public static boolean isDownloadsDocument(Uri uri) { - return "com.android.providers.downloads.documents".equals(uri.getAuthority()); - } - - /** - * @param uri The Uri to check. - * @return Whether the Uri authority is MediaProvider. - */ - public static boolean isMediaDocument(Uri uri) { - return "com.android.providers.media.documents".equals(uri.getAuthority()); - } - - private void sendEmail() { - Intent email = new Intent(Intent.ACTION_SENDTO); - /*不带附件发送邮件*/ -// email.setType("plain/text"); - email.setData(Uri.parse(receiveEmail)); - - /*设置邮件默认地址,多个收件人,String数组*/ - // email.putExtra(android.content.Intent.EXTRA_EMAIL, (String[])mMailReceivers.toArray(new String[mMailReceivers.size()])); - /*多个抄送人,String数组*/ -// email.putExtra(android.content.Intent.EXTRA_CC, (String[])mMailCopyTos.toArray(new String[mMailCopyTos.size()])); - /*邮件标题*/ - email.putExtra(Intent.EXTRA_SUBJECT, et_email_title.getText().toString()); - /*邮件正文*/ - email.putExtra(Intent.EXTRA_TEXT, et_email_content.getText().toString()); -//调用系统的邮件系统 - startActivity(Intent.createChooser(email, "请选择邮件发送软件")); - - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/FontSizeActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/FontSizeActivity.java deleted file mode 100644 index f792e69..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/FontSizeActivity.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.os.Handler; -import android.view.KeyEvent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseActivity; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.event.RestartMainEvent; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.ScreenUtils; -import com.android.learn.view.fontsliderbar.FontSliderBar; - -import org.greenrobot.eventbus.EventBus; - -import butterknife.BindView; -import butterknife.OnClick; - - - -public class FontSizeActivity extends BaseMvpActivity { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.fontSliderBar) - FontSliderBar fontSliderBar; - @BindView(R.id.tv_chatcontent1) - TextView tvContent1; - @BindView(R.id.tv_chatcontent) - TextView tvContent2; - @BindView(R.id.iv_userhead) - ImageView ivUserhead; - private float textsize1, textsize2, textsize3; - private float textSizef;//缩放比例 - private boolean isClickable = true; - int currentIndex; - String TAG="FontSizeActivity"; - - public static void startActivity(Context context) { - Intent intent = new Intent(context, FontSizeActivity.class); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_fontsizes; - } - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.font_size)); - iv_back.setVisibility(View.VISIBLE); - initData(); - } - - private void initData() { - currentIndex = (Integer) SPUtils.getParam(this, "currentIndex", 1); - textSizef = 1 + currentIndex * 0.1f; - float size1 = tvContent1.getTextSize(); - float size2 = tvContent2.getTextSize(); - textsize1 = size1 / textSizef; - textsize2 = size2 / textSizef; - fontSliderBar.setTickCount(6).setTickHeight(ScreenUtils.dp2px(FontSizeActivity.this, 15)).setBarColor(Color.GRAY) - .setTextColor(Color.BLACK).setTextPadding(ScreenUtils.dp2px(FontSizeActivity.this, 10)).setTextSize(ScreenUtils.dp2px(FontSizeActivity.this, 14)) - .setThumbRadius(ScreenUtils.dp2px(FontSizeActivity.this, 10)).setThumbColorNormal(Color.GRAY).setThumbColorPressed(Color.GRAY) - .setOnSliderBarChangeListener(new FontSliderBar.OnSliderBarChangeListener() { - @Override - public void onIndexChanged(FontSliderBar rangeBar, int index) { - if (index > 5) { - return; - } - index = index - 1; - float textSizef = 1 + index * 0.1f; - setTextSize(textSizef); - } - }).setThumbIndex(currentIndex).withAnimation(false).applay(this); - - } - - @OnClick({R.id.iv_back}) - public void click(View view) { - - switch (view.getId()) { - case R.id.iv_back: - if (fontSliderBar.getCurrentIndex() != currentIndex) { - if (isClickable) { - isClickable = false; - refresh(); - } - } else { - finish(); - } - break; - - } - } - - private void setTextSize(float textSize) { - //改变当前页面的字体大小 - float size1 = textsize1 * textSize; - float size2 = textsize2 * textSize; - float size3 = textsize3 * textSize; - tvContent1.setTextSize(ScreenUtils.px2sp(FontSizeActivity.this, size1)); - tvContent2.setTextSize(ScreenUtils.px2sp(FontSizeActivity.this, size2)); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { - if (currentIndex != fontSliderBar.getCurrentIndex()) { - if (isClickable) { - isClickable = false; - refresh(); - } - } else { - finish(); - } - return true; - } - return super.onKeyDown(keyCode, event); - } - - private void refresh() { - //存储标尺的下标 - SPUtils.setParam(this, "currentIndex", fontSliderBar.getCurrentIndex()); - //通知主页面重启 - EventBus.getDefault().post(new RestartMainEvent(this)); - - } - - public void onDestroy(){ - super.onDestroy(); - LogUtil.d(TAG,TAG+" onDestroy--------"); - } - - @Override - public BasePresenter initPresenter() { - return null; - } - - @Override - protected void loadData() { - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/KnowledgeChildActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/KnowledgeChildActivity.java deleted file mode 100644 index 92714fb..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/KnowledgeChildActivity.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.adapter.ArticleQuickAdapter; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.Utils; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.KnowledgeChildContract; -import com.android.learn.mpresenter.KnowledgeChildPresenter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class KnowledgeChildActivity extends BaseMvpActivity implements KnowledgeChildContract.View { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.tv_empty_knowledge) - TextView tv_empty_knowledge; - @BindView(R.id.article_recyclerview) - RecyclerView article_recyclerview; - @BindView(R.id.smartRefreshLayout) - SmartRefreshLayout smartRefreshLayout; - private List articleDataList; - private ArticleQuickAdapter feedArticleAdapter; - int cid; - String titleStr; - String TAG = "KnowledgeChildActivity"; - public static final String ID = "page"; - public static final String TITLE = "TITLE"; - - public static void startTreeChildrenActivity(Context context, int id, String name) { - Intent intent = new Intent(context, KnowledgeChildActivity.class); - intent.putExtra(ID, id); - intent.putExtra(TITLE, name); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_knowledge_article; - } - - @Override - protected void initData(Bundle bundle) { - cid = bundle.getInt(ID); - titleStr = bundle.getString(TITLE); - LogUtil.d(TAG, "id--------------" + cid); - LogUtil.d(TAG, "titleStr--------------" + titleStr); - title.setText(titleStr); - iv_back.setVisibility(View.VISIBLE); - initSmartRefreshLayout(); - initRecyclerView(); - } - - - @Override - public KnowledgeChildPresenter initPresenter() { - return new KnowledgeChildPresenter(); - } - - @Override - protected void loadData() { - CustomProgressDialog.show(this); - mPresenter.getKnowledgeArticleList(0, cid); - } - - @Override - public void showArticleList(FeedArticleListData listData, boolean isRefresh) { - final List newDataList = listData.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - return; - } - smartRefreshLayout.finishLoadMore(); - - feedArticleAdapter.addData(newDataList); - - } - - @Override - public void showCollectArticleData(int position, FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - @Override - public void showCancelCollectArticleData(int position, FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - private void initRecyclerView() { - articleDataList = new ArrayList<>(); - feedArticleAdapter = new ArticleQuickAdapter(this, articleDataList, "KnowledgeChildActivity"); - article_recyclerview.addItemDecoration(new DividerItemDecoration(this, - DividerItemDecoration.VERTICAL_LIST)); - article_recyclerview.setLayoutManager(new LinearLayoutManager(this)); - - //解决数据加载完成后, 没有停留在顶部的问题 - article_recyclerview.setFocusable(false); - article_recyclerview.setAdapter(feedArticleAdapter); - - feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Intent intent = new Intent(KnowledgeChildActivity.this, ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", feedArticleAdapter.getData().get(position).getLink()); - intent.putExtras(bundle); - startActivity(intent); - } - - }); - feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { - @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - if (feedArticleAdapter.getData().get(position).isCollect()) { - mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); - } else { - mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); - } - } - }); - } - - //初始化下拉刷新控件 - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - mPresenter.onLoadMore(cid); - } - - @Override - public void onRefresh(RefreshLayout refreshLayout) { - mPresenter.onRefreshMore(cid); - } - }); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/LanguageActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/LanguageActivity.java deleted file mode 100644 index 94aade0..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/LanguageActivity.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.android.learn.activity; - -import android.app.LauncherActivity; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.support.v7.widget.AppCompatCheckBox; -import android.view.View; -import android.widget.CompoundButton; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseActivity; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.event.LogoutEvent; -import com.android.learn.base.event.RestartMainEvent; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.account.UserUtil; - -import org.greenrobot.eventbus.EventBus; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class LanguageActivity extends BaseMvpActivity { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.cb_system) - AppCompatCheckBox cb_system; - @BindView(R.id.cb_chinese) - AppCompatCheckBox cb_chinese; - @BindView(R.id.cb_english) - AppCompatCheckBox cb_english; - String TAG = "LanguageActivity"; - - public static void startActivity(Context context) { - Intent intent = new Intent(context, LanguageActivity.class); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_language; - } - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.language_set)); - iv_back.setVisibility(View.VISIBLE); - - int language = (Integer) SPUtils.getParam(this, "language", 0); - if (language == 0) { - cb_system.setChecked(true); - } else if (language == 1) { - cb_chinese.setChecked(true); - } else if (language == 2) { - cb_english.setChecked(true); - } - - } - - - private void selectLanguage(int select) { - LanguageUtil.saveSelectLanguage(this, select); - EventBus.getDefault().post(new RestartMainEvent(this)); - } - - - @OnClick({R.id.cb_system, R.id.cb_chinese, R.id.cb_english}) - public void click(View view) { - cb_system.setChecked(false); - cb_chinese.setChecked(false); - cb_english.setChecked(false); - - - switch (view.getId()) { - case R.id.cb_system: - selectLanguage(0); - break; - case R.id.cb_chinese: - selectLanguage(1); - break; - case R.id.cb_english: - selectLanguage(2); - break; - - } - } - - - public void onDestroy() { - super.onDestroy(); - LogUtil.d(TAG, TAG + " onDestroy--------"); - } - - @Override - public BasePresenter initPresenter() { - return null; - } - - @Override - protected void loadData() { - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/MyCollectActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/MyCollectActivity.java deleted file mode 100644 index 87b4d93..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/MyCollectActivity.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.adapter.ArticleQuickAdapter; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.event.CancelCollectEvent; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.CollectContract; -import com.android.learn.mpresenter.CollectPresenter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; - -import org.greenrobot.eventbus.EventBus; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - - -public class MyCollectActivity extends BaseMvpActivity implements CollectContract.View { - - - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.article_collect_recyclerview) - RecyclerView article_collect_recyclerview; - @BindView(R.id.smartRefreshLayout) - SmartRefreshLayout smartRefreshLayout; - @BindView(R.id.tv_empty_collect) - TextView tv_empty_collect; - private List articleDataList; - private ArticleQuickAdapter feedArticleAdapter; - - public static void startActivity(Context context) { - Intent intent = new Intent(context, MyCollectActivity.class); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_collect; - } - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.collect)); - iv_back.setVisibility(View.VISIBLE); - initRecyclerView(); - initSmartRefreshLayout(); - - } - - - @Override - public CollectPresenter initPresenter() { - return new CollectPresenter(); - } - - @Override - protected void loadData() { - CustomProgressDialog.show(this); - mPresenter.getCollectList(); - } - - - @Override - public void showCollectList(FeedArticleListData feedArticleListData) { - final List newDataList = feedArticleListData.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - } - smartRefreshLayout.finishLoadMore(); - - feedArticleAdapter.addData(newDataList); - - if (feedArticleAdapter.getData().size() == 0) { - tv_empty_collect.setVisibility(View.VISIBLE); - } else tv_empty_collect.setVisibility(View.GONE); - - } - - @Override - public void showCancelCollectArticle(int position, int id) { - feedArticleAdapter.remove(position); - EventBus.getDefault().post(new CancelCollectEvent(id)); - } - - private void initRecyclerView() { - articleDataList = new ArrayList<>(); - feedArticleAdapter = new ArticleQuickAdapter(this, articleDataList, "MyCollectActivity"); - article_collect_recyclerview.addItemDecoration(new DividerItemDecoration(this, - DividerItemDecoration.VERTICAL_LIST)); - article_collect_recyclerview.setLayoutManager(new LinearLayoutManager(this)); - - article_collect_recyclerview.setFocusable(false); - article_collect_recyclerview.setAdapter(feedArticleAdapter); - feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { - @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position).originId); - } - }); - feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Intent intent = new Intent(MyCollectActivity.this, ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", articleDataList.get(position).getLink()); - intent.putExtras(bundle); - startActivity(intent); - } - - }); - } - - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - mPresenter.getCollectList(); - - } - - - }); - } - - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/MyTodoActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/MyTodoActivity.java deleted file mode 100644 index d6b64ff..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/MyTodoActivity.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.design.widget.TabLayout; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - - -import com.android.learn.R; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.fragment.TodoFragment; -import com.android.learn.view.CustomViewPager; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.OnClick; - -public class MyTodoActivity extends BaseMvpActivity { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.iv_search) - ImageView iv_search; - @BindView(R.id.title) - TextView tv_title; - @BindView(R.id.tabLayout) - TabLayout tabLayout; - @BindView(R.id.viewPager) - CustomViewPager viewPager; - TodoFragment todoFragment, doneFragment; - - private List mFragments = new ArrayList<>(); - - public static void startActivity(Context context) { - Intent intent = new Intent(context, MyTodoActivity.class); - context.startActivity(intent); - } - - private void initTab() { - - tabLayout.getTabAt(0).setCustomView(R.layout.tab_todo); - tabLayout.getTabAt(1).setCustomView(R.layout.tab_done); - - - tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { - //标签选中之后执行的方法 - @Override - public void onTabSelected(TabLayout.Tab tab) { -// title.setText(titles.get(tab.getPosition())); - if (tab.getPosition() == 0) - iv_search.setVisibility(View.VISIBLE); - if (tab.getPosition() == 1) - iv_search.setVisibility(View.GONE); - - } - - //标签没选中 - @Override - public void onTabUnselected(TabLayout.Tab tab) { - - } - - @Override - public void onTabReselected(TabLayout.Tab tab) { - - } - }); - //默认选中的Tab - tabLayout.getTabAt(0).getCustomView().setSelected(true); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_my_todo; - } - - @Override - protected void initData(Bundle bundle) { - tv_title.setText(getString(R.string.todo)); - iv_back.setVisibility(View.VISIBLE); - iv_search.setVisibility(View.VISIBLE); - iv_search.setImageResource(R.drawable.add_todo); - Bundle bundle1 = new Bundle(); - bundle1.putInt("position", 0); - todoFragment = TodoFragment.newInstance(bundle1); - Bundle bundle2 = new Bundle(); - bundle2.putInt("position", 1); - doneFragment = TodoFragment.newInstance(bundle2); - mFragments.add(todoFragment); - mFragments.add(doneFragment); - CourseDiscussAdapter adapter = new CourseDiscussAdapter(getSupportFragmentManager(), mFragments); - viewPager.setOffscreenPageLimit(mFragments.size()); - viewPager.setAdapter(adapter); - viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager)); - //将TabLayout和ViewPager关联起来 - tabLayout.setupWithViewPager(viewPager); - initTab(); - } - - @OnClick({R.id.iv_search}) - public void click(View view) { - switch (view.getId()) { - case R.id.iv_search: - TodoAddActivity.startActivity(MyTodoActivity.this, null); - break; - - } - - } - - @Override - public BasePresenter initPresenter() { - return null; - } - - @Override - protected void loadData() { - - } - - public class CourseDiscussAdapter extends FragmentPagerAdapter { - - List fragments; - - public CourseDiscussAdapter(FragmentManager fm, List fragments) { - super(fm); - this.fragments = fragments; - - - } - - @Override - public Fragment getItem(int position) { - Fragment fragment = fragments.get(position); - - return fragment; - } - - @Override - public int getCount() { - return fragments.size(); - } - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/RegisterLoginActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/RegisterLoginActivity.java deleted file mode 100644 index b68ee1d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/RegisterLoginActivity.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.KeyEvent; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.mmodel.RegisterLoginData; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.Utils; -import com.android.learn.base.utils.account.UserUtil; -import com.android.learn.mcontract.RegisterLoginContract; -import com.android.learn.mpresenter.RegisterLoginPresenter; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class RegisterLoginActivity extends BaseMvpActivity implements RegisterLoginContract.View { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.tv_login) - TextView tv_login; - @BindView(R.id.tv_register_free) - TextView tv_register_free; - - @BindView(R.id.tv_register) - TextView tv_register; - - @BindView(R.id.layout_login) - LinearLayout layout_login; - @BindView(R.id.layout_register) - LinearLayout layout_register; - - - @BindView(R.id.et_register_phone_num) - EditText et_register_phone_num; - - @BindView(R.id.et_register_password) - EditText et_register_password; - @BindView(R.id.et_register_confirm_password) - EditText et_register_confirm_password; - - - @BindView(R.id.et_login_phone_num) - EditText et_login_phone_num; - @BindView(R.id.et_login_password) - EditText et_login_password; - - TextView tv_register_contract_content; - boolean isInContract; - - boolean isInRegister = false, isInForgetPwd = false; - String registerFlag; - - public static void startActivity(Context context) { - Intent intent = new Intent(context, RegisterLoginActivity.class); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_login_register; - } - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.login)); - iv_back.setVisibility(View.VISIBLE); - } - - @OnClick({R.id.iv_back, R.id.tv_login, R.id.tv_register_free, R.id.tv_register}) - public void click(View view) { - switch (view.getId()) { - case R.id.iv_back: - back(); - break; - case R.id.tv_login: - String username = et_login_phone_num.getText().toString(); - String password = et_login_password.getText().toString(); - mPresenter.login(username, password); - break; - case R.id.tv_register_free: - layout_register.setVisibility(View.VISIBLE); - title.setText(getString(R.string.register)); - isInRegister = true; - break; - - case R.id.tv_register: - registerFlag = "tv_register"; - - username = et_register_phone_num.getText().toString().trim(); - password = et_register_password.getText().toString().trim(); - String confirmPassword = et_register_confirm_password.getText().toString().trim(); - - if ("".equals(username)) { - Utils.showToast(getString(R.string.please_input_account), true); - return; - } - if (password.length() < 6) { - Utils.showToast(getString(R.string.register_password_too_short), true); - return; - } - if (!password.equals(confirmPassword)) { - Utils.showToast(getString(R.string.password_dismatch), true); - return; - } - - mPresenter.register(username, password, confirmPassword); - break; - } - - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK - && event.getAction() == KeyEvent.ACTION_DOWN) { - back(); - return true; - } - - return super.onKeyDown(keyCode, event); - } - - - private void back() { - if (isInRegister) { - layout_register.setVisibility(View.GONE); - title.setText(getString(R.string.login)); - isInRegister = false; - } else { - finish(); - - } - } - - - public void onDestroy() { - super.onDestroy(); - } - - @Override - public RegisterLoginPresenter initPresenter() { - return new RegisterLoginPresenter(); - } - - @Override - protected void loadData() { - - } - - @Override - public void showRegisterResData(RegisterLoginData registerResData) { - back(); - } - - @Override - public void showLoginResData(RegisterLoginData data) { - UserUtil.setUserInfo(data); - SPUtils.setParam(RegisterLoginActivity.this, "username", et_login_phone_num.getText().toString()); - SPUtils.setParam(RegisterLoginActivity.this, "password", et_login_password.getText().toString()); - finish(); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/SearchResultActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/SearchResultActivity.java deleted file mode 100644 index 62bfb0a..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/SearchResultActivity.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.android.learn.activity; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.adapter.ArticleQuickAdapter; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.TodoData; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.Utils; -import com.android.learn.mcontract.SearchContract; -import com.android.learn.mpresenter.SearchPresenter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class SearchResultActivity extends BaseMvpActivity implements SearchContract.View { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.tv_empty_knowledge) - TextView tv_empty_knowledge; - @BindView(R.id.article_recyclerview) - RecyclerView article_recyclerview; - @BindView(R.id.smartRefreshLayout) - SmartRefreshLayout smartRefreshLayout; - private ArticleQuickAdapter feedArticleAdapter; - String keyword; - String TAG = "KnowledgeChildActivity"; - - - public static void startActivity(Context context, Bundle bundle) { - Intent intent = new Intent(context, SearchResultActivity.class); - intent.putExtras(bundle); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_knowledge_article; - } - - @Override - protected void initData(Bundle bundle) { - keyword = bundle.getString("key"); - title.setText(keyword); - iv_back.setVisibility(View.VISIBLE); - initSmartRefreshLayout(); - initRecyclerView(); - } - - - @Override - public SearchPresenter initPresenter() { - return new SearchPresenter(); - } - - @Override - protected void loadData() { - mPresenter.getFeedArticleList(keyword); - } - - @Override - public void showArticleList(FeedArticleListData listData) { - final List newDataList = listData.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - } - smartRefreshLayout.finishLoadMore(); - - feedArticleAdapter.addData(newDataList); - - if (feedArticleAdapter.getData().size() == 0) { - tv_empty_knowledge.setVisibility(View.VISIBLE); - } else tv_empty_knowledge.setVisibility(View.GONE); - } - - @Override - public void showCollectArticleData(int position, FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - @Override - public void showCancelCollectArticleData(int position, FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - private void initRecyclerView() { - List articleDataList = new ArrayList<>(); - feedArticleAdapter = new ArticleQuickAdapter(this, articleDataList, "KnowledgeChildActivity"); - article_recyclerview.addItemDecoration(new DividerItemDecoration(this, - DividerItemDecoration.VERTICAL_LIST)); - article_recyclerview.setLayoutManager(new LinearLayoutManager(this)); - - //解决数据加载完成后, 没有停留在顶部的问题 - article_recyclerview.setFocusable(false); - article_recyclerview.setAdapter(feedArticleAdapter); - feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Intent intent = new Intent(SearchResultActivity.this, ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", feedArticleAdapter.getData().get(position).getLink()); - intent.putExtras(bundle); - startActivity(intent); - } - - }); - feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { - @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - if (feedArticleAdapter.getData().get(position).isCollect()) { - mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); - } else { - mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); - } - } - }); - } - - //初始化下拉刷新控件 - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - mPresenter.onLoadMore(keyword); - } - - - }); - } - - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/SettingActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/SettingActivity.java deleted file mode 100644 index 8963ba9..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/SettingActivity.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.android.learn.activity; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.widget.AppCompatCheckBox; -import android.view.View; -import android.widget.CompoundButton; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseActivity; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.event.ChangeNightEvent; -import com.android.learn.base.event.LogoutEvent; -import com.android.learn.base.event.RestartMainEvent; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.Utils; -import com.android.learn.base.utils.account.UserUtil; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class SettingActivity extends BaseMvpActivity { - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.title) - TextView title; - @BindView(R.id.tv_versionName) - TextView tv_versionName; - @BindView(R.id.help_feedback_layout) - LinearLayout help_feedback_layout; - @BindView(R.id.version_update_layout) - LinearLayout version_update_layout; - @BindView(R.id.language_switch_layout) - LinearLayout language_switch_layout; - @BindView(R.id.font_size_layout) - LinearLayout font_size_layout; - @BindView(R.id.my_logout_layout) - LinearLayout my_logout_layout; - @BindView(R.id.cb_setting_night) - AppCompatCheckBox cb_setting_night; - - - public static void startActivity(Context context) { - Intent intent = new Intent(context, SettingActivity.class); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_setting; - } - - - - @Override - protected void initData(Bundle bundle) { - title.setText(getString(R.string.my_setting)); - iv_back.setVisibility(View.VISIBLE); - tv_versionName.setText(Utils.getVersionName(this)); - Boolean isNightMode = (Boolean) SPUtils.getParam(this, "nightMode", new Boolean(false)); - if (isNightMode) { - cb_setting_night.setChecked(true); - } else { - cb_setting_night.setChecked(false); - } - cb_setting_night.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - - if (isChecked) - SPUtils.setParam(SettingActivity.this, "nightMode", new Boolean(true)); - else SPUtils.setParam(SettingActivity.this, "nightMode", new Boolean(false)); - useNightMode(isChecked); - EventBus.getDefault().post(new ChangeNightEvent()); - setStatusBar(); - - } - }); - EventBus.getDefault().register(this); - } - - - @OnClick({R.id.help_feedback_layout, R.id.version_update_layout, R.id.language_switch_layout, R.id.font_size_layout, R.id.my_logout_layout}) - public void click(View view) { - - switch (view.getId()) { - case R.id.help_feedback_layout: - FeedbackActivity.startActivity(SettingActivity.this); - break; - case R.id.language_switch_layout: - LanguageActivity.startActivity(SettingActivity.this); - break; - case R.id.font_size_layout: - FontSizeActivity.startActivity(SettingActivity.this); - break; - case R.id.my_logout_layout: - if (!UserUtil.isLogined()) { - RegisterLoginActivity.startActivity(this); - return; - } - UserUtil.setLogined(false); - EventBus.getDefault().post(new LogoutEvent()); - RetrofitProvider.getInstance().sharedPrefsCookiePersistor.clear(); - finish(); - break; - } - } - - @Override - public BasePresenter initPresenter() { - return null; - } - - @Override - protected void loadData() { - - } - - // private void checkUpdate() { -// -// if (OnlineParamUtil.getParamResData() != null && OnlineParamUtil.getParamResData().rspBody != null) { -// String android_versionCode = OnlineParamUtil.getParamResData().rspBody.android_versionCode.content.trim(); -// -// String android_update_content = OnlineParamUtil.getParamResData().rspBody.android_update_content.content.trim(); -// String android_must_update = OnlineParamUtil.getParamResData().rspBody.android_must_update.content.trim(); -// final String android_app_download_url = OnlineParamUtil.getParamResData().rspBody.android_app_download_url.content.trim(); -// if (Utils.stringToInt(android_versionCode) <= Utils.getVersionCode(this)) { -// Utils.showToast("当前是最新版本", true); -// return; -// } -// AlertDialog.Builder builder; -// builder = new AlertDialog.Builder(SettingActivity.this); -// builder.setTitle("升级提醒"); -// builder.setIcon(R.drawable.update); -// builder.setMessage(android_update_content); -// builder.setCancelable(false); -// if ("false".equals(android_must_update)) { -// builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { -// @Override -// public void onClick(DialogInterface dialog, int which) { -// dialog.cancel(); -// -// } -// }); -// } -// builder.setPositiveButton("升级", new DialogInterface.OnClickListener() { -// @Override -// public void onClick(DialogInterface dialog, int which) { -// dialog.cancel(); -// UpdateApk.downFile(android_app_download_url, SettingActivity.this); -// } -// }); -// builder.show(); -// } -// } - int yourChoice; - - private void showSingleChoiceDialog() { - final String[] items = {"跟随系统", "简体中文", "English"}; - yourChoice = -1; - AlertDialog.Builder singleChoiceDialog = - new AlertDialog.Builder(SettingActivity.this); - singleChoiceDialog.setTitle("选择语言"); - // 第二个参数是默认选项,此处设置为0 - singleChoiceDialog.setSingleChoiceItems(items, 0, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - yourChoice = which; - } - }); - singleChoiceDialog.setPositiveButton("确定", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - SPUtils.setParam(SettingActivity.this, "languageIndex", which); - } - }); - singleChoiceDialog.show(); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(RestartMainEvent event) { - finish(); - } - public void onDestroy(){ - super.onDestroy(); - EventBus.getDefault().unregister(this); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/SplashActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/SplashActivity.java deleted file mode 100644 index 859bde0..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/SplashActivity.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.android.learn.activity; - -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.support.annotation.Nullable; -import android.view.View; - -import com.android.learn.MainActivity; -import com.android.learn.R; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.mmodel.RegisterLoginData; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.account.UserUtil; -import com.android.learn.mcontract.SplashLoginContract; -import com.android.learn.mpresenter.SplashLoginPresenter; -import com.jaeger.library.StatusBarUtil; - -public class SplashActivity extends BaseMvpActivity implements SplashLoginContract.View { - - - Handler handler = new Handler() { - public void handleMessage(Message msg) { - Intent intent = new Intent(SplashActivity.this, MainActivity.class); - startActivity(intent); - finish(); - } - }; - - @Override - protected int getLayoutId() { - return R.layout.activity_splash; - } - - @Override - protected void initData(Bundle bundle) { - } - - @Override - public SplashLoginPresenter initPresenter() { - return new SplashLoginPresenter(); - } - - @Override - protected void loadData() { - String phone_num = (String) SPUtils.getParam(this, "username", ""); - String password = (String) SPUtils.getParam(this, "password", ""); - if (phone_num.length() > 0 && password.length() > 0) { - mPresenter.login(phone_num, password); - } else handler.sendEmptyMessageDelayed(0, 2000); - } - - public void jumpToMainActivity(View view) { - Intent intent = new Intent(SplashActivity.this, MainActivity.class); - startActivity(intent); - handler.removeCallbacksAndMessages(null); - finish(); - } - - - @Override - public void showLoginResData(RegisterLoginData loginResData) { - UserUtil.setUserInfo(loginResData); - handler.sendEmptyMessageDelayed(0, 1500); - } - - @Override - protected void setStatusBar() { - StatusBarUtil.setTransparent(this); - } - - public void onDestroy() { - super.onDestroy(); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/TodoAddActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/TodoAddActivity.java deleted file mode 100755 index face32a..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/TodoAddActivity.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.android.learn.activity; - -import android.app.DatePickerDialog; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.design.widget.TextInputEditText; -import android.view.View; -import android.widget.Button; -import android.widget.DatePicker; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.event.UpdateTodoEvent; -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.TodoData.DatasBean; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.Utils; -import com.android.learn.mcontract.TodoAddContract; -import com.android.learn.mcontract.TodoEditContract; -import com.android.learn.mpresenter.TodoAddPresenter; -import com.android.learn.mpresenter.TodoEditPresenter; - -import org.greenrobot.eventbus.EventBus; - -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class TodoAddActivity extends BaseMvpActivity implements TodoAddContract.View { - @BindView(R.id.title) - TextView mTitle; - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.todo_name) - TextInputEditText et_title; - @BindView(R.id.todo_des) - TextInputEditText et_content; - @BindView(R.id.todo_date) - TextView mTodoDate; - - public static void startActivity(Context context, Bundle bundle) { - Intent intent = new Intent(context, TodoAddActivity.class); - if(bundle!=null) - intent.putExtras(bundle); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_edit_todo; - } - - @Override - protected void initData(Bundle bundle) { - mTitle.setText(getString(R.string.add)); - iv_back.setVisibility(View.VISIBLE); - } - - @OnClick({R.id.save_todo,R.id.todo_date}) - public void click(View view) { - switch (view.getId()) { - case R.id.save_todo: - Map map=new HashMap<>(); - map.put("title",et_title.getText().toString()); - map.put("content",et_content.getText().toString()); - String date=mTodoDate.getText().toString(); - if(!date.contains("-")){ - Utils.showToast(getString(R.string.select_time),true); - return; - } - map.put("date",date); -// map.put("status",0); - map.put("type",0); - - mPresenter.addTodo(map); - break; - case R.id.todo_date: - Calendar calendar = Calendar.getInstance(); - - DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { - @Override - public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) { - mTodoDate.setText(String.format("%d-%d-%d", year, month + 1, dayOfMonth)); - } - }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); - datePickerDialog.getDatePicker().setMinDate(new Date().getTime()); - datePickerDialog.show(); - break; - - } - - } - - - @Override - public TodoAddPresenter initPresenter() { - return new TodoAddPresenter(); - } - - @Override - protected void loadData() { - - } - - @Override - public void showAddTodo(BaseData todoData) { - Utils.showToast(getString(R.string.operate_success),true); - EventBus.getDefault().post(new UpdateTodoEvent()); - finish(); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/activity/TodoEditActivity.java b/AndroidLearnProject/app/src/main/code_backup/activity/TodoEditActivity.java deleted file mode 100755 index f9ae065..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/activity/TodoEditActivity.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.android.learn.activity; - -import android.app.DatePickerDialog; -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.design.widget.TextInputEditText; -import android.view.View; -import android.widget.Button; -import android.widget.DatePicker; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.activity.BaseMvpActivity; -import com.android.learn.base.event.UpdateTodoEvent; -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.TodoData; -import com.android.learn.base.mmodel.TodoData.DatasBean; -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.Utils; -import com.android.learn.mcontract.TodoEditContract; -import com.android.learn.mpresenter.TodoEditPresenter; -import com.android.learn.mpresenter.TodoPresenter; - -import org.greenrobot.eventbus.EventBus; - -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class TodoEditActivity extends BaseMvpActivity implements TodoEditContract.View { - @BindView(R.id.title) - TextView mTitle; - @BindView(R.id.iv_back) - ImageView iv_back; - @BindView(R.id.todo_name) - TextInputEditText et_title; - @BindView(R.id.todo_des) - TextInputEditText et_content; - @BindView(R.id.todo_date) - TextView mTodoDate; - - DatasBean datasBean; - - public static void startActivity(Context context, Bundle bundle) { - Intent intent = new Intent(context, TodoEditActivity.class); - intent.putExtras(bundle); - context.startActivity(intent); - } - - @Override - protected int getLayoutId() { - return R.layout.activity_edit_todo; - } - - @Override - protected void initData(Bundle bundle) { - mTitle.setText(getString(R.string.detail)); - iv_back.setVisibility(View.VISIBLE); - datasBean = (DatasBean) bundle.getSerializable("todo_item"); - et_title.setText(datasBean.getTitle()); - et_content.setText(datasBean.getContent()); - mTodoDate.setText(datasBean.getDateStr()); - } - - @OnClick({R.id.save_todo,R.id.todo_date}) - public void click(View view) { - switch (view.getId()) { - case R.id.save_todo: - Map map=new HashMap<>(); - map.put("title",et_title.getText().toString()); - map.put("content",et_content.getText().toString()); - String date=mTodoDate.getText().toString(); - if(!date.contains("-")){ - Utils.showToast(getString(R.string.select_time),true); - return; - } - map.put("date",date); - map.put("status",0); - map.put("type",0); - - mPresenter.updateTodo(datasBean.getId(),map); - break; - case R.id.todo_date: - Calendar calendar = Calendar.getInstance(); - - DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { - @Override - public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) { - mTodoDate.setText(String.format("%d-%d-%d", year, month + 1, dayOfMonth)); - } - }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)); - datePickerDialog.getDatePicker().setMinDate(new Date().getTime()); - datePickerDialog.show(); - break; - - } - - } - - - @Override - public TodoEditPresenter initPresenter() { - return new TodoEditPresenter(); - } - - @Override - protected void loadData() { - - } - - @Override - public void showUpdateTodo(BaseData todoData) { - Utils.showToast(getString(R.string.operate_success),true); - EventBus.getDefault().post(new UpdateTodoEvent()); - finish(); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/ArticleQuickAdapter.java b/AndroidLearnProject/app/src/main/code_backup/adapter/ArticleQuickAdapter.java deleted file mode 100644 index 01708fc..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/ArticleQuickAdapter.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.android.learn.adapter; - -import android.content.Context; -import android.view.View; -import android.widget.ImageView; - -import com.android.learn.R; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.thirdframe.glide.ImageLoader; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; - -import java.util.List; - -public class ArticleQuickAdapter extends BaseQuickAdapter { - - Context context; - List list; - String fromWhere; - - public ArticleQuickAdapter(Context context, List list, String fromWhere) { - super(R.layout.item_article_list, list); - this.context = context; - this.list = list; - this.fromWhere = fromWhere; - } - - public int getPosById(int id) { - int size = list.size(); - for (int i = 0; i < size; i++) { - if (id == list.get(i).id) - return i; - } - return -1; - } - - @Override - protected void convert(BaseViewHolder helper, FeedArticleData articleData) { - helper.setText(R.id.tv_item_title, articleData.getTitle()) - .setText(R.id.tv_item_time, articleData.getNiceDate()) - .setText(R.id.tv_item_author, articleData.getAuthor()); - helper.addOnClickListener(R.id.iv_item_collect); - if ("HomeFragment".equals(fromWhere)||"KnowledgeChildActivity".equals(fromWhere)||"WechatSubFragment".equals(fromWhere)) { - if (articleData.isCollect()) { - helper.setImageResource(R.id.iv_item_collect, R.drawable.icon_collect_select); - } else { - helper.setImageResource(R.id.iv_item_collect, R.drawable.icon_collect_unselect); - } - } - if ("MyCollectActivity".equals(fromWhere)) { - helper.setImageResource(R.id.iv_item_collect, R.drawable.icon_collect_select); - } - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/DividerItemDecoration.java b/AndroidLearnProject/app/src/main/code_backup/adapter/DividerItemDecoration.java deleted file mode 100644 index b68e51b..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/DividerItemDecoration.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.android.learn.adapter; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.View; - -public class DividerItemDecoration extends RecyclerView.ItemDecoration { - - private static final int[] ATTRS = new int[]{ - android.R.attr.listDivider - }; - - public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; - - public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; - - private Drawable mDivider; - - private int mOrientation; - - public DividerItemDecoration(Context context, int orientation) { - final TypedArray a = context.obtainStyledAttributes(ATTRS); - mDivider = a.getDrawable(0); - a.recycle(); - setOrientation(orientation); - } - - public void setOrientation(int orientation) { - if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { - throw new IllegalArgumentException("invalid orientation"); - } - mOrientation = orientation; - } - - @Override - public void onDraw(Canvas c, RecyclerView parent) { - - if (mOrientation == VERTICAL_LIST) { - drawVertical(c, parent); - } else { - drawHorizontal(c, parent); - } - - } - - - public void drawVertical(Canvas c, RecyclerView parent) { - final int left = parent.getPaddingLeft(); - final int right = parent.getWidth() - parent.getPaddingRight(); - - final int childCount = parent.getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = parent.getChildAt(i); - android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext()); - final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child - .getLayoutParams(); - final int top = child.getBottom() + params.bottomMargin; - final int bottom = top + mDivider.getIntrinsicHeight(); - mDivider.setBounds(left, top, right, bottom); - mDivider.draw(c); - } - } - - public void drawHorizontal(Canvas c, RecyclerView parent) { - final int top = parent.getPaddingTop(); - final int bottom = parent.getHeight() - parent.getPaddingBottom(); - - final int childCount = parent.getChildCount(); - for (int i = 0; i < childCount; i++) { - final View child = parent.getChildAt(i); - final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child - .getLayoutParams(); - final int left = child.getRight() + params.rightMargin; - final int right = left + mDivider.getIntrinsicHeight(); - mDivider.setBounds(left, top, right, bottom); - mDivider.draw(c); - } - } - - @Override - public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { - if (mOrientation == VERTICAL_LIST) { - outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); - } else { - outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); - } - } -} \ No newline at end of file diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/HorizontalPagerAdapter.java b/AndroidLearnProject/app/src/main/code_backup/adapter/HorizontalPagerAdapter.java deleted file mode 100644 index bb258c8..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/HorizontalPagerAdapter.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.android.learn.adapter; - -import android.content.Context; -import android.support.annotation.Nullable; -import android.support.v4.view.PagerAdapter; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.activity.KnowledgeChildActivity; -import com.android.learn.base.mmodel.TreeBean; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; - -import java.util.ArrayList; -import java.util.List; - - - -public class HorizontalPagerAdapter extends PagerAdapter { - - private Context mContext; - private LayoutInflater mLayoutInflater; - private List mList = new ArrayList<>(); - - public HorizontalPagerAdapter(final Context context,List mList) { - mContext = context; - this.mList=mList; - mLayoutInflater = LayoutInflater.from(context); - } - - public void setList(List list) { - mList = list; - } - - @Override - public int getCount() { - return mList.size(); - } - - @Override - public Object instantiateItem(final ViewGroup container, final int position) { - final View view; - int page; - view = mLayoutInflater.inflate(R.layout.item_tree, container, false); - final TextView txt = (TextView) view.findViewById(R.id.txt_item); - final TreeBean treeBean = mList.get(position); - txt.setText(treeBean.getName()); - RecyclerView recyclerView = view.findViewById(R.id.recyclerView); - recyclerView.setLayoutManager(new LinearLayoutManager(mContext)); - ChildrenAdapter adapter = new ChildrenAdapter(treeBean.getChildren()); - recyclerView.setAdapter(adapter); - adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - KnowledgeChildActivity.startTreeChildrenActivity(mContext, - treeBean.getChildren().get(position).getId(), - treeBean.getChildren().get(position).getName()); - } - }); - container.addView(view); - return view; - } - - @Override - public void destroyItem(final ViewGroup container, final int position, final Object object) { - container.removeView((View) object); - } - - @Override - public boolean isViewFromObject(final View view, final Object object) { - return view.equals(object); - } - - @Override - public int getItemPosition(final Object object) { - return POSITION_NONE; - } - - private class ChildrenAdapter extends BaseQuickAdapter { - - public ChildrenAdapter(@Nullable List data) { - super(R.layout.item_tree_children, data); - } - - @Override - protected void convert(BaseViewHolder helper, TreeBean.ChildrenBean item) { - helper.setText(R.id.tv, item.getName()); - } - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/MainTabAdapter.java b/AndroidLearnProject/app/src/main/code_backup/adapter/MainTabAdapter.java deleted file mode 100644 index 9186c6b..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/MainTabAdapter.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.android.learn.adapter; - -import android.app.Activity; -import android.content.Context; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; - - -import com.android.learn.fragment.HomeFragment; - -import java.util.List; - - -public class MainTabAdapter extends FragmentPagerAdapter { - - List fragments; - - public MainTabAdapter(FragmentManager fm, List fragments) { - super(fm); - this.fragments = fragments; - - - } - - @Override - public Fragment getItem(int position) { - Fragment fragment = fragments.get(position); -// Bundle bundle=new Bundle(); -// bundle.putString("title",titles[position]); -// fragment.setArguments(bundle); - return fragment; - } - - @Override - public int getCount() { - return fragments.size(); - } -} - diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/ProjectQuickAdapter.java b/AndroidLearnProject/app/src/main/code_backup/adapter/ProjectQuickAdapter.java deleted file mode 100644 index e52b340..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/ProjectQuickAdapter.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.android.learn.adapter; - -import android.content.Context; -import android.widget.ImageView; - -import com.android.learn.R; -import com.android.learn.base.mmodel.ProjectListData; -import com.android.learn.base.mmodel.ProjectListData.ProjectData; -import com.android.learn.base.thirdframe.glide.ImageLoader; -import com.bumptech.glide.Glide; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; - -import java.util.List; - -public class ProjectQuickAdapter extends BaseQuickAdapter { - Context context; - public ProjectQuickAdapter(Context context, List list) { - super(R.layout.item_project_list, list); - this.context=context; - } - - @Override - protected void convert(BaseViewHolder helper, ProjectData projectInfo) { - helper.setText(R.id.item_project_list_title_tv, projectInfo.getTitle()) - .setText(R.id.item_project_list_content_tv, projectInfo.getDesc()) - .setText(R.id.item_project_list_time_tv, projectInfo.getNiceDate()) - .setText(R.id.item_project_list_author_tv, projectInfo.getAuthor()); - - ImageLoader.getInstance().load(context,projectInfo.getEnvelopePic(),(ImageView) helper.getView(R.id.item_project_list_iv)); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/SearchRecordAdapter.java b/AndroidLearnProject/app/src/main/code_backup/adapter/SearchRecordAdapter.java deleted file mode 100644 index 7a0f023..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/SearchRecordAdapter.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.android.learn.adapter; - -import android.content.Context; - -import com.android.learn.R; -import com.android.learn.base.db.SearchRecord; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; - -import java.util.List; - -/** - * Created by yuepeng on 2017/6/9. - */ - -public class SearchRecordAdapter extends BaseQuickAdapter { - Context context; - List list; - - public SearchRecordAdapter(Context context, List list) { - super(R.layout.item_search_record, list); - this.context = context; - this.list = list; - } - - @Override - protected void convert(BaseViewHolder helper, SearchRecord searchRecord) { - helper.setText(R.id.tv_history_item, searchRecord.getName()); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/adapter/TodoQuickAdapter.java b/AndroidLearnProject/app/src/main/code_backup/adapter/TodoQuickAdapter.java deleted file mode 100644 index dfb8be2..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/adapter/TodoQuickAdapter.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.android.learn.adapter; - -import android.content.Context; -import android.graphics.Color; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.base.mmodel.TodoData.DatasBean; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.chad.library.adapter.base.BaseViewHolder; - -import java.util.List; - -public class TodoQuickAdapter extends BaseQuickAdapter { - - Context context; - List list; - int position; - - public TodoQuickAdapter(Context context, List list, int position) { - super(R.layout.todo_item_view, list); - this.context = context; - this.list = list; - this.position = position; - } - - - @Override - protected void convert(BaseViewHolder helper, DatasBean bean) { - helper.setText(R.id.item_name, bean.getTitle()); - helper.setText(R.id.item_des, bean.getContent()); - helper.setText(R.id.tv_todo_time, bean.getDateStr()); - if (position == 1) { - TextView tv_todo_time = helper.getView(R.id.tv_todo_time); - ImageView iv_item_todo = helper.getView(R.id.iv_item_todo); - tv_todo_time.setTextColor(Color.parseColor("#E4A340")); - tv_todo_time.setBackgroundColor(Color.parseColor("#FFFAF1")); - iv_item_todo.setImageResource(R.drawable.icon_done); - TextView tv_item_done_time = helper.getView(R.id.tv_item_done_time); - tv_item_done_time.setVisibility(View.VISIBLE); - tv_item_done_time.setText(context.getString(R.string.todo_finish_time)+bean.getCompleteDateStr()); - } - helper.addOnClickListener(R.id.iv_item_todo); - helper.addOnClickListener(R.id.iv_item_delete); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/HomeFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/HomeFragment.java deleted file mode 100644 index 02f218d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/HomeFragment.java +++ /dev/null @@ -1,268 +0,0 @@ -package com.android.learn.fragment; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.v4.widget.NestedScrollView; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.ImageView; - -import com.android.learn.R; -import com.android.learn.activity.ArticleDetailActivity; -import com.android.learn.adapter.ArticleQuickAdapter; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.base.event.CancelCollectEvent; -import com.android.learn.base.event.LoginEvent; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.mmodel.BannerListData; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.HomeContract; -import com.android.learn.mpresenter.HomePresenter; -import com.bumptech.glide.Glide; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; -import com.youth.banner.Banner; -import com.youth.banner.BannerConfig; -import com.youth.banner.listener.OnBannerListener; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - - -public class HomeFragment extends BaseMvpFragment implements HomeContract.View { - - @BindView(R.id.article_recyclerview) - RecyclerView article_recyclerview; - @BindView(R.id.scrollview_nested) - NestedScrollView scrollview_nested; - @BindView(R.id.banner) - Banner banner; - @BindView(R.id.smartRefreshLayout_home) - SmartRefreshLayout smartRefreshLayout; - - private List articleDataList; - private ArticleQuickAdapter feedArticleAdapter; - - @Override - public void initData(Bundle bundle) { - - EventBus.getDefault().register(this); - } - - @Override - public void initView(View view) { - initSmartRefreshLayout(); - initRecyclerView(); - } - - @Override - public int setContentLayout() { - return R.layout.fragment_home; - } - - @Override - public void reload() { - mPresenter.getFeedArticleList(0); - mPresenter.getBannerInfo(); - } - - @Override - public HomePresenter initPresenter() { - return new HomePresenter(); - } - - @Override - protected void loadData() { - CustomProgressDialog.show(getActivity()); - mPresenter.getFeedArticleList(0); - mPresenter.getBannerInfo(); - - } - - - @Override - public void showArticleList(FeedArticleListData listData, boolean isRefresh) { - final List newDataList = listData.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - return; - } - smartRefreshLayout.finishLoadMore(); - - feedArticleAdapter.addData(newDataList); - - } - - @Override - public void showBannerList(BannerListData itemBeans) { - - final List linkList = new ArrayList(); - List imageList = new ArrayList(); - List titleList = new ArrayList(); - int size = itemBeans.data.size(); - - for (int i = 0; i < size; i++) { - imageList.add(itemBeans.data.get(i).imagePath); - titleList.add(itemBeans.data.get(i).title); - linkList.add(itemBeans.data.get(i).url); - } - banner.setImageLoader(new com.youth.banner.loader.ImageLoader() { - @Override - public void displayImage(Context context, Object path, ImageView imageView) { - Glide.with(getActivity()).load(path).into(imageView); - } - }); - - //设置样式,默认为:Banner.NOT_INDICATOR(不显示指示器和标题) - //可选样式如下: - //1. Banner.CIRCLE_INDICATOR 显示圆形指示器 - //2. Banner.NUM_INDICATOR 显示数字指示器 - //3. Banner.NUM_INDICATOR_TITLE 显示数字指示器和标题 - //4. Banner.CIRCLE_INDICATOR_TITLE 显示圆形指示器和标题 - banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);//设置圆形指示器与标题 - //设置banner动画效果 -// Tansformer.CubeIn -// Transformer.CubeOut -// Transformer.DepthPage -// Transformer.FlipHorizontal -// Transformer.FlipVertical -// banner.setBannerAnimation(Transformer.FlipHorizontal); - banner.setIndicatorGravity(BannerConfig.CENTER);//设置指示器位置 - banner.setDelayTime(4000);//设置轮播时间 - banner.setImages(imageList);//设置图片源 - banner.setBannerTitles(titleList);//设置标题源 - - banner.start(); - - - banner.setOnBannerListener(new OnBannerListener() { - @Override - public void OnBannerClick(int position) { - Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", linkList.get(position)); - intent.putExtras(bundle); - startActivity(intent); - } - }); - } - - private void initRecyclerView() { - articleDataList = new ArrayList<>(); - feedArticleAdapter = new ArticleQuickAdapter(getActivity(), articleDataList, "HomeFragment"); - article_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), - DividerItemDecoration.VERTICAL_LIST)); - article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); - article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()) { - public boolean canScrollVertically() { - //解决ScrollView里存在多个RecyclerView时滑动卡顿的问题 - //如果你的RecyclerView是水平滑动的话可以重写canScrollHorizontally方法 - return false; - } - }); - //解决数据加载不完的问题 -// project_recyclerview.setNestedScrollingEnabled(false); -// project_recyclerview.setHasFixedSize(true); -// //解决数据加载完成后, 没有停留在顶部的问题 - article_recyclerview.setFocusable(false); - article_recyclerview.setAdapter(feedArticleAdapter); - feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", articleDataList.get(position).getLink()); - intent.putExtras(bundle); - startActivity(intent); - } - - }); - feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { - @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - if (feedArticleAdapter.getData().get(position).isCollect()) { - mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); - } else { - mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); - } - } - }); - } - - //初始化下拉刷新控件 - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - mPresenter.onLoadMore(); - } - - @Override - public void onRefresh(RefreshLayout refreshLayout) { - mPresenter.onRefreshMore(); - } - }); - } - - public void scrollToTop() { - scrollview_nested.scrollTo(0, 0); - } - - public void onResume() { - super.onResume(); - - } - - @Override - public void showCollectArticleData(int position, FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - @Override - public void showCancelCollectArticleData(int position, FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - @Override - public void showCancelCollectArticleData(int id) { - int position = feedArticleAdapter.getPosById(id); - if (position == -1) return; - FeedArticleData feedArticleData = articleDataList.get(position); - feedArticleData.setCollect(false); - feedArticleAdapter.setData(position, feedArticleData); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(CancelCollectEvent event) { - mPresenter.cancelCollectArticle(event.id); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(LoginEvent accountEvent) { - feedArticleAdapter.getData().clear(); - feedArticleAdapter.notifyDataSetChanged(); - mPresenter.getFeedArticleList(0); - mPresenter.mCurrentPage = 0; - } - - public void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/KnowledgeFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/KnowledgeFragment.java deleted file mode 100644 index 53fd427..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/KnowledgeFragment.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.android.learn.fragment; - -import android.app.Dialog; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import com.android.learn.R; -import com.android.learn.adapter.HorizontalPagerAdapter; -import com.android.learn.base.activity.BaseActivity; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.mmodel.TreeBean; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.KnowledgeContract; -import com.android.learn.mpresenter.KnowledgePresenter; -import com.gigamole.infinitecycleviewpager.HorizontalInfiniteCycleViewPager; - -import java.util.List; - -import butterknife.BindView; - - -public class KnowledgeFragment extends BaseMvpFragment implements KnowledgeContract.View { - @BindView(R.id.hicvp) - HorizontalInfiniteCycleViewPager horizontalInfiniteCycleViewPager; - private HorizontalPagerAdapter mPagerAdapter; - - Handler handler = new Handler() { - public void handleMessage(Message message) { - CustomProgressDialog.show(getActivity()); - } - }; - - @Override - public void initData(Bundle bundle) { - } - - @Override - public void initView(View view) { - } - - @Override - public int setContentLayout() { - return R.layout.fragment_knowledge; - } - - @Override - public void reload() { - } - - @Override - public KnowledgePresenter initPresenter() { - return new KnowledgePresenter(); - } - - @Override - protected void loadData() { - - CustomProgressDialog.show(getActivity()); - mPresenter.getKnowledge(); - } - - @Override - public void showKnowledge(List datas) { - mPagerAdapter = new HorizontalPagerAdapter(getContext(), datas); - horizontalInfiniteCycleViewPager.setAdapter(mPagerAdapter); - if (horizontalInfiniteCycleViewPager != null && datas.size() > 1) - horizontalInfiniteCycleViewPager.setCurrentItem(1); - horizontalInfiniteCycleViewPager.post(new Runnable() { - @Override - public void run() { - CustomProgressDialog.cancel(); - } - }); - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/ProjectFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/ProjectFragment.java deleted file mode 100644 index da668a5..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/ProjectFragment.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.android.learn.fragment; - -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; - -import com.android.learn.R; -import com.android.learn.activity.ArticleDetailActivity; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.adapter.ProjectQuickAdapter; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.mmodel.ProjectListData; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.ProjectContract; -import com.android.learn.mpresenter.ProjectPresenter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - - -public class ProjectFragment extends BaseMvpFragment implements ProjectContract.View { - - @BindView(R.id.project_recyclerview) - RecyclerView project_recyclerview; - @BindView(R.id.smartRefreshLayout_home) - SmartRefreshLayout smartRefreshLayout; - ProjectQuickAdapter projectAdapter; - private List projectDataList; - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public void initView(View view) { - initSmartRefreshLayout(); - initRecyclerView(); - } - - @Override - public int setContentLayout() { - return R.layout.fragment_project; - } - - @Override - public void reload() { - mPresenter.getProjectInfo(1, 294); - } - - @Override - public ProjectPresenter initPresenter() { - return new ProjectPresenter(); - } - - @Override - protected void loadData() { - CustomProgressDialog.show(getActivity()); - mPresenter.getProjectInfo(1, 294); - } - - - @Override - public void showProjectList(ProjectListData listData, boolean isRefresh) { - final List newDataList = listData.data.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - return; - } - smartRefreshLayout.finishLoadMore(); - projectAdapter.addData(newDataList); - - } - - private void initRecyclerView() { - projectDataList = new ArrayList<>(); - projectAdapter = new ProjectQuickAdapter(getActivity(), projectDataList); - project_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), - DividerItemDecoration.VERTICAL_LIST)); - project_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); - project_recyclerview.setAdapter(projectAdapter); - - projectAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", projectDataList.get(position).getLink()); - intent.putExtras(bundle); - startActivity(intent); - } - - }); - } - - //初始化下拉刷新控件 - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - mPresenter.onLoadMore(294); - } - - @Override - public void onRefresh(RefreshLayout refreshLayout) { - mPresenter.onRefreshMore(294); - } - }); - } - - public void scrollToTop() { - project_recyclerview.scrollToPosition(0); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/TodoFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/TodoFragment.java deleted file mode 100644 index 79e4f3a..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/TodoFragment.java +++ /dev/null @@ -1,229 +0,0 @@ -package com.android.learn.fragment; - -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.activity.TodoEditActivity; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.adapter.TodoQuickAdapter; -import com.android.learn.base.event.UpdateDoneEvent; -import com.android.learn.base.event.UpdateTodoEvent; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.TodoData; -import com.android.learn.base.mmodel.TodoData.DatasBean; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.TodoContract; -import com.android.learn.mpresenter.TodoPresenter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - - -public class TodoFragment extends BaseMvpFragment implements TodoContract.View { - @BindView(R.id.article_recyclerview) - RecyclerView article_recyclerview; - @BindView(R.id.smartRefreshLayout) - SmartRefreshLayout smartRefreshLayout; - @BindView(R.id.tv_empty_todo) - TextView tv_empty_todo; - private List todoList; - private TodoQuickAdapter todoAdapter; - - int fragmentPosition, clickId; - - public static TodoFragment newInstance(Bundle bundle) { - TodoFragment testFragment = new TodoFragment(); - testFragment.setArguments(bundle); - return testFragment; - } - - - @Override - public void initData(Bundle bundle) { - fragmentPosition = bundle.getInt("position", 0); - initSmartRefreshLayout(); - initRecyclerView(); - } - - @Override - public void initView(View view) { - EventBus.getDefault().register(this); - } - - @Override - public int setContentLayout() { - return R.layout.fragment_todo; - } - - @Override - public void reload() { - - } - - @Override - public TodoPresenter initPresenter() { - return new TodoPresenter(); - } - - @Override - protected void loadData() { - CustomProgressDialog.show(getActivity()); - if (fragmentPosition == 0) - mPresenter.getListNotDone(0); - if (fragmentPosition == 1) - mPresenter.getListDone(0); - } - - - private void initRecyclerView() { - todoList = new ArrayList<>(); - todoAdapter = new TodoQuickAdapter(getActivity(), todoList, fragmentPosition); - article_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), - DividerItemDecoration.VERTICAL_LIST)); - article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); - - //解决数据加载完成后, 没有停留在顶部的问题 - article_recyclerview.setFocusable(false); - article_recyclerview.setAdapter(todoAdapter); - - todoAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - DatasBean datasBean = null; - if (fragmentPosition == 0) { - datasBean = todoAdapter.getData().get(position); - Bundle bundle = new Bundle(); - bundle.putSerializable("todo_item", datasBean); - TodoEditActivity.startActivity(getActivity(), bundle); - } - } - - }); - todoAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { - @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - - DatasBean datasBean = todoAdapter.getData().get(position); - switch (view.getId()) { - case R.id.iv_item_todo: - if (fragmentPosition == 0) { - clickId = datasBean.getId(); - mPresenter.updateTodoStatus(clickId, 1); - todoAdapter.remove(position); - } - if (fragmentPosition == 1) { - clickId = datasBean.getId(); - mPresenter.updateTodoStatus(clickId, 0); - todoAdapter.remove(position); - } - - break; - case R.id.iv_item_delete: - mPresenter.deleteTodo(datasBean.getId()); - todoAdapter.remove(position); - break; - } - } - }); - } - - //初始化下拉刷新控件 - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - if (fragmentPosition == 0) - mPresenter.getListNotDone(0); - if (fragmentPosition == 1) - mPresenter.getListDone(0); - } - - - }); - } - - public void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - } - - @Override - public void showListNotDone(TodoData todoData) { - final List newDataList = todoData.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - } - smartRefreshLayout.finishLoadMore(); - todoAdapter.addData(newDataList); - - if (todoAdapter.getData().size() == 0) { - tv_empty_todo.setVisibility(View.VISIBLE); - - } else tv_empty_todo.setVisibility(View.GONE); - } - - @Override - public void showListDone(TodoData todoData) { - final List newDataList = todoData.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - } - smartRefreshLayout.finishLoadMore(); - - todoAdapter.addData(newDataList); - - if (todoAdapter.getData().size() == 0) { - tv_empty_todo.setVisibility(View.VISIBLE); - tv_empty_todo.setText(getString(R.string.empty_done)); - } else tv_empty_todo.setVisibility(View.GONE); - - - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(UpdateDoneEvent event) { - if (fragmentPosition == 1) { - todoAdapter.getData().clear(); - mPresenter.donePage = 1; - mPresenter.getListDone(0); - } - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(UpdateTodoEvent event) { - if (fragmentPosition == 0) { - todoAdapter.getData().clear(); - mPresenter.notDonePage = 1; - mPresenter.getListNotDone(0); - } - } - - @Override - public void showUpdateTodoStatus(BaseData baseData) { - if (fragmentPosition == 0) { - EventBus.getDefault().post(new UpdateDoneEvent()); - } - if (fragmentPosition == 1) { - EventBus.getDefault().post(new UpdateTodoEvent()); - } - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java deleted file mode 100644 index 3255109..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/UserFragment.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.android.learn.fragment; - -import android.os.Bundle; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.learn.R; -import com.android.learn.activity.MyCollectActivity; -import com.android.learn.activity.MyTodoActivity; -import com.android.learn.activity.RegisterLoginActivity; -import com.android.learn.activity.SettingActivity; -import com.android.learn.base.event.LoginEvent; -import com.android.learn.base.event.LogoutEvent; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.utils.Utils; -import com.android.learn.base.utils.account.UserUtil; -import com.android.learn.mcontract.UserInfoContract; -import com.android.learn.mpresenter.UserInfoPresenter; -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import butterknife.BindView; -import butterknife.OnClick; - - -public class UserFragment extends BaseMvpFragment implements UserInfoContract.View { - - @BindView(R.id.iv_user_photo) - public ImageView iv_user_photo; - @BindView(R.id.tv_user_profile_not_login) - TextView tv_user_profile_not_login; - - @Override - public void initData(Bundle bundle) { - EventBus.getDefault().register(this); - } - - @Override - public void initView(View view) { - refreshUserInfo(); - } - - @OnClick({R.id.iv_user_photo, R.id.my_setting_layout, R.id.my_collect_layout, R.id.my_todo_layout}) - public void click(View view) { - switch (view.getId()) { - case R.id.my_collect_layout: - if (!UserUtil.isLogined()) { - RegisterLoginActivity.startActivity(getActivity()); - Utils.showToast(getString(R.string.user_not_login), true); - return; - } - MyCollectActivity.startActivity(getActivity()); - break; - case R.id.my_todo_layout: - MyTodoActivity.startActivity(getActivity()); - break; - case R.id.my_setting_layout: - SettingActivity.startActivity(getActivity()); - break; - - case R.id.iv_user_photo: - if (!UserUtil.isLogined()) { - RegisterLoginActivity.startActivity(getActivity()); - } - } - } - - @Override - public int setContentLayout() { - return R.layout.fragment_user; - } - - @Override - public void reload() { - } - - @Override - public UserInfoPresenter initPresenter() { - return new UserInfoPresenter(); - } - - @Override - protected void loadData() { - - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(LoginEvent accountEvent) { - refreshUserInfo(); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(LogoutEvent logoutEvent) { - logout(); - } - - - public void refreshUserInfo() { - if (UserUtil.getUserInfo() == null) return; - if (UserUtil.isLogined()) { - String username = UserUtil.getUserInfo().data.username; - if (tv_user_profile_not_login != null) - tv_user_profile_not_login.setText(username); - String photoUrl = UserUtil.gainUserInfo().data.icon; - if (photoUrl != null) { - RequestOptions options = new RequestOptions().placeholder(R.drawable.user_default_photo); - if(iv_user_photo!=null) - Glide.with(getActivity()).load(photoUrl).apply(options).into(iv_user_photo); - } - - } else { - - } - - } - - private void logout() { - - tv_user_profile_not_login.setText(getString(R.string.login_register)); - iv_user_photo.setImageResource(R.drawable.user_default_photo); - SPUtils.clear(getActivity(), "phone_num"); - SPUtils.clear(getActivity(), "password"); - mPresenter.getLogoutData(); - RegisterLoginActivity.startActivity(getActivity()); - UserUtil.setUserInfo(null); - } - - @Override - public void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(getActivity()); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/WechatFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/WechatFragment.java deleted file mode 100644 index 89e403d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/WechatFragment.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.android.learn.fragment; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; -import android.view.View; - -import com.android.learn.R; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.WxArticle; -import com.android.learn.base.view.colorfultab.ColorClipTabLayout; -import com.android.learn.mcontract.WechatContract; -import com.android.learn.mpresenter.WechatPresenter; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - - -public class WechatFragment extends BaseMvpFragment implements WechatContract.View { - - @BindView(R.id.tab_layout) - ColorClipTabLayout tab_layout; - @BindView(R.id.view_pager) - ViewPager view_pager; - - List fragmentList = new ArrayList(); - List titleList = new ArrayList(); - - @Override - protected void loadData() { - mPresenter.getWxArticle(); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public void initView(View view) { - - } - - @Override - public int setContentLayout() { - return R.layout.fragment_wechat; - } - - @Override - public void reload() { - } - - @Override - public WechatPresenter initPresenter() { - return new WechatPresenter(); - } - - @Override - public void showWxArticle(List list) { - WechatSubFragment firstSubFragment = null; - int firstId = 0; - int size = list.size(); - for (int i = 0; i < size; i++) { - WxArticle wxArticle = list.get(i); - titleList.add(wxArticle.getName()); - WechatSubFragment wechatSubFragment = WechatSubFragment.newInstance(wxArticle.getId(), wxArticle.getName()); - fragmentList.add(wechatSubFragment); - if (i == 0) { - firstId = wxArticle.getId(); - firstSubFragment = wechatSubFragment; - } - } - CustomPagerAdapter adapter = new CustomPagerAdapter(getFragmentManager(), fragmentList); - view_pager.setAdapter(adapter); - view_pager.setOffscreenPageLimit(list.size()); - tab_layout.setupWithViewPager(view_pager); - firstSubFragment.userId = firstId; - firstSubFragment.loadData(); - } - - - public class CustomPagerAdapter extends FragmentPagerAdapter { - - private List mFragments; - - public CustomPagerAdapter(FragmentManager fm, List fragments) { - super(fm); - this.mFragments = fragments; - fm.beginTransaction().commitAllowingStateLoss(); - } - - @Override - public Fragment getItem(int position) { - return this.mFragments.get(position); - } - - @Override - public int getCount() { - return this.mFragments.size(); - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public CharSequence getPageTitle(int position) { - return titleList.get(position); - } - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/fragment/WechatSubFragment.java b/AndroidLearnProject/app/src/main/code_backup/fragment/WechatSubFragment.java deleted file mode 100644 index 3804790..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/fragment/WechatSubFragment.java +++ /dev/null @@ -1,191 +0,0 @@ -package com.android.learn.fragment; - -import android.content.Intent; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; - -import com.android.learn.R; -import com.android.learn.activity.ArticleDetailActivity; -import com.android.learn.adapter.ArticleQuickAdapter; -import com.android.learn.adapter.DividerItemDecoration; -import com.android.learn.base.event.CancelCollectEvent; -import com.android.learn.base.event.LoginEvent; -import com.android.learn.base.fragment.BaseMvpFragment; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.view.CustomProgressDialog; -import com.android.learn.mcontract.WechatSubContract; -import com.android.learn.mpresenter.WechatSubPresenter; -import com.chad.library.adapter.base.BaseQuickAdapter; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; - -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; -import org.greenrobot.eventbus.ThreadMode; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - - -public class WechatSubFragment extends BaseMvpFragment implements WechatSubContract.View { - @BindView(R.id.article_recyclerview) - RecyclerView article_recyclerview; - @BindView(R.id.smartRefreshLayout) - SmartRefreshLayout smartRefreshLayout; - private List articleDataList; - private ArticleQuickAdapter feedArticleAdapter; - - int userId; - String userName; - - public static WechatSubFragment newInstance(int id, String name) { - WechatSubFragment testFragment = new WechatSubFragment(); - Bundle bundle = new Bundle(); - bundle.putInt("id", id); - bundle.putString("name", name); - testFragment.setArguments(bundle); - return testFragment; - } - - - @Override - public void initData(Bundle bundle) { - userId = bundle.getInt("id", 408); - userName = bundle.getString("name"); - initSmartRefreshLayout(); - initRecyclerView(); - } - - @Override - public void initView(View view) { - EventBus.getDefault().register(this); - } - - @Override - public int setContentLayout() { - return R.layout.fragment_wechat_sub; - } - - @Override - public void reload() { - - } - - @Override - public WechatSubPresenter initPresenter() { - return new WechatSubPresenter(); - } - - @Override - protected void loadData() { - CustomProgressDialog.show(getActivity()); - if (userId != 0) - mPresenter.getWxArtileById(userId); - } - - @Override - public void showWxArticleById(FeedArticleListData datas) { - final List newDataList = datas.getDatas(); - if (newDataList == null || newDataList.size() == 0) { - smartRefreshLayout.finishLoadMoreWithNoMoreData(); - return; - } - smartRefreshLayout.finishLoadMore(); - feedArticleAdapter.addData(newDataList); - - } - - @Override - public void showCollectArticleData(int position, FeedArticleListData.FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - @Override - public void showCancelCollectArticleData(int position, FeedArticleListData.FeedArticleData feedArticleData) { - feedArticleAdapter.setData(position, feedArticleData); - } - - @Override - public void showCancelCollectArticleData(int id) { - int position = feedArticleAdapter.getPosById(id); - if (position == -1) return; - FeedArticleData feedArticleData = articleDataList.get(position); - feedArticleData.setCollect(false); - feedArticleAdapter.setData(position, feedArticleData); - } - - - private void initRecyclerView() { - articleDataList = new ArrayList<>(); - feedArticleAdapter = new ArticleQuickAdapter(getActivity(), articleDataList, "WechatSubFragment"); - article_recyclerview.addItemDecoration(new DividerItemDecoration(getActivity(), - DividerItemDecoration.VERTICAL_LIST)); - article_recyclerview.setLayoutManager(new LinearLayoutManager(getActivity())); - - //解决数据加载完成后, 没有停留在顶部的问题 - article_recyclerview.setFocusable(false); - article_recyclerview.setAdapter(feedArticleAdapter); - - feedArticleAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { - @Override - public void onItemClick(BaseQuickAdapter adapter, View view, int position) { - Intent intent = new Intent(getActivity(), ArticleDetailActivity.class); - Bundle bundle = new Bundle(); - bundle.putString("url", feedArticleAdapter.getData().get(position).getLink()); - intent.putExtras(bundle); - startActivity(intent); - } - - }); - feedArticleAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { - @Override - public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { - if (feedArticleAdapter.getData().get(position).isCollect()) { - mPresenter.cancelCollectArticle(position, feedArticleAdapter.getData().get(position)); - } else { - mPresenter.addCollectArticle(position, feedArticleAdapter.getData().get(position)); - } - } - }); - } - - //初始化下拉刷新控件 - private void initSmartRefreshLayout() { - smartRefreshLayout.setEnableLoadMore(true); - smartRefreshLayout.setEnableRefresh(false); - smartRefreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容 - smartRefreshLayout.setEnableFooterFollowWhenLoadFinished(true); - smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(RefreshLayout refreshLayout) { - mPresenter.getWxArtileById(userId); - } - - - }); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(CancelCollectEvent event) { - mPresenter.cancelCollectArticle(event.id); - } - - @Subscribe(threadMode = ThreadMode.MAIN) - public void onEvent(LoginEvent accountEvent) { - feedArticleAdapter.getData().clear(); - feedArticleAdapter.notifyDataSetChanged(); - mPresenter.getWxArtileById(userId); - mPresenter.num = 0; - } - - public void onDestroy() { - super.onDestroy(); - EventBus.getDefault().unregister(this); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/CollectContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/CollectContract.java deleted file mode 100644 index 08fb77e..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/CollectContract.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class CollectContract { - - public interface Presenter { - - - void getCollectList(); - - void cancelCollectArticle(int position, int id); - } - - public interface View { - - void showCollectList(FeedArticleListData feedArticleListData); - - void showCancelCollectArticle(int position, int id); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/HomeContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/HomeContract.java deleted file mode 100644 index 971711d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/HomeContract.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.BannerListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.FeedArticleListData; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class HomeContract { - - public interface Presenter { - - void getBannerInfo(); - - void getFeedArticleList(int num); - - void onLoadMore(); - - void onRefreshMore(); - - void addCollectArticle(int position, FeedArticleData feedArticleData); - - void cancelCollectArticle(int position, FeedArticleData feedArticleData); - } - - public interface View { - - void showArticleList(FeedArticleListData itemBeans, boolean isRefresh); - - void showBannerList(BannerListData itemBeans); - - void showCollectArticleData(int position, FeedArticleData feedArticleData); - - void showCancelCollectArticleData(int position, FeedArticleData feedArticleData); - void showCancelCollectArticleData(int id); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeChildContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeChildContract.java deleted file mode 100644 index 164a337..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeChildContract.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.android.learn.mcontract; - - -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.TreeBean; - -import java.util.List; - - -public class KnowledgeChildContract { - - public interface Presenter { - void getKnowledgeArticleList(int num,int cid); - - void onRefreshMore(int cid); - - void onLoadMore(int cid); - - void addCollectArticle(int position, FeedArticleData feedArticleData); - - void cancelCollectArticle(int position, FeedArticleData feedArticleData); - } - - public interface View { - void showArticleList(FeedArticleListData itemBeans, boolean isRefresh); - void showCollectArticleData(int position, FeedArticleData feedArticleData); - - void showCancelCollectArticleData(int id, FeedArticleData feedArticleData); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeContract.java deleted file mode 100644 index ad4efd3..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/KnowledgeContract.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.android.learn.mcontract; - - - -import com.android.learn.base.mmodel.TreeBean; - -import java.util.List; - - -public class KnowledgeContract { - - public interface View { - void showKnowledge(List data); - - } - - public interface Presenter { - void getKnowledge(); - - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/MainActivityContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/MainActivityContract.java deleted file mode 100644 index 5942515..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/MainActivityContract.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.HotKeyData; - -import java.util.List; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class MainActivityContract { - - public interface Presenter { - - void getHotKey(); - - } - - public interface View { - - void showHotKey(List list); - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/ProjectContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/ProjectContract.java deleted file mode 100644 index d3222df..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/ProjectContract.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.ProjectListData; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class ProjectContract { - - public interface Presenter { - - void getProjectInfo(int page, int cid); - - void onRefreshMore(int cid); - - void onLoadMore(int cid); - } - - public interface View { - - void showProjectList(ProjectListData itemBeans, boolean isRefresh); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/RegisterLoginContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/RegisterLoginContract.java deleted file mode 100644 index e58d6d2..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/RegisterLoginContract.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.RegisterLoginData; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class RegisterLoginContract { - - public interface Presenter { - - void login(String account, String password); - - void register(String account, String password, String rePassword); - - } - - public interface View { - - void showRegisterResData(RegisterLoginData registerResData); - - void showLoginResData(RegisterLoginData loginData); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/SearchContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/SearchContract.java deleted file mode 100644 index 01fe7bb..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/SearchContract.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.HotKeyData; - -import java.util.List; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class SearchContract { - - public interface Presenter { - - - void getFeedArticleList(String key); - - void onLoadMore(String key); - - void addCollectArticle(int position, FeedArticleListData.FeedArticleData feedArticleData); - - void cancelCollectArticle(int position, FeedArticleListData.FeedArticleData feedArticleData); - } - - public interface View { - - - void showArticleList(FeedArticleListData itemBeans); - - void showCollectArticleData(int position, FeedArticleListData.FeedArticleData feedArticleData); - - void showCancelCollectArticleData(int id, FeedArticleListData.FeedArticleData feedArticleData); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/SplashLoginContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/SplashLoginContract.java deleted file mode 100644 index 9f6e46e..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/SplashLoginContract.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.RegisterLoginData; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class SplashLoginContract { - - public interface Presenter { - - - void login(String username, String password); - - - } - - public interface View { - - void showLoginResData(RegisterLoginData loginResData); - - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoAddContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoAddContract.java deleted file mode 100644 index 61282f4..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoAddContract.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.BaseData; - -import java.util.Map; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class TodoAddContract { - - public interface Presenter { - - void addTodo( Map map); - - } - - public interface View { - - - void showAddTodo(BaseData todoData); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoContract.java deleted file mode 100644 index d75b750..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoContract.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.TodoData; - -import java.util.Map; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class TodoContract { - - public interface Presenter { - - - void getListNotDone(int type); - - void getListDone(int type); - - void deleteTodo(int id); - - void updateTodoStatus(int id, int status); - - } - - public interface View { - - void showListNotDone(TodoData todoData); - - void showListDone(TodoData todoData); - void showUpdateTodoStatus(BaseData todoData); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoEditContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoEditContract.java deleted file mode 100644 index 689516a..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/TodoEditContract.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.TodoData; - -import java.util.Map; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class TodoEditContract { - - public interface Presenter { - - void updateTodo(int id, Map map); - - } - - public interface View { - - - void showUpdateTodo(BaseData todoData); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/UserInfoContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/UserInfoContract.java deleted file mode 100644 index 890d489..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/UserInfoContract.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.android.learn.mcontract; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class UserInfoContract { - - public interface Presenter { - - - void getLogoutData(); - - } - public interface View { - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/WechatContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/WechatContract.java deleted file mode 100644 index 4ecf429..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/WechatContract.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.BannerListData; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.WxArticle; - -import java.util.List; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class WechatContract { - - public interface Presenter { - - void getWxArticle(); - - } - - public interface View { - - void showWxArticle(List list); - - - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mcontract/WechatSubContract.java b/AndroidLearnProject/app/src/main/code_backup/mcontract/WechatSubContract.java deleted file mode 100644 index d9dc417..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mcontract/WechatSubContract.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.android.learn.mcontract; - -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.WxArticle; - -import java.util.List; - -/** - * Created by gaolei on 2018/6/18. - */ - -public class WechatSubContract { - - public interface Presenter { - - - void getWxArtileById(int id); - - - void addCollectArticle(int position, FeedArticleData feedArticleData); - - void cancelCollectArticle(int position, FeedArticleData feedArticleData); - } - - public interface View { - - - void showWxArticleById(FeedArticleListData datas); - - void showCollectArticleData(int position, FeedArticleData feedArticleData); - - void showCancelCollectArticleData(int position, FeedArticleData feedArticleData); - - void showCancelCollectArticleData(int id); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/CollectPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/CollectPresenter.java deleted file mode 100644 index f7250f5..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/CollectPresenter.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.CollectContract; - -import io.reactivex.Observable; - - -public class CollectPresenter extends BasePresenter implements CollectContract.Presenter { - - int page = 0; - - @Override - public void getCollectList() { - - Observable observable = mRestService.getCollectList(page); - addSubscribe(observable, new BaseObserver>(true) { - - @Override - public void onNext(BaseResponse data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showCollectList(data.getData()); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - page++; - } - - @Override - public void cancelCollectArticle(final int position, final int id) { -// int id = feedArticleData.getId(); - Observable observable = mRestService.cancelCollectArticle(id, -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showCancelCollectArticle(position, id); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/HomePresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/HomePresenter.java deleted file mode 100644 index 70fc3a2..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/HomePresenter.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BannerListData; -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.HomeContract; - -import io.reactivex.Observable; - - -public class HomePresenter extends BasePresenter implements HomeContract.Presenter { - private boolean isRefresh = true; - public int mCurrentPage = 0; - - @Override - public void onRefreshMore() { - Observable observable = mRestService.getFeedArticleList(-1); - addSubscribe(observable, new BaseObserver>(false) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData(), true); - } - }); - - - } - - @Override - public void onLoadMore() { - ++mCurrentPage; - Observable observable = mRestService.getFeedArticleList(mCurrentPage); - addSubscribe(observable, new BaseObserver>(false) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData(), false); - } - }); - } - - @Override - public void getFeedArticleList(int num) { - Observable observable = mRestService.getFeedArticleList(num); - addSubscribe(observable, new BaseObserver>(true) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData(), false); - } - }); - } - - @Override - public void getBannerInfo() { - Observable observable = mRestService.getBannerListData(); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BannerListData bannerListData) { - mView.showBannerList(bannerListData); - } - - }); - - - } - - - @Override - public void addCollectArticle(final int position, final FeedArticleData feedArticleData) { - Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(true); - mView.showCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - - } - - @Override - public void cancelCollectArticle(final int position, final FeedArticleData feedArticleData) { - Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(false); - mView.showCancelCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } - - public void cancelCollectArticle(final int id) { - Observable observable = mRestService.cancelCollectArticle(id, -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showCancelCollectArticleData(id); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgeChildPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgeChildPresenter.java deleted file mode 100644 index 183a72d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgeChildPresenter.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.android.learn.mpresenter; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.KnowledgeChildContract; - -import io.reactivex.Observable; - - -public class KnowledgeChildPresenter extends BasePresenter implements KnowledgeChildContract.Presenter { - private int mCurrentPage = 0; - - @Override - public void getKnowledgeArticleList(int num, int cid) { - Observable observable = mRestService.getKnowledgeArticleList(num, cid); - addSubscribe(observable, new BaseObserver>(true) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData(), false); - } - }); - } - - @Override - public void onRefreshMore(int cid) { - Observable observable = mRestService.getKnowledgeArticleList(-1, cid); - addSubscribe(observable, new BaseObserver>(false) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData(), true); - } - }); - - - } - - @Override - public void onLoadMore(int cid) { - ++mCurrentPage; - Observable observable = mRestService.getKnowledgeArticleList(mCurrentPage, cid); - addSubscribe(observable, new BaseObserver>(false) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData(), false); - } - }); - } - - @Override - public void addCollectArticle(final int position, final FeedArticleData feedArticleData) { - Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(true); - mView.showCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - - } - - @Override - public void cancelCollectArticle(final int position, final FeedArticleData feedArticleData) { - Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(false); - mView.showCancelCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } - - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgePresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgePresenter.java deleted file mode 100644 index b69f2c6..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/KnowledgePresenter.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.android.learn.mpresenter; - -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.TreeBean; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.mcontract.KnowledgeContract; - -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.disposables.Disposable; - - -/** - *
- *     author : lex
- *     e-mail : ldlywt@163.com
- *     time   : 2018/09/05
- *     desc   :
- *     version: 1.0
- * 
- */ -public class KnowledgePresenter extends BasePresenter implements KnowledgeContract.Presenter { - - @Override - public void getKnowledge() { - - Observable observable = mRestService.getKnowledgeTree(); - BaseObserver baseObserver=new BaseObserver>>(false) { - @Override - public void onNext(BaseResponse> datas) { - mView.showKnowledge(datas.data); - } - }; - baseObserver.setCancelDialog(false); - addSubscribe(observable, baseObserver); - - - } - - - - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/MainActivityPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/MainActivityPresenter.java deleted file mode 100644 index d368d8d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/MainActivityPresenter.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.HotKeyData; -import com.android.learn.base.mmodel.TreeBean; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.CollectContract; -import com.android.learn.mcontract.MainActivityContract; - -import java.util.List; - -import io.reactivex.Observable; - - -public class MainActivityPresenter extends BasePresenter implements MainActivityContract.Presenter { - - private int mCurrentPage = 0; - - @Override - public void getHotKey() { - Observable observable = mRestService.getHotKey(); - addSubscribe(observable, new BaseObserver>>(true) { - - @Override - public void onNext(BaseResponse> datas) { - if (datas.errorCode == BaseData.SUCCESS) { - mView.showHotKey(datas.data); - } else ResponseStatusUtil.handleResponseStatus(datas); - } - - }); - - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/ProjectPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/ProjectPresenter.java deleted file mode 100644 index d18e468..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/ProjectPresenter.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.ProjectListData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.mcontract.ProjectContract; - -import io.reactivex.Observable; - - -public class ProjectPresenter extends BasePresenter implements ProjectContract.Presenter { - - private int mCurrentPage = 1; - - @Override - public void getProjectInfo(int page, int cid) { - Observable observable = mRestService.getProjectListData(page, cid); - addSubscribe(observable, new BaseObserver(true) { - @Override - public void onNext(ProjectListData projectListData) { - mView.showProjectList(projectListData, false); - } - }); - } - - @Override - public void onRefreshMore(int cid) { - Observable observable = mRestService.getProjectListData(-1, cid); - addSubscribe(observable, new BaseObserver(false) { - @Override - public void onNext(ProjectListData projectListData) { - mView.showProjectList(projectListData, true); - } - }); - } - - @Override - public void onLoadMore(int cid) { - ++mCurrentPage; - Observable observable = mRestService.getProjectListData(mCurrentPage, cid); - addSubscribe(observable, new BaseObserver(false) { - @Override - public void onNext(ProjectListData projectListData) { - mView.showProjectList(projectListData, false); - } - }); - } - - -} - diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/RegisterLoginPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/RegisterLoginPresenter.java deleted file mode 100644 index d0f394b..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/RegisterLoginPresenter.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.RegisterLoginData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.retrofit.ApiService; -import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.base.utils.Utils; -import com.android.learn.mcontract.RegisterLoginContract; - -import io.reactivex.Observable; - - -public class RegisterLoginPresenter extends BasePresenter implements RegisterLoginContract.Presenter { - @Override - public void login(String account, String password) { - Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).login(account, password); - addSubscribe(observable, new BaseObserver(false) { - @Override - public void onNext(RegisterLoginData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showLoginResData(data); - } else ResponseStatusUtil.handleResponseStatus(data); - - } - }); - } - - @Override - public void register(String account, String password, String repassword) { - Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).register(account, password, repassword); - addSubscribe(observable, new BaseObserver(false) { - @Override - public void onNext(RegisterLoginData data) { - if (data.errorCode == BaseData.SUCCESS) { - Utils.showToast("注册成功", true); - mView.showRegisterResData(data); - } else ResponseStatusUtil.handleResponseStatus(data); - - } - }); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/SearchPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/SearchPresenter.java deleted file mode 100644 index ba70ade..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/SearchPresenter.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.SearchContract; - -import io.reactivex.Observable; - - -public class SearchPresenter extends BasePresenter implements SearchContract.Presenter { - - private int mCurrentPage = 0; - - @Override - public void getFeedArticleList( String key) { - Observable observable = mRestService.search(mCurrentPage, key); - addSubscribe(observable, new BaseObserver>(true) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData()); - } - }); - } - - @Override - public void onLoadMore(String key) { - ++mCurrentPage; - Observable observable = mRestService.search(mCurrentPage, key); - addSubscribe(observable, new BaseObserver>(true) { - @Override - public void onNext(BaseResponse feedArticleListData) { - mView.showArticleList(feedArticleListData.getData()); - } - }); - } - @Override - public void addCollectArticle(final int position, final FeedArticleListData.FeedArticleData feedArticleData) { - Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(true); - mView.showCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - - } - - @Override - public void cancelCollectArticle(final int position, final FeedArticleListData.FeedArticleData feedArticleData) { - Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(false); - mView.showCancelCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } - - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/SplashLoginPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/SplashLoginPresenter.java deleted file mode 100644 index 10cbecd..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/SplashLoginPresenter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.learn.mpresenter; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.RegisterLoginData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.retrofit.ApiService; -import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.SplashLoginContract; - -import io.reactivex.Observable; - - -public class SplashLoginPresenter extends BasePresenter implements SplashLoginContract.Presenter { - - @Override - public void login(String account, String password) { - Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).login(account, password); - addSubscribe(observable, new BaseObserver(false) { - @Override - public void onNext(RegisterLoginData data) { - mView.showLoginResData(data); - - } - }); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoAddPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoAddPresenter.java deleted file mode 100644 index 8aa7201..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoAddPresenter.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.TodoAddContract; -import com.android.learn.mcontract.TodoEditContract; - -import java.util.Map; - -import io.reactivex.Observable; - - -public class TodoAddPresenter extends BasePresenter implements TodoAddContract.Presenter { - - @Override - public void addTodo( Map map) { - Observable observable = mRestService.addTodo(map); - - addSubscribe(observable, new BaseObserver(false) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showAddTodo(data); - } else ResponseStatusUtil.handleResponseStatus(data); - } - }); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoEditPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoEditPresenter.java deleted file mode 100644 index a55f3e1..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoEditPresenter.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.TodoData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.TodoContract; -import com.android.learn.mcontract.TodoEditContract; - -import java.util.Map; - -import io.reactivex.Observable; - - -public class TodoEditPresenter extends BasePresenter implements TodoEditContract.Presenter { - - @Override - public void updateTodo(int id, Map map) { - Observable observable = mRestService.updateTodo(id, map); - - addSubscribe(observable, new BaseObserver(false) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showUpdateTodo(data); - } else ResponseStatusUtil.handleResponseStatus(data); - } - }); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoPresenter.java deleted file mode 100644 index d48c4bb..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/TodoPresenter.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.TodoData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.TodoContract; - -import java.util.Map; - -import io.reactivex.Observable; - - -public class TodoPresenter extends BasePresenter implements TodoContract.Presenter { - public int notDonePage = 1, donePage = 1; - - @Override - public void getListNotDone(int type) { - Observable observable = mRestService.getListNotDone(type, notDonePage); - addSubscribe(observable, new BaseObserver>(true) { - - @Override - public void onNext(BaseResponse data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showListNotDone(data.getData()); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - notDonePage++; - } - - @Override - public void getListDone(int type) { - Observable observable = mRestService.getListDone(type, donePage); - addSubscribe(observable, new BaseObserver>(true) { - - @Override - public void onNext(BaseResponse data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showListDone(data.getData()); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - donePage++; - } - - @Override - public void deleteTodo(int id) { - Observable observable = mRestService.deleteTodo(id); - - addSubscribe(observable, new BaseObserver(false) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - } else ResponseStatusUtil.handleResponseStatus(data); - } - }); - } - //status: 0或1,传1代表未完成到已完成 - @Override - public void updateTodoStatus(int id, int status) { - Observable observable = mRestService.updateTodoStatus(id, status); - - addSubscribe(observable, new BaseObserver(false) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showUpdateTodoStatus(data); - } else ResponseStatusUtil.handleResponseStatus(data); - } - }); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/UserInfoPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/UserInfoPresenter.java deleted file mode 100644 index 468d861..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/UserInfoPresenter.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.android.learn.mpresenter; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.retrofit.ApiService; -import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.mcontract.UserInfoContract; - -import io.reactivex.Observable; - -public class UserInfoPresenter extends BasePresenter implements UserInfoContract.Presenter { - - @Override - public void getLogoutData() { - - Observable observable = RetrofitProvider.getInstance().createService(ApiService.class).logout(); - addSubscribe(observable, new BaseObserver(false) { - @Override - public void onNext(BaseData baseData) { - } - }); - } - - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatPresenter.java deleted file mode 100644 index ceb3ec4..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatPresenter.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BannerListData; -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mmodel.WxArticle; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.HomeContract; -import com.android.learn.mcontract.WechatContract; - -import java.util.List; - -import io.reactivex.Observable; - - -public class WechatPresenter extends BasePresenter implements WechatContract.Presenter { - - @Override - public void getWxArticle() { - Observable observable = mRestService.getWxArticle(); - addSubscribe(observable, new BaseObserver>>(false) { - @Override - public void onNext(BaseResponse> datas) { - mView.showWxArticle(datas.data); - } - }); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatSubPresenter.java b/AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatSubPresenter.java deleted file mode 100644 index 5690f34..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/mpresenter/WechatSubPresenter.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.android.learn.mpresenter; - - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.FeedArticleListData.FeedArticleData; -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import com.android.learn.base.utils.ResponseStatusUtil; -import com.android.learn.mcontract.WechatSubContract; - -import io.reactivex.Observable; - - -public class WechatSubPresenter extends BasePresenter implements WechatSubContract.Presenter { - - public int num=0; - @Override - public void getWxArtileById(int id) { - Observable observable = mRestService.getWxArtileById(id, num); - addSubscribe(observable, new BaseObserver>(true) { - - @Override - public void onNext(BaseResponse listData) { - mView.showWxArticleById(listData.getData()); - } - - }); - num++; - } - - @Override - public void addCollectArticle(final int position, final FeedArticleData feedArticleData) { - Observable observable = mRestService.addCollectArticle(feedArticleData.getId()); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(true); - mView.showCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - - } - - @Override - public void cancelCollectArticle(final int position, final FeedArticleData feedArticleData) { - Observable observable = mRestService.cancelCollectArticle(feedArticleData.getId(), -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - feedArticleData.setCollect(false); - mView.showCancelCollectArticleData(position, feedArticleData); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } - - public void cancelCollectArticle(final int id) { - Observable observable = mRestService.cancelCollectArticle(id, -1); - addSubscribe(observable, new BaseObserver(true) { - - @Override - public void onNext(BaseData data) { - if (data.errorCode == BaseData.SUCCESS) { - mView.showCancelCollectArticleData(id); - } else ResponseStatusUtil.handleResponseStatus(data); - } - - }); - } - -} diff --git a/AndroidLearnProject/app/src/main/code_backup/view/CustomViewPager.java b/AndroidLearnProject/app/src/main/code_backup/view/CustomViewPager.java deleted file mode 100644 index 3b9263d..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/view/CustomViewPager.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.android.learn.view; - -import android.content.Context; -import android.support.v4.view.ViewPager; -import android.util.AttributeSet; -import android.util.Log; -import android.view.MotionEvent; -import android.view.View; - - -public class CustomViewPager extends ViewPager { - - - public boolean canScroll = true; - - public CustomViewPager(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public CustomViewPager(Context context) { - super(context); - } - - - public void setCanScroll(boolean canScroll) { - this.canScroll = canScroll; - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - return canScroll && super.onTouchEvent(ev); - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - return canScroll && super.onInterceptTouchEvent(ev); - } - - @Override - public boolean dispatchTouchEvent(MotionEvent ev) { - if(getCurrentItem()!=0) - getParent().requestDisallowInterceptTouchEvent(true);//如果不是viewpager的第一项让父控件不要拦截事件 - return super.dispatchTouchEvent(ev); - } - -// @Override -// protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { -// if (v != this && v instanceof ViewPager) { //判断当前的View是不是ViewPager -// int currentItem = ((ViewPager) v).getCurrentItem(); //当前的条目 -// int countItem = ((ViewPager) v).getAdapter().getCount(); //总的条目 -// if ((currentItem == (countItem - 1) && dx < 0) || (currentItem == 0 && dx > 0)) { //判断当前条目以及滑动方向 -// return false; -// } -// return true; -// } -// return super.canScroll(v, checkV, dx, x, y); -// } - - @Override - public void setCurrentItem(int item) { - setCurrentItem(item, false); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/view/SearchViewUtils.java b/AndroidLearnProject/app/src/main/code_backup/view/SearchViewUtils.java deleted file mode 100644 index a1b7817..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/view/SearchViewUtils.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.android.learn.view; - -import android.animation.Animator; -import android.content.Context; -import android.os.Build; -import android.support.v7.widget.CardView; -import android.view.View; -import android.view.ViewAnimationUtils; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; - - -public class SearchViewUtils { - public static void handleToolBar(final Context context, final View search, final EditText editText) { - //隐藏 - if (search.getVisibility() == View.VISIBLE) { - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - final Animator animatorHide = ViewAnimationUtils.createCircularReveal(search, - search.getWidth() - dip2px(context, 56), - dip2px(context, 23), - //确定元的半径(算长宽的斜边长,这样半径不会太短也不会很长效果比较舒服) - (float) Math.hypot(search.getWidth(), search.getHeight()), - 0); - animatorHide.addListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animation) { - - } - - @Override - public void onAnimationEnd(Animator animation) { - search.setVisibility(View.GONE); - ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(search.getWindowToken(), 0); - } - - @Override - public void onAnimationCancel(Animator animation) { - - } - - @Override - public void onAnimationRepeat(Animator animation) { - - } - }); - animatorHide.setDuration(300); - animatorHide.start(); - } else { -// 关闭输入法 - ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(search.getWindowToken(), 0); - search.setVisibility(View.GONE); - } - editText.setText(""); - search.setEnabled(false); - } - //显示 - else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - final Animator animator = ViewAnimationUtils.createCircularReveal(search, - search.getWidth() - dip2px(context, 56), - dip2px(context, 23), - 0, - (float) Math.hypot(search.getWidth(), search.getHeight())); - animator.addListener(new Animator.AnimatorListener() { - @Override - public void onAnimationStart(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); - } - - @Override - public void onAnimationCancel(Animator animation) { - - } - - @Override - public void onAnimationRepeat(Animator animation) { - - } - }); - search.setVisibility(View.VISIBLE); - if (search.getVisibility() == View.VISIBLE) { - animator.setDuration(300); - animator.start(); - search.setEnabled(true); - } - } else { - search.setVisibility(View.VISIBLE); - search.setEnabled(true); - // 关闭输入法 - ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); - } - } - } - - - public static int dip2px(Context context, float dp) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dp * scale + 0.5); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Bar.java b/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Bar.java deleted file mode 100644 index 2a89f48..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Bar.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.android.learn.view.fontsliderbar; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.text.TextUtils; - -import com.android.learn.R; - -/** - * Created by Administrator on 2017/9/6 0006. - */ -public class Bar { - - private Paint mBarPaint; - private Paint mTextPaint; - - private final float mLeftX; - private final float mRightX; - private final float mY; - private final float mPadding; - - private int mSegments; - private float mTickDistance; - private final float mTickHeight; - private final float mTickStartY; - private final float mTickEndY; - private int mtextSize; - Context context; - - public Bar(Context context, float x, float y, float width, int tickCount, float tickHeight, - float barWidth, int barColor, int textColor, int textSize, int padding) { - this.context = context; - mLeftX = x; - mRightX = x + width; - mY = y; - mPadding = padding; - mtextSize = textSize; - - mSegments = tickCount - 1; - mTickDistance = width / mSegments; - mTickHeight = tickHeight; - mTickStartY = mY - mTickHeight / 2f; - mTickEndY = mY + mTickHeight / 2f; - - mBarPaint = new Paint(); - mBarPaint.setColor(barColor); - mBarPaint.setStrokeWidth(barWidth); - mBarPaint.setAntiAlias(true); - - mTextPaint = new Paint(); - mTextPaint.setColor(textColor); - mTextPaint.setTextSize(textSize); - mTextPaint.setAntiAlias(true); - } - - public void draw(Canvas canvas) { - drawLine(canvas); - drawTicks(canvas,context); - } - - public float getLeftX() { - return mLeftX; - } - - public float getRightX() { - return mRightX; - } - - //获取标尺最近的刻度 通过圆所在的位置 - public float getNearestTickCoordinate(Thumb thumb) { - final int nearestTickIndex = getNearestTickIndex(thumb); - final float nearestTickCoordinate = mLeftX + (nearestTickIndex * mTickDistance); - return nearestTickCoordinate; - } - - //获取标尺最近的刻度 通过下标 - public float getNearestTickCoordinate(int index) { - final int nearestTickIndex = index; - final float nearestTickCoordinate = mLeftX + (nearestTickIndex * mTickDistance); - return nearestTickCoordinate; - } - - - public int getNearestTickIndex(Thumb thumb) { - return getNearestTickIndex(thumb.getX()); - } - - public int getNearestTickIndex(float x) { - return (int) ((x - mLeftX + mTickDistance / 2f) / mTickDistance); - } - - private void drawLine(Canvas canvas) { - canvas.drawLine(mLeftX, mY, mRightX, mY, mBarPaint); - } - - private void drawTicks(Canvas canvas,Context context) { - for (int i = 0; i <= mSegments; i++) { - final float x = i * mTickDistance + mLeftX; - canvas.drawLine(x, mTickStartY, x, mTickEndY, mBarPaint); - //绘制头尾 A 以及标准 - String text = ""; - if (i == 0) { - text = "A"; - mTextPaint.setTextSize(mtextSize * 0.9f); - } - if (i == 1) { - if (context != null) - text = context.getString(R.string.standrd); - mTextPaint.setTextSize(mtextSize); - } - if (i == mSegments) { - text = "A"; - mTextPaint.setTextSize(mtextSize * 1.4f); - } - if (!TextUtils.isEmpty(text)) { - canvas.drawText(text, x - getTextWidth(text) / 2, mTickStartY - mPadding, mTextPaint); - } - } - } - - float getTextWidth(String text) { - return mTextPaint.measureText(text); - } - - public void destroyResources() { - if (null != mBarPaint) { - mBarPaint = null; - } - if (null != mTextPaint) { - mTextPaint = null; - } - } -} \ No newline at end of file diff --git a/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/FontSliderBar.java b/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/FontSliderBar.java deleted file mode 100644 index 18e562c..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/FontSliderBar.java +++ /dev/null @@ -1,421 +0,0 @@ -package com.android.learn.view.fontsliderbar; - -import android.animation.ValueAnimator; -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.util.AttributeSet; -import android.util.Log; -import android.view.MotionEvent; -import android.view.View; - -/** - * Created by Administrator on 2017/9/6 0006. - */ - -public class FontSliderBar extends View { - - private static final String TAG = "SliderBar"; - - private static final int DEFAULT_TICK_COUNT = 3; - private static final float DEFAULT_TICK_HEIGHT = 24; - - private static final float DEFAULT_BAR_WIDTH = 3; - private static final int DEFAULT_BAR_COLOR = Color.LTGRAY; - - private static final int DEFAULT_TEXT_SIZE = 14; - private static final int DEFAULT_TEXT_COLOR = Color.LTGRAY; - private static final int DEFAULT_TEXT_PADDING = 20; - - private static final float DEFAULT_THUMB_RADIUS = 20; - private static final int DEFAULT_THUMB_COLOR_NORMAL = 0xff33b5e5; - private static final int DEFAULT_THUMB_COLOR_PRESSED = 0xff33b5e5; - - private int mTickCount = DEFAULT_TICK_COUNT; - private float mTickHeight = DEFAULT_TICK_HEIGHT; - - private float mBarWidth = DEFAULT_BAR_WIDTH; - private int mBarColor = DEFAULT_BAR_COLOR; - - private float mThumbRadius = DEFAULT_THUMB_RADIUS; - private int mThumbColorNormal = DEFAULT_THUMB_COLOR_NORMAL; - private int mThumbColorPressed = DEFAULT_THUMB_COLOR_PRESSED; - - private int mTextSize = DEFAULT_TEXT_SIZE; - private int mTextColor = DEFAULT_TEXT_COLOR; - private int mTextPadding = DEFAULT_TEXT_PADDING; - - private int mDefaultWidth = 500; - - private int mCurrentIndex = 1; - private boolean mAnimation = true; - - private Thumb mThumb; - private Bar mBar; - private float mWith; - - private ValueAnimator mAnimator; - private OnSliderBarChangeListener mListener; - Context context; - - public FontSliderBar(Context context) { - super(context); - } - - public FontSliderBar(Context context, AttributeSet attrs) { - super(context, attrs); - this.context=context; - } - - public FontSliderBar(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int width; - int height; - - final int measureWidthMode = MeasureSpec.getMode(widthMeasureSpec); - final int measureHeightMode = MeasureSpec.getMode(heightMeasureSpec); - final int measureWidth = MeasureSpec.getSize(widthMeasureSpec); - final int measureHeight = MeasureSpec.getSize(heightMeasureSpec); - - if (measureWidthMode == MeasureSpec.AT_MOST) { - width = measureWidth; - } else if (measureWidthMode == MeasureSpec.EXACTLY) { - width = measureWidth; - } else { - width = mDefaultWidth; - } - mWith=width; - if (measureHeightMode == MeasureSpec.AT_MOST) { - height = Math.min(getMinHeight(), measureHeight); - } else if (measureHeightMode == MeasureSpec.EXACTLY) { - height = measureHeight; - } else { - height = getMinHeight(); - } - setMeasuredDimension(width, height); - } - - private int getMinHeight() { - final float f = getFontHeight(); - return (int) (f + mTextPadding + mThumbRadius * 2); - } - - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, h, oldw, oldh); - - createBar(context); - createThumbs(); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - mBar.draw(canvas); - mThumb.draw(canvas); - } - - @Override - protected void onVisibilityChanged(View changedView, int visibility) { - super.onVisibilityChanged(changedView, visibility); - if (VISIBLE != visibility) { - stopAnimation(); - } - } - - @Override - protected void onDetachedFromWindow() { - destroyResources(); - super.onDetachedFromWindow(); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - if (!isEnabled() || isAnimationRunning()) { - return false; - } - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - return onActionDown(event.getX(), event.getY()); - case MotionEvent.ACTION_MOVE: - this.getParent().requestDisallowInterceptTouchEvent(true); - return onActionMove(event.getX()); - case MotionEvent.ACTION_UP: - case MotionEvent.ACTION_CANCEL: - this.getParent().requestDisallowInterceptTouchEvent(false); - return onActionUp(event.getX(), event.getY()); - default: - return true; - } - } - - public FontSliderBar setOnSliderBarChangeListener(OnSliderBarChangeListener listener) { - mListener = listener; - return FontSliderBar.this; - } - - public FontSliderBar setTickCount(int tickCount) { - if (isValidTickCount(tickCount)) { - mTickCount = tickCount; - } else { - Log.e(TAG, "tickCount less than 2; invalid tickCount."); - throw new IllegalArgumentException("tickCount less than 2; invalid tickCount."); - } - return FontSliderBar.this; - } - - public FontSliderBar setTickHeight(float tickHeight) { - mTickHeight = tickHeight; - return FontSliderBar.this; - } - - public FontSliderBar setBarWeight(float barWeight) { - mBarWidth = barWeight; - return FontSliderBar.this; - } - - public FontSliderBar setBarColor(int barColor) { - mBarColor = barColor; - return FontSliderBar.this; - } - - public FontSliderBar setTextSize(int textSize) { - mTextSize = textSize; - return FontSliderBar.this; - } - - public FontSliderBar setTextColor(int textColor) { - mTextColor = textColor; - return FontSliderBar.this; - } - - public FontSliderBar setTextPadding(int textPadding) { - mTextPadding = textPadding; - return FontSliderBar.this; - } - - public FontSliderBar setThumbRadius(float thumbRadius) { - mThumbRadius = thumbRadius; - return FontSliderBar.this; - } - - public FontSliderBar setThumbColorNormal(int thumbColorNormal) { - mThumbColorNormal = thumbColorNormal; - return FontSliderBar.this; - } - - public FontSliderBar setThumbColorPressed(int thumbColorPressed) { - mThumbColorPressed = thumbColorPressed; - return FontSliderBar.this; - } - - - public FontSliderBar setThumbIndex(int currentIndex) { - //处理越界 - if (indexOutOfRange(currentIndex)) { - if(currentIndex<0){ - mCurrentIndex = 0; - } - if(currentIndex>mTickCount-1){ - mCurrentIndex = mTickCount-1; - } -// throw new IllegalArgumentException( -// "A thumb index is out of bounds. Check that it is between 0 and mTickCount - 1"); - } else { - if (mCurrentIndex != currentIndex) { - mCurrentIndex = currentIndex; - } - } - if (mListener != null) { - mListener.onIndexChanged(this, mCurrentIndex); - } - return FontSliderBar.this; - } - - public FontSliderBar withAnimation(boolean animation) { - mAnimation = animation; - return FontSliderBar.this; - } - - public void applay(Context context) { - createThumbs(); - createBar(context); - requestLayout(); - invalidate(); - } - - public int getCurrentIndex() { - if(mCurrentIndex>mTickCount-1){ - mCurrentIndex=mTickCount-1; - } - return mCurrentIndex; - } - - private void createBar(Context context) { - mBar = new Bar(context,getXCoordinate(), getYCoordinate(), getBarLength(), mTickCount, mTickHeight, mBarWidth, - mBarColor, mTextColor, mTextSize, mTextPadding); - } - - private void createThumbs() { - if(mCurrentIndex==0){ - mThumb = new Thumb(getXCoordinate()+(mWith/mTickCount+getXCoordinate()/2)*mCurrentIndex, getYCoordinate(), mThumbColorNormal, mThumbColorPressed, mThumbRadius); - }else{ - mThumb = new Thumb(getXCoordinate()+(mWith/mTickCount+getXCoordinate()/2)*mCurrentIndex-4, getYCoordinate(), mThumbColorNormal, mThumbColorPressed, mThumbRadius); - } - //getWidth() - 2 * getXCoordinate() -// float xCoordinate = getBarLength() / (mTickCount - 1) * mCurrentIndex + getXCoordinate(); -// mThumb = new Thumb(xCoordinate, getYCoordinate(), mThumbColorNormal, mThumbColorPressed, mThumbRadius); - } - - private float getXCoordinate() { - return mThumbRadius; - } - - private float getYCoordinate() { - return getHeight() - mThumbRadius; - } - - private float getFontHeight() { - Paint paint = new Paint(); - paint.setTextSize(mTextSize); - paint.measureText("A"); - Paint.FontMetrics fontMetrics = paint.getFontMetrics(); - float f = fontMetrics.descent - fontMetrics.ascent; - return f; - } - - private float getBarLength() { - return getWidth() - 2 * getXCoordinate(); - } - - private boolean indexOutOfRange(int thumbIndex) { - return (thumbIndex < 0 || thumbIndex >= mTickCount); - } - - private boolean isValidTickCount(int tickCount) { - return tickCount > 1; - } - - private boolean onActionDown(float x, float y) { - if (!mThumb.isPressed() && mThumb.isInTargetZone(x, y)) { - pressThumb(mThumb); - } - return true; - } - - private boolean onActionMove(float x) { - if (mThumb.isPressed()) { - moveThumb(mThumb, x); - } - return true; - } - - private boolean onActionUp(float x, float y) { - if (mThumb.isPressed()) { - releaseThumb(mThumb); - }else{ - //点击事件 - final int tempIndex = mBar.getNearestTickIndex(x); - if (tempIndex != mCurrentIndex) { - mCurrentIndex = tempIndex; - if (null != mListener) { - mListener.onIndexChanged(this, mCurrentIndex); - } - float end = mBar.getNearestTickCoordinate(mCurrentIndex); - if(end>mBar.getRightX()){ - end= mBar.getRightX(); - } - mThumb.setX(end); - invalidate(); - } - mThumb.release();//回收 - } - return true; - } - - private void pressThumb(Thumb thumb) { - thumb.press(); - invalidate(); - } - - private void releaseThumb(final Thumb thumb) { - final int tempIndex = mBar.getNearestTickIndex(thumb); - if (tempIndex != mCurrentIndex) { - mCurrentIndex = tempIndex; - if (null != mListener) { - mListener.onIndexChanged(this, mCurrentIndex); - } - } - - float start = thumb.getX(); - float end = mBar.getNearestTickCoordinate(thumb); - if (mAnimation) { - startAnimation(thumb, start, end); - } else { - thumb.setX(end); - invalidate(); - } - thumb.release(); - } - - private void startAnimation(final Thumb thumb, float start, float end) { - stopAnimation(); - mAnimator = ValueAnimator.ofFloat(start, end); - mAnimator.setDuration(80); - mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - final float x = (Float) animation.getAnimatedValue(); - thumb.setX(x); - invalidate(); - } - }); - mAnimator.start(); - } - - private boolean isAnimationRunning() { - if (null != mAnimator && mAnimator.isRunning()) { - return true; - } - return false; - } - - private void destroyResources() { - stopAnimation(); - if (null != mBar) { - mBar.destroyResources(); - mBar = null; - } - if (null != mThumb) { - mThumb.destroyResources(); - mThumb = null; - } - } - - private void stopAnimation() { - if (null != mAnimator) { - mAnimator.cancel(); - mAnimator = null; - } - } - - private void moveThumb(Thumb thumb, float x) { - if (x < mBar.getLeftX() || x > mBar.getRightX()) { - // Do nothing. - } else { - thumb.setX(x); - invalidate(); - } - } - - public interface OnSliderBarChangeListener { - void onIndexChanged(FontSliderBar rangeBar, int index); - } -} diff --git a/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Thumb.java b/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Thumb.java deleted file mode 100644 index 544c36f..0000000 --- a/AndroidLearnProject/app/src/main/code_backup/view/fontsliderbar/Thumb.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.android.learn.view.fontsliderbar; - -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; - -/** - * Created by Administrator on 2017/9/6 0006. - */ - -public class Thumb { - - private static final float MINIMUM_TARGET_RADIUS = 50; - - private final float mTouchZone; - private boolean mIsPressed; - - private final float mY; - private float mX; - - private Paint mPaintNormal; - private Paint mPaintPressed; - - private float mRadius; - private int mColorNormal; - private int mColorPressed; - - public Thumb(float x, float y, int colorNormal, int colorPressed, float radius) { - - mRadius = radius; - mColorNormal = colorNormal; - mColorPressed = colorPressed; - - mPaintNormal = new Paint(); - mPaintNormal.setColor(mColorNormal); - mPaintNormal.setAntiAlias(true); - - mPaintPressed = new Paint(); - mPaintPressed.setColor(mColorPressed); - mPaintPressed.setAntiAlias(true); - - mTouchZone = (int) Math.max(MINIMUM_TARGET_RADIUS, radius); - - mX = x; - mY = y; - } - - public void setX(float x) { - mX = x; - } - - public float getX() { - return mX; - } - - public boolean isPressed() { - return mIsPressed; - } - - public void press() { - mIsPressed = true; - } - - public void release() { - mIsPressed = false; - } - - public boolean isInTargetZone(float x, float y) { - if (Math.abs(x - mX) <= mTouchZone && Math.abs(y - mY) <= mTouchZone) { - return true; - } - return false; - } - - public void draw(Canvas canvas) { - if (mIsPressed) { - mPaintPressed.setColor(Color.WHITE); - mPaintPressed.setStyle(Paint.Style.FILL); - canvas.drawCircle(mX, mY, mRadius, mPaintPressed); - mPaintPressed.setColor(mColorPressed); - mPaintPressed.setStyle(Paint.Style.STROKE); - canvas.drawCircle(mX, mY, mRadius-1, mPaintPressed); - } else { - mPaintNormal.setColor(Color.WHITE); - mPaintNormal.setStyle(Paint.Style.FILL); - canvas.drawCircle(mX, mY, mRadius, mPaintNormal); - mPaintNormal.setColor(mColorPressed); - mPaintNormal.setStyle(Paint.Style.STROKE); - canvas.drawCircle(mX, mY, mRadius-1, mPaintNormal); - } - } - - public void destroyResources() { - if(null != mPaintNormal) { - mPaintNormal = null; - } - if(null != mPaintPressed) { - mPaintPressed = null; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java deleted file mode 100644 index 65f7ae7..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseActivity.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.android.learn.base.activity; - -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.graphics.drawable.ColorDrawable; -import android.os.Build; -import android.os.Bundle; -import android.support.annotation.ColorInt; -import android.support.annotation.IntRange; -import android.support.annotation.Nullable; -import android.view.View; - -import com.android.learn.base.application.CustomApplication; -import com.android.learn.base.utils.ExitAppUtils; -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.SPUtils; -import com.gaolei.basemodule.R; -import com.jaeger.library.StatusBarUtil; -import com.umeng.analytics.MobclickAgent; -import com.wind.me.xskinloader.SkinInflaterFactory; -import com.wind.me.xskinloader.SkinManager; -import com.wind.me.xskinloader.util.AssetFileUtils; - -import java.io.File; - -import butterknife.ButterKnife; -import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper; - - -/** - * Created by gaolei on 2018/4/26. - */ - -public abstract class BaseActivity extends BasePermisssionActivity implements View.OnClickListener, BGASwipeBackHelper.Delegate { - - Boolean isNightMode; - - String TAG = "BaseActivity"; - protected BGASwipeBackHelper mSwipeBackHelper; - - protected void onCreate(@Nullable Bundle savedInstanceState) { - -// 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回」 - // 在 super.onCreate(savedInstanceState) 之前调用该方法 - initSwipeBackFinish(); - super.onCreate(savedInstanceState); - SkinInflaterFactory.setFactory(this); - setContentView(getLayoutId()); - ButterKnife.bind(this); - setStatusBar(); - ExitAppUtils.getInstance().addActivity(this); - - SkinManager.get().setWindowStatusBarColor(this.getWindow(), R.color.status_bar_color); - - Bundle bundle = getIntent().getExtras(); - if (bundle == null) { - bundle = savedInstanceState; - } - initData(bundle); - - } - - - protected abstract int getLayoutId(); - - protected abstract void initData(Bundle bundle); - - @Override - public void onClick(View v) { - if (v.getId() == R.id.iv_back) { - finish(); - } - } - - protected void onRestart() { - super.onRestart(); - } - - protected void onResume() { - super.onResume(); - MobclickAgent.onResume(this); -// context = this; - LogUtil.d(TAG, "BaseActivity ----onResume:" + getClass().getName().toString()); - } - - - protected void onPause() { - super.onPause(); - MobclickAgent.onPause(this); - } - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - - } - - @Override - protected void onStop() { - super.onStop(); - } - - protected void onDestroy() { - super.onDestroy(); - ExitAppUtils.getInstance().delActivity(this); - LogUtil.d(TAG, "BaseActivity ----onDestroy:" + getClass().getName().toString()); - } - - public void useNightMode(boolean isNight) { - - if (isNight) { - changeSkin(); - - } else { - - restoreDefaultSkin(); - } - } - - //重写字体缩放比例 api>25 - @Override - protected void attachBaseContext(Context newBase) { - - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { - final Resources res = newBase.getResources(); - final Configuration config = res.getConfiguration(); - config.fontScale = CustomApplication.getInstance().getFontScale();//1 设置正常字体大小的倍数 - final Context newContext = newBase.createConfigurationContext(config); - super.attachBaseContext(newContext); - } else { - super.attachBaseContext(newBase); - } - } - - //重写字体缩放比例 api<25 - @Override - public Resources getResources() { - Resources res = super.getResources(); - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) { - Configuration config = res.getConfiguration(); - config.fontScale = CustomApplication.getInstance().getFontScale();//1 设置正常字体大小的倍数 - res.updateConfiguration(config, res.getDisplayMetrics()); - } - return res; - } - - private void changeSkin() { - //将assets目录下的皮肤文件拷贝到data/data/.../cache目录下 - String saveDir = getCacheDir().getAbsolutePath() + "/skins"; - String savefileName = "/skin1.skin"; - String asset_dir = "skins/xskinloader-skin-apk-debug.apk"; - File file = new File(saveDir + File.separator + savefileName); -// if (!file.exists()) { - AssetFileUtils.copyAssetFile(this, asset_dir, saveDir, savefileName); -// } - SkinManager.get().loadNewSkin(file.getAbsolutePath()); - } - - private void restoreDefaultSkin() { - SkinManager.get().restoreToDefaultSkin(); - } - - - /** - * 初始化滑动返回。在 super.onCreate(savedInstanceState) 之前调用该方法 - */ - private void initSwipeBackFinish() { - mSwipeBackHelper = new BGASwipeBackHelper(this, this); - - // 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回」 - // 下面几项可以不配置,这里只是为了讲述接口用法。 - - // 设置滑动返回是否可用。默认值为 true - mSwipeBackHelper.setSwipeBackEnable(true); - // 设置是否仅仅跟踪左侧边缘的滑动返回。默认值为 true - mSwipeBackHelper.setIsOnlyTrackingLeftEdge(false); - // 设置是否是微信滑动返回样式。默认值为 true - mSwipeBackHelper.setIsWeChatStyle(true); - // 设置阴影资源 id。默认值为 R.drawable.bga_sbl_shadow - mSwipeBackHelper.setShadowResId(R.drawable.bga_sbl_shadow); - // 设置是否显示滑动返回的阴影效果。默认值为 true - mSwipeBackHelper.setIsNeedShowShadow(true); - // 设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 true - mSwipeBackHelper.setIsShadowAlphaGradient(true); - // 设置触发释放后自动滑动返回的阈值,默认值为 0.3f - mSwipeBackHelper.setSwipeBackThreshold(0.3f); - // 设置底部导航条是否悬浮在内容上,默认值为 false - mSwipeBackHelper.setIsNavigationBarOverlap(false); - } - - /** - * 是否支持滑动返回。这里在父类中默认返回 true 来支持滑动返回,如果某个界面不想支持滑动返回则重写该方法返回 false 即可 - * - * @return - */ - @Override - public boolean isSupportSwipeBack() { - return true; - } - - /** - * 正在滑动返回 - * - * @param slideOffset 从 0 到 1 - */ - @Override - public void onSwipeBackLayoutSlide(float slideOffset) { - } - - /** - * 没达到滑动返回的阈值,取消滑动返回动作,回到默认状态 - */ - @Override - public void onSwipeBackLayoutCancel() { - } - - /** - * 滑动返回执行完毕,销毁当前 Activity - */ - @Override - public void onSwipeBackLayoutExecuted() { - mSwipeBackHelper.swipeBackward(); - } - - @Override - public void onBackPressed() { - // 正在滑动返回的时候取消返回按钮事件 - if (mSwipeBackHelper.isSliding()) { - return; - } - mSwipeBackHelper.backward(); - } - - protected void setStatusBar() { - Boolean isNightMode = (Boolean) SPUtils.getParam(this, "nightMode", new Boolean(false)); - if (isNightMode) { - StatusBarUtil.setColorForSwipeBack(this, getResources().getColor(R.color.app_color_night), 0); - } else - StatusBarUtil.setColorForSwipeBack(this, getResources().getColor(R.color.app_color), 0); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java deleted file mode 100644 index 8f8f9e8..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BaseMvpActivity.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.android.learn.base.activity; - -import android.content.Context; -import android.os.Bundle; -import android.support.annotation.Nullable; - -import com.android.learn.base.mpresenter.BasePresenter; -import com.android.learn.base.utils.LanguageUtil; - - -public abstract class BaseMvpActivity< P extends BasePresenter> extends BaseActivity { - - public P mPresenter; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mPresenter = initPresenter(); - if(mPresenter!=null) - mPresenter.attach(this); - loadData(); - } - - @Override - protected void onDestroy() { - if(mPresenter!=null) - mPresenter.dettach(); - super.onDestroy(); - } - - @Override - protected void attachBaseContext(Context newBase) { - //语言切换 - super.attachBaseContext(LanguageUtil.setLocal(newBase)); - } - //实例presenter - public abstract P initPresenter(); - //加载数据 - protected abstract void loadData(); -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java deleted file mode 100644 index 9d0c0b2..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/activity/BasePermisssionActivity.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.android.learn.base.activity; - -import android.app.Activity; -import android.content.Context; -import android.content.pm.PackageManager; -import android.support.annotation.NonNull; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.FragmentActivity; -import android.support.v4.content.ContextCompat; - -import com.android.learn.base.utils.PermissionUtil; - -import static com.android.learn.base.utils.PermissionUtil.PERMISSION_CODE; - - -/** - * Created by gaolei on 2018/4/26. - */ - -public class BasePermisssionActivity extends FragmentActivity { - private PermissionUtil.RequestPermissionCallBack mRequestPermissionCallBack; - - - /** - * 发起权限请求 - * - * @param context - * @param permissions - * @param callback - */ - - public void requestPermission(final Context context, - PermissionUtil.RequestPermissionCallBack callback, final String... permissions) { - this.mRequestPermissionCallBack = callback; - - //如果所有权限都已授权,则直接返回授权成功,只要有一项未授权,则发起权限请求 - boolean isAllGranted = true; - for (String permission : permissions) { - if (ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_DENIED) { - isAllGranted = false; - ActivityCompat.requestPermissions(((Activity) context), permissions, PERMISSION_CODE); - } - } - if (isAllGranted) { - mRequestPermissionCallBack.granted(); - } - } - - /** - * 权限请求结果回调 - * - * @param requestCode - * @param permissions - * @param grantResults - */ - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull final String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - boolean hasAllGranted = true; - - switch (requestCode) { - case PERMISSION_CODE: { - for (int i = 0; i < grantResults.length; ++i) { - if (grantResults[i] == PackageManager.PERMISSION_DENIED) { - hasAllGranted = false; - //在用户已经拒绝授权的情况下,如果shouldShowRequestPermissionRationale返回false则 - // 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权 - if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) { - PermissionUtil.requestForeverDenyDialog(BasePermisssionActivity.this, permissions); - - } else { - PermissionUtil.requestDenyDialog(BasePermisssionActivity.this, permissions); - - //用户拒绝权限请求,但未选中“不再提示”选项 - } - mRequestPermissionCallBack.denied(); - } - } - if (grantResults.length > 0 && hasAllGranted) { - mRequestPermissionCallBack.granted(); - } - } - } - } - - - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java deleted file mode 100644 index 4ad8d35..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/application/CustomApplication.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.android.learn.base.application; - -import android.app.Application; -import android.content.Context; -import android.content.res.Configuration; -import android.net.ConnectivityManager; -import android.util.TypedValue; -import android.view.LayoutInflater; - -import com.android.learn.base.utils.LanguageUtil; -import com.android.learn.base.utils.SPUtils; -import com.android.learn.base.xskin.ExtraAttrRegister; -import com.gaolei.basemodule.R; -import com.iflytek.cloud.SpeechConstant; -import com.iflytek.cloud.SpeechUtility; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreater; -import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator; -import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreater; -import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator; -import com.scwang.smartrefresh.layout.api.RefreshFooter; -import com.scwang.smartrefresh.layout.api.RefreshHeader; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.footer.ClassicsFooter; -import com.scwang.smartrefresh.layout.header.ClassicsHeader; -import com.umeng.analytics.MobclickAgent; -import com.umeng.commonsdk.UMConfigure; -import com.wind.me.xskinloader.SkinInflaterFactory; -import com.wind.me.xskinloader.SkinManager; - -import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper; - - -public class CustomApplication extends Application { - public static ConnectivityManager connectivityManager; - public static Context context; - private static CustomApplication instance; - - @Override - public void onCreate() { - super.onCreate(); - connectivityManager = (ConnectivityManager) getApplicationContext() - .getSystemService(Context.CONNECTIVITY_SERVICE); - context = this; - instance = this; - // LeakCanary.install(this); - // BlockCanary.install(this, new AppContext()).start(); - - //初始化友盟 - UMConfigure.init(this, UMConfigure.DEVICE_TYPE_PHONE, ""); - //初始化换肤 - SkinInflaterFactory.setFactory(LayoutInflater.from(this)); // for skin change - SkinManager.get().init(this); - //扩展换肤属性和style中的换肤属性 - ExtraAttrRegister.init(); - //初始化讯飞语言识别 - SpeechUtility.createUtility(this, "appid=" + "5c22ed2f"); - /** - * 必须在 Application 的 onCreate 方法中执行 BGASwipeBackHelper.init 来初始化滑动返回 - * 第一个参数:应用程序上下文 - * 第二个参数:如果发现滑动返回后立即触摸界面时应用崩溃,请把该界面里比较特殊的 View 的 class 添加到该集合中,目前在库中已经添加了 WebView 和 SurfaceView - */ - // - BGASwipeBackHelper.init(this, null); - - } - - public static CustomApplication getInstance() { - return instance; - } -// public class AppContext extends BlockCanaryContext { -// private static final String TAG = "AppContext"; -// -// @Override -// public String provideQualifier() { -// String qualifier = ""; -// try { -// PackageInfo info = getApplicationContext().getPackageManager() -// .getPackageInfo(getApplicationContext().getPackageName(), 0); -// qualifier += info.versionCode + "_" + info.versionName + "_YYB"; -// } catch (PackageManager.NameNotFoundException e) { -// Log.e(TAG, "provideQualifier exception", e); -// } -// return qualifier; -// } -// -// @Override -// public int provideBlockThreshold() { -// return 1000; -// } -// -// @Override -// public boolean displayNotification() { -// return BuildConfig.DEBUG; -// } -// -// @Override -// public boolean stopWhenDebugging() { -// return false; -// } -// } - - /** - * @return 获取字体缩放比例 - */ - public float getFontScale() { - int currentIndex = (Integer) SPUtils.getParam(this, "currentIndex", 1); - return 1 + currentIndex * 0.1f; - } - - //static 代码段可以防止内存泄露 - static { - //设置全局的Header构建器 - SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() { - @Override - public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) { -// layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色 - ClassicsHeader header = new ClassicsHeader(context);//指定为经典Header,默认是 贝塞尔雷达Header - header.setTextSizeTitle(14);//设置标题文字大小(sp单位) - return header;//.setTimeFormat(new DynamicTimeFormat("更新于 %s")); - } - }); - //设置全局的Footer构建器 - SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() { - @Override - public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) { - ClassicsFooter footer = new ClassicsFooter(context); //指定为经典Footer,默认是 BallPulseFooter - footer.setTextSizeTitle(14);//设置标题文字大小(sp单位) - - return footer; - } - }); - } - -// @Override -// protected void attachBaseContext(Context newBase) { -// //语言切换 -// super.attachBaseContext(LanguageUtil.setLocal(newBase)); -// } - - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java deleted file mode 100644 index 1a3e22d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/Colorful.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.android.learn.base.colorful; - -import java.util.HashSet; -import java.util.Set; - -import android.app.Activity; -import android.content.res.Resources.Theme; -import android.support.v4.app.Fragment; -import android.view.View; -import android.widget.TextView; - -import com.android.learn.base.colorful.setter.TextColorSetter; -import com.android.learn.base.colorful.setter.ViewBackgroundColorSetter; -import com.android.learn.base.colorful.setter.ViewBackgroundDrawableSetter; -import com.android.learn.base.colorful.setter.ViewSetter; - - -/** - * 主题切换控制类 - * - * @author mrsimple - * - */ -public final class Colorful { - /** - * Colorful Builder - */ - Builder mBuilder; - - /** - * private constructor - * - * @param builder - */ - private Colorful(Builder builder) { - mBuilder = builder; - } - - /** - * 设置新的主题 - * - * @param newTheme - */ - public void setTheme(int newTheme) { - mBuilder.setTheme(newTheme); - } - - /** - * - * 构建Colorful的Builder对象 - * - * @author mrsimple - * - */ - public static class Builder { - /** - * 存储了视图和属性资源id的关系表 - */ - Set mElements = new HashSet(); - /** - * 目标Activity - */ - Activity mActivity; - - /** - * @param activity - */ - public Builder(Activity activity) { - mActivity = activity; - } - - /** - * - * @param fragment - */ - public Builder(Fragment fragment) { - mActivity = fragment.getActivity(); - } - - private View findViewById(int viewId) { - return mActivity.findViewById(viewId); - } - - /** - * 将View id与存储该view背景色的属性进行绑定 - * - * @param viewId - * 控件id - * @param colorId - * 颜色属性id - * @return - */ - public Builder backgroundColor(int viewId, int colorId) { - mElements.add(new ViewBackgroundColorSetter(findViewById(viewId), - colorId)); - return this; - } - - - public Builder backgroundDrawable(int viewId, int drawableId) { - mElements.add(new ViewBackgroundDrawableSetter( - findViewById(viewId), drawableId)); - return this; - } - - /** - * 将TextView id与存储该TextView文本颜色的属性进行绑定 - * - * @param viewId - * TextView或者TextView子类控件的id - * @param colorId - * 颜色属性id - * @return - */ - public Builder textColor(int viewId, int colorId) { - TextView textView = (TextView) findViewById(viewId); - mElements.add(new TextColorSetter(textView, colorId)); - return this; - } - - /** - * 用户手动构造并且添加Setter - * - * @param setter - * 用户自定义的Setter - * @return - */ - public Builder setter(ViewSetter setter) { - mElements.add(setter); - return this; - } - - /** - * 设置新的主题 - * - * @param newTheme - */ - protected void setTheme(int newTheme) { - mActivity.setTheme(newTheme); - makeChange(newTheme); - } - - /** - * 修改各个视图绑定的属性 - */ - private void makeChange(int themeId) { - Theme curTheme = mActivity.getTheme(); - for (ViewSetter setter : mElements) { - setter.setValue(curTheme, themeId); - } - } - - /** - * 创建Colorful对象 - * - * @return - */ - public Colorful create() { - return new Colorful(this); - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java deleted file mode 100644 index 244779e..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/TextColorSetter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.widget.TextView; -/** - * TextView 文本颜色Setter - * @author mrsimple - * - */ -public class TextColorSetter extends ViewSetter { - - public TextColorSetter(TextView textView, int resId) { - super(textView, resId); - } - - public TextColorSetter(int viewId, int resId) { - super(viewId, resId); - } - - @Override - public void setValue(Theme newTheme, int themeId) { - if (mView == null) { - return; - } - ((TextView) mView).setTextColor(getColor(newTheme)); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java deleted file mode 100644 index b092335..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundColorSetter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.view.View; - -/** - * View的背景色Setter - * @author mrsimple - * - */ -public class ViewBackgroundColorSetter extends ViewSetter { - - public ViewBackgroundColorSetter(View target, int resId) { - super(target, resId); - } - - public ViewBackgroundColorSetter(int viewId, int resId) { - super(viewId, resId); - } - - @Override - public void setValue(Theme newTheme, int themeId) { - if ( mView != null ) { - mView.setBackgroundColor(getColor(newTheme)); - } - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java deleted file mode 100644 index 1f284a7..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewBackgroundDrawableSetter.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.view.View; - -/** - * View的背景Drawabler Setter - * @author mrsimple - * - */ -public final class ViewBackgroundDrawableSetter extends ViewSetter { - - public ViewBackgroundDrawableSetter(View targetView, int resId) { - super(targetView, resId); - } - - - public ViewBackgroundDrawableSetter(int viewId, int resId) { - super(viewId, resId); - } - - @SuppressWarnings("deprecation") - @Override - public void setValue(Theme newTheme, int themeId) { - if ( mView == null ) { - return ; - } - TypedArray a = newTheme.obtainStyledAttributes(themeId, - new int[] { mAttrResId }); - int attributeResourceId = a.getResourceId(0, 0); - Drawable drawable = mView.getResources().getDrawable( - attributeResourceId); - a.recycle(); - mView.setBackgroundDrawable(drawable); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java deleted file mode 100644 index de2f50a..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewGroupSetter.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashSet; -import java.util.Set; - -import android.content.res.Resources.Theme; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AbsListView; - -/** - * ViewGroup类型的Setter,用于修改ListView、RecyclerView等ViewGroup类型的Item - * View,核心思想为遍历每个Item View中的子控件,然后根据用户绑定的view - * id与属性来将View修改为当前Theme下的最新属性值,达到ViewGroup控件的换肤效果。 - * - * TODO : Color与Drawable的设计问题,是否需要修改为桥接模式 {@see ViewBackgroundColorSetter}、 - * {@see ViewBackgroundDrawableSetter} - * - * @author mrsimple - * - */ -public class ViewGroupSetter extends ViewSetter { - - /** - * ListView的子试图的Setter - */ - protected Set mItemViewSetters = new HashSet(); - - /** - * - * @param targetView - * @param resId - */ - public ViewGroupSetter(ViewGroup targetView, int resId) { - super(targetView, resId); - } - - public ViewGroupSetter(ViewGroup targetView) { - super(targetView, 0); - } - - /** - * 设置View的背景色 - * - * @param viewId - * @param colorId - * @return - */ - public ViewGroupSetter childViewBgColor(int viewId, int colorId) { - mItemViewSetters.add(new ViewBackgroundColorSetter(viewId, colorId)); - return this; - } - - /** - * 设置View的drawable背景 - * - * @param viewId - * @param drawableId - * @return - */ - public ViewGroupSetter childViewBgDrawable(int viewId, int drawableId) { - mItemViewSetters.add(new ViewBackgroundDrawableSetter(viewId, - drawableId)); - return this; - } - - /** - * 设置文本颜色,因此View的类型必须为TextView或者其子类 - * - * @param viewId - * @param colorId - * @return - */ - public ViewGroupSetter childViewTextColor(int viewId, int colorId) { - mItemViewSetters.add(new TextColorSetter(viewId, colorId)); - return this; - } - - @Override - public void setValue(Theme newTheme, int themeId) { - mView.setBackgroundColor(getColor(newTheme)); - // 清空AbsListView的元素 - clearListViewRecyclerBin(mView); - // 清空RecyclerView - clearRecyclerViewRecyclerBin(mView); - // 修改所有子元素的相关属性 - changeChildenAttrs((ViewGroup) mView, newTheme, themeId); - } - - /** - * - * @param viewId - * @return - */ - private View findViewById(View rootView, int viewId) { - View targetView = rootView.findViewById(viewId); - Log.d("", "### viewgroup find view : " + targetView); - return targetView; - } - - /** - * 修改子视图的对应属性 - * - * @param viewGroup - * @param newTheme - * @param themeId - */ - private void changeChildenAttrs(ViewGroup viewGroup, Theme newTheme, - int themeId) { - int childCount = viewGroup.getChildCount(); - for (int i = 0; i < childCount; i++) { - View childView = viewGroup.getChildAt(i); - // 深度遍历 - if (childView instanceof ViewGroup) { - changeChildenAttrs((ViewGroup) childView, newTheme, themeId); - } - - // 遍历子元素与要修改的属性,如果相同那么则修改子View的属性 - for (ViewSetter setter : mItemViewSetters) { - // 每次都要从ViewGroup中查找数据 - setter.mView = findViewById(viewGroup, setter.mViewId); - - Log.e("", "### childView : " + childView + ", id = " - + childView.getId()); - Log.e("", "### setter view : " + setter.mView + ", id = " - + setter.getViewId()); - if (childView.getId() == setter.getViewId()) { - setter.setValue(newTheme, themeId); - Log.e("", "@@@ 修改新的属性: " + childView); - } - } - } - } - - private void clearListViewRecyclerBin(View rootView) { - if (rootView instanceof AbsListView) { - try { - Field localField = AbsListView.class - .getDeclaredField("mRecycler"); - localField.setAccessible(true); - Method localMethod = Class.forName( - "android.widget.AbsListView$RecycleBin") - .getDeclaredMethod("clear", new Class[0]); - localMethod.setAccessible(true); - localMethod.invoke(localField.get(rootView), new Object[0]); - Log.e("", "### 清空AbsListView的RecycerBin "); - } catch (NoSuchFieldException e1) { - e1.printStackTrace(); - } catch (ClassNotFoundException e2) { - e2.printStackTrace(); - } catch (NoSuchMethodException e3) { - e3.printStackTrace(); - } catch (IllegalAccessException e4) { - e4.printStackTrace(); - } catch (InvocationTargetException e5) { - e5.printStackTrace(); - } - } - } - - private void clearRecyclerViewRecyclerBin(View rootView) { - if (rootView instanceof RecyclerView) { - try { - Field localField = RecyclerView.class - .getDeclaredField("mRecycler"); - localField.setAccessible(true); - Method localMethod = Class.forName( - "android.support.v7.widget.RecyclerView$Recycler") - .getDeclaredMethod("clear", new Class[0]); - localMethod.setAccessible(true); - localMethod.invoke(localField.get(rootView), new Object[0]); - Log.e("", "### 清空RecyclerView的Recycer "); - rootView.invalidate(); - } catch (NoSuchFieldException e1) { - e1.printStackTrace(); - } catch (ClassNotFoundException e2) { - e2.printStackTrace(); - } catch (NoSuchMethodException e3) { - e3.printStackTrace(); - } catch (IllegalAccessException e4) { - e4.printStackTrace(); - } catch (InvocationTargetException e5) { - e5.printStackTrace(); - } - } - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java deleted file mode 100644 index 15c4293..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/colorful/setter/ViewSetter.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.android.learn.base.colorful.setter; - -import android.content.res.Resources.Theme; -import android.util.TypedValue; -import android.view.View; - -/** - * ViewSetter,用于通过{@see #mAttrResId} - * 设置View的某个属性值,例如背景Drawable、背景色、文本颜色等。如需修改其他属性,可以自行扩展ViewSetter. - * - * @author mrsimple - * - */ -public abstract class ViewSetter { - - /** - * 目标View - */ - protected View mView; - /** - * 目标view id,有时在初始化时还未构建该视图,比如ListView的Item View中的某个控件 - */ - protected int mViewId; - /** - * 目标View要的特定属性id - */ - protected int mAttrResId; - - public ViewSetter(View targetView, int resId) { - mView = targetView; - mAttrResId = resId; - } - - public ViewSetter(int viewId, int resId) { - mViewId = viewId; - mAttrResId = resId; - } - - /** - * - * @param newTheme - * @param themeId - */ - public abstract void setValue(Theme newTheme, int themeId); - - /** - * 获取视图的Id - * - * @return - */ - protected int getViewId() { - return mView != null ? mView.getId() : -1; - } - - protected boolean isViewNotFound() { - return mView == null; - } - - /** - * - * @param newTheme - * @param resId - * @return - */ - protected int getColor(Theme newTheme) { - TypedValue typedValue = new TypedValue(); - newTheme.resolveAttribute(mAttrResId, typedValue, true); - return typedValue.data; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java deleted file mode 100644 index bb08085..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/DBManager.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.android.learn.base.db; - -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; - -import com.android.learn.base.greendao.gen.DaoMaster; -import com.android.learn.base.greendao.gen.DaoSession; -import com.android.learn.base.greendao.gen.SearchRecordDao; - -import org.greenrobot.greendao.query.QueryBuilder; - -import java.util.List; - -public class DBManager { - private final static String dbName = "search_record"; - private static DBManager mInstance; - private DaoMaster.DevOpenHelper openHelper; - private Context context; - - public DBManager(Context context) { - this.context = context; - openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); - } - - /** - * 获取单例引用 - * - * @param context - * @return - */ - public static DBManager getInstance(Context context) { - if (mInstance == null) { - synchronized (DBManager.class) { - if (mInstance == null) { - mInstance = new DBManager(context); - } - } - } - return mInstance; - } - /** - * 获取可写数据库 - */ - private SQLiteDatabase getWritableDatabase() { - if (openHelper == null) { - openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); - } - SQLiteDatabase db = openHelper.getWritableDatabase(); - return db; - } - /** - * 获取可读数据库 - */ - private SQLiteDatabase getReadableDatabase() { - if (openHelper == null) { - openHelper = new DaoMaster.DevOpenHelper(context, dbName, null); - } - SQLiteDatabase db = openHelper.getReadableDatabase(); - return db; - } - /** - * 插入一条记录 - * - * @param searchRecord - */ - public void insertUser(SearchRecord searchRecord) { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.insert(searchRecord); - } - - /** - * 插入用户集合 - * - * @param users - */ - public void insertUserList(List users) { - if (users == null || users.isEmpty()) { - return; - } - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.insertInTx(users); - } - /** - * 删除一条记录 - * - * @param searchRecord - */ - public void deleteUser(SearchRecord searchRecord) { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.delete(searchRecord); - } - public void deleteAll() { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.deleteAll(); - } - - /** - * 更新一条记录 - * - * @param searchRecord - */ - public void updateUser(SearchRecord searchRecord) { - DaoMaster daoMaster = new DaoMaster(getWritableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - userDao.update(searchRecord); - } - /** - * 查询用户列表 - */ - public List queryUserList() { - DaoMaster daoMaster = new DaoMaster(getReadableDatabase()); - DaoSession daoSession = daoMaster.newSession(); - SearchRecordDao userDao = daoSession.getSearchRecordDao(); - QueryBuilder qb = userDao.queryBuilder(); - List list = qb.list(); - return list; - } - - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java deleted file mode 100644 index 3ef04b1..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/db/SearchRecord.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.android.learn.base.db; - -import org.greenrobot.greendao.annotation.Entity; -import org.greenrobot.greendao.annotation.Id; -import org.greenrobot.greendao.annotation.Generated; - -@Entity -public class SearchRecord { - @Id - private Long id; - private String name; - @Generated(hash = 2029079304) - public SearchRecord(Long id, String name) { - this.id = id; - this.name = name; - } - @Generated(hash = 839789598) - public SearchRecord() { - } - public Long getId() { - return this.id; - } - public void setId(Long id) { - this.id = id; - } - public String getName() { - return this.name; - } - public void setName(String name) { - this.name = name; - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java deleted file mode 100644 index 7c76334..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/JSSEProvider.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.learn.base.email; - -import java.security.AccessController; -import java.security.Provider; - -public class JSSEProvider extends Provider { - - public JSSEProvider() { - super("HarmonyJSSE", 1.0, "Harmony JSSE Provider"); - AccessController.doPrivileged(new java.security.PrivilegedAction() { - public Void run() { - put("SSLContext.TLS", - "org.apache.harmony.xnet.provider.jsse.SSLContextImpl"); - put("Alg.Alias.SSLContext.TLSv1", "TLS"); - put("KeyManagerFactory.X509", - "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl"); - put("TrustManagerFactory.X509", - "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl"); - return null; - } - }); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java deleted file mode 100644 index 1d11182..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/MailSender.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.android.learn.base.email; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.security.Security; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.Properties; - -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.activation.FileDataSource; -import javax.mail.Authenticator; -import javax.mail.BodyPart; -import javax.mail.Message; -import javax.mail.Multipart; -import javax.mail.PasswordAuthentication; -import javax.mail.Session; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeBodyPart; -import javax.mail.internet.MimeMessage; -import javax.mail.internet.MimeMultipart; - -public class MailSender extends Authenticator { - - private String user; - private String password; - private Session session; - private String mailhost = "smtp.qq.com";//在这里配置你送邮件的主机地址,如qq邮箱、163邮箱等是不一样的 - private String port= "465";//在这里配置你送邮件的主机端口,如qq邮箱、163邮箱等是不一样的 - private Multipart messageMultipart; - private Properties properties; - static { - Security.addProvider(new JSSEProvider()); - } - - public MailSender(String user, String password) { - this.user = user; - this.password = password; - - properties = new Properties(); - properties.setProperty("mail.transport.protocol", "smtp"); - properties.setProperty("mail.host", mailhost); - properties.put("mail.smtp.auth", "true"); - properties.put("mail.smtp.port",port); - properties.put("mail.smtp.socketFactory.port",port); - properties.put("mail.smtp.socketFactory.class", - "javax.net.ssl.SSLSocketFactory"); - properties.put("mail.smtp.socketFactory.fallback", "false"); - properties.setProperty("mail.smtp.quitwait", "false"); - - session = Session.getDefaultInstance(properties, this); - messageMultipart=new MimeMultipart(); - } - - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(user, password); - } - - public synchronized void sendMail(String subject, String body, - String sender, String recipients,String attachment) throws Exception { - MimeMessage message = new MimeMessage(session); - message.setSender(new InternetAddress(sender));//閭欢鍙戜欢浜� - message.setSubject(subject);//閭欢涓婚 - //璁剧疆閭欢鍐呭 - BodyPart bodyPart=new MimeBodyPart(); - bodyPart.setText(body); - messageMultipart.addBodyPart(bodyPart); -// message.setDataHandler(handler); - - //璁剧疆閭欢闄勪欢 - if(attachment!=null){ - DataSource dataSource=new FileDataSource(attachment); - DataHandler dataHandler=new DataHandler(dataSource); - bodyPart.setDataHandler(dataHandler); - bodyPart.setFileName(attachment.substring(attachment.lastIndexOf("/")+1)); - } - message.setContent(messageMultipart); - if (recipients.indexOf(',') > 0) - //澶氫釜鑱旂郴浜� - message.setRecipients(Message.RecipientType.TO, - InternetAddress.parse(recipients)); - else - //鍗曚釜鑱旂郴浜� - message.setRecipient(Message.RecipientType.TO, new InternetAddress( - recipients)); - Transport.send(message); - } - - //缁ф壙DataSource璁剧疆瀛楃缂栫爜 - public class ByteArrayDataSource implements DataSource { - private byte[] data; - private String type; - - public ByteArrayDataSource(byte[] data, String type) { - super(); - this.data = data; - this.type = type; - } - - public ByteArrayDataSource(byte[] data) { - super(); - this.data = data; - } - - public void setType(String type) { - this.type = type; - } - - public String getContentType() { - if (type == null) - return "application/octet-stream"; - else - return type; - } - - public InputStream getInputStream() throws IOException { - return new ByteArrayInputStream(data); - } - - public String getName() { - return "ByteArrayDataSource"; - } - - public OutputStream getOutputStream() throws IOException { - throw new IOException("Not Supported"); - } - - public PrintWriter getLogWriter() throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public int getLoginTimeout() throws SQLException { - // TODO Auto-generated method stub - return 0; - } - - public void setLogWriter(PrintWriter out) throws SQLException { - // TODO Auto-generated method stub - - } - - public void setLoginTimeout(int seconds) throws SQLException { - // TODO Auto-generated method stub - - } - - public boolean isWrapperFor(Class arg0) throws SQLException { - // TODO Auto-generated method stub - return false; - } - - public T unwrap(Class arg0) throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public Connection getConnection() throws SQLException { - // TODO Auto-generated method stub - return null; - } - - public Connection getConnection(String theUsername, String thePassword) - throws SQLException { - // TODO Auto-generated method stub - return null; - } - } - - public String getMailhost() { - return mailhost; - } - - public void setMailhost(String mailhost) { - this.mailhost = mailhost; - properties.setProperty("mail.host", this.mailhost); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java deleted file mode 100644 index c774d18..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/email/ToastUtils.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.android.learn.base.email; - -import android.content.Context; -import android.os.Looper; -import android.widget.Toast; - -public class ToastUtils { - static Toast toast = null; - public static void show(Context context, String text) { - try { - if(toast!=null){ - toast.setText(text); - }else{ - toast= Toast.makeText(context, text, Toast.LENGTH_SHORT); - } - toast.show(); - } catch (Exception e) { - //解决在子线程中调用Toast的异常情况处理 - Looper.prepare(); - Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); - Looper.loop(); - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java deleted file mode 100644 index 9668f40..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/CancelCollectEvent.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.android.learn.base.event; - -public class CancelCollectEvent { - public int id; - - public CancelCollectEvent(int id) { - this.id = id; - - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java deleted file mode 100644 index 9fb14b9..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/ChangeNightEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.learn.base.event; - -public class ChangeNightEvent { - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java deleted file mode 100644 index df35c53..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LoginEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.learn.base.event; - -public class LoginEvent { - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java deleted file mode 100644 index af9b97d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/LogoutEvent.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.android.learn.base.event; - -public class LogoutEvent { - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java deleted file mode 100644 index 95c1d29..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/RestartMainEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.android.learn.base.event; - -import android.app.Activity; - -public class RestartMainEvent { - public Activity activity; - public RestartMainEvent(Activity activity){ - this.activity=activity; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java deleted file mode 100644 index fcdda32..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateDoneEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.android.learn.base.event; - -public class UpdateDoneEvent { - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java deleted file mode 100644 index ab04c3f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/event/UpdateTodoEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.android.learn.base.event; - -public class UpdateTodoEvent { - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java deleted file mode 100644 index 22265bd..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseFragment.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.android.learn.base.fragment; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.LinearLayout; - -import com.gaolei.basemodule.R; -import com.android.learn.base.utils.NetUtils; - -import butterknife.ButterKnife; -import butterknife.Unbinder; - - - - -public abstract class BaseFragment extends Fragment implements View.OnClickListener { - private FrameLayout mLlContent; - View subFragmentView; - private Button bt_error_refresh; - public LinearLayout mErrorPageView; - private Unbinder mBinder; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View mParentView = inflater.inflate(R.layout.fragment_base, container, false); - initBaseView(mParentView); - addContentView(inflater); - Bundle bundle = getArguments(); - if (bundle == null) { - bundle = savedInstanceState; - } - initData(bundle); - initView(mParentView); - return mParentView; - } - - /** - * 用于布局加载完毕,子Fragment可以开始初始化数据 - * - * @param bundle - */ - public abstract void initData(Bundle bundle); - public abstract void initView(View view); - - private void initBaseView(View view) { - mLlContent = view.findViewById(R.id.base_fragment_content); - mErrorPageView = view.findViewById(R.id.ll_base_error_content); - bt_error_refresh = view.findViewById(R.id.bt_error_refresh); -// if (!NetworkUtil.isNetworkAvailable(getActivity())) -// showErrorPage(true); - bt_error_refresh.setOnClickListener(this); - } - - /** - * 设置子布局layout - */ - public abstract int setContentLayout(); - - public abstract void reload(); - - /** - * 设置内容 - */ - public void addContentView(LayoutInflater inflater) { - subFragmentView = inflater.inflate(setContentLayout(), null); - mLlContent.addView(subFragmentView); - mBinder = ButterKnife.bind(this, subFragmentView); - - } - - - - /** - * 显示/隐藏 错误页面 - * - * @param isShow - */ - public void showErrorPage(boolean isShow) { - mErrorPageView.setVisibility(isShow ? View.VISIBLE : View.GONE); - } - - @Override - public void onClick(View v) { - if (v.getId() == R.id.bt_error_refresh) { - if (NetUtils.isConnected()) - mErrorPageView.setVisibility(View.GONE); - reload(); - } - } - - - public void onDestroyView() { - super.onDestroyView(); - if (mBinder != null) { - mBinder.unbind(); - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java deleted file mode 100644 index fa010b9..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseLazyFragment.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.android.learn.base.fragment; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.View; - - - -public abstract class BaseLazyFragment extends BaseFragment { - - //Fragment的View加载完毕的标记 - private boolean isViewCreated; - //Fragment对用户可见的标记 - private boolean isUIVisible; - - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - isViewCreated = true; - lazyLoad(); - } - - @Override - public void setUserVisibleHint(boolean isVisibleToUser) { - - super.setUserVisibleHint(isVisibleToUser); - //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见 - if (isVisibleToUser) { - isUIVisible = true; - lazyLoad(); - } else { - isUIVisible = false; - } - } - - private void lazyLoad() { - - //这里进行双重标记判断,是因为setUserVisibleHint会多次回调,并且会在onCreateView执行前回调,必须确保onCreateView加载完毕且页面可见,才加载数据 - if (isViewCreated && isUIVisible) { - - loadData(); - //数据加载完毕,恢复标记,防止重复加载 - isViewCreated = false; - isUIVisible = false; - - } - } - - - protected abstract void loadData(); - - - @Override - public void onDestroyView() { - super.onDestroyView(); - //页面销毁,恢复标记 - isViewCreated = false; - isUIVisible = false; - - } - - - /**Fragment中TextView显示的内容*/ - // protected abstract String getFragmentTextviewContent(); -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java deleted file mode 100644 index f6f4056..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/fragment/BaseMvpFragment.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.android.learn.base.fragment; - -import android.os.Bundle; -import android.support.annotation.Nullable; - -import com.android.learn.base.mpresenter.BasePresenter; - - -/** - * Created by gaolei on 2018/4/26. - */ - - -public abstract class BaseMvpFragment

extends BaseFragment { - - public P mPresenter; - //Fragment的View加载完毕的标记 - private boolean isViewCreated; - //Fragment对用户可见的标记 - private boolean isUIVisible; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - isViewCreated = true; - - mPresenter = initPresenter(); - if (mPresenter != null) - mPresenter.attach(this); - lazyLoad(); - } - - @Override - public void onDestroy() { - if (mPresenter != null) - mPresenter.dettach(); - super.onDestroy(); - } - - //实例presenter - public abstract P initPresenter(); - - - @Override - public void setUserVisibleHint(boolean isVisibleToUser) { - - super.setUserVisibleHint(isVisibleToUser); - //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见 - if (isVisibleToUser) { - isUIVisible = true; - lazyLoad(); - } else { - isUIVisible = false; - } - } - - private void lazyLoad() { - - //这里进行双重标记判断,是因为setUserVisibleHint会多次回调,并且会在onCreateView执行前回调,必须确保onCreateView加载完毕且页面可见,才加载数据 - if (isViewCreated && isUIVisible) { - - loadData(); - //数据加载完毕,恢复标记,防止重复加载 - isViewCreated = false; - isUIVisible = false; - - } - } - - - protected abstract void loadData(); - - - @Override - public void onDestroyView() { - super.onDestroyView(); - //页面销毁,恢复标记 - isViewCreated = false; - isUIVisible = false; - - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java deleted file mode 100644 index e920968..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BannerListData.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.util.List; - - -public class BannerListData extends BaseData { - -// { -// "desc":"最新项目上线啦~", "id":13, "imagePath": -// "http://www.wanandroid.com/blogimgs/5ae04af4-72b9-4696-81cb-1644cdcd2d29.jpg", "isVisible": -// 1, "order":0, "title":"最新项目上线啦~", "type":0, "url":"http://www.wanandroid.com/pindex" -// } - - - public List data; - - public class BannerData { - - public int id; - public String url; - public String imagePath; - public String title; - public String desc; - public int isVisible; - public int order; - public int type; - - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java deleted file mode 100644 index 8b53774..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseData.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.learn.base.mmodel; - -/** - * @author quchao - * @date 2018/2/12 - */ - -public class BaseData { - - public static final int SUCCESS = 0; - public static final int FAIL = -1; - - public int errorCode; - - public String errorMsg; - - - public int getErrorCode() { - return errorCode; - } - - public void setErrorCode(int errorCode) { - this.errorCode = errorCode; - } - - public String getErrorMsg() { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } - - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java deleted file mode 100644 index 0e3e5e0..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/BaseResponse.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.android.learn.base.mmodel; - -public class BaseResponse { - - public static final int SUCCESS = 0; - public static final int FAIL = 1; - - /** - * 0:成功,1:失败 - */ - public int errorCode; - - public String errorMsg; - - public T data; - - public int getErrorCode() { - return errorCode; - } - - public void setErrorCode(int errorCode) { - this.errorCode = errorCode; - } - - public String getErrorMsg() { - return errorMsg; - } - - public void setErrorMsg(String errorMsg) { - this.errorMsg = errorMsg; - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java deleted file mode 100644 index f252a36..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/FeedArticleListData.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - -public class FeedArticleListData { - - public int curPage; - public List datas; - public int offset; - public boolean over; - public int pageCount; - public int size; - public int total; - - public int getCurPage() { - return curPage; - } - - public void setCurPage(int curPage) { - this.curPage = curPage; - } - - public List getDatas() { - return datas; - } - - public void setDatas(List datas) { - this.datas = datas; - } - - public int getOffset() { - return offset; - } - - public void setOffset(int offset) { - this.offset = offset; - } - - public boolean isOver() { - return over; - } - - public void setOver(boolean over) { - this.over = over; - } - - public int getPageCount() { - return pageCount; - } - - public void setPageCount(int pageCount) { - this.pageCount = pageCount; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public class FeedArticleData implements Serializable { - - public String apkLink; - public String author; - public int chapterId; - public String chapterName; - public boolean collect=true; - public int courseId; - public String desc; - public String envelopePic; - public int id; - public String link; - public String niceDate; - public String origin; - public String projectLink; - public int superChapterId; - public String superChapterName; - public long publishTime; - public String title; - public int visible; - public int zan,originId; - - public String getApkLink() { - return apkLink; - } - - public void setApkLink(String apkLink) { - this.apkLink = apkLink; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public int getChapterId() { - return chapterId; - } - - public void setChapterId(int chapterId) { - this.chapterId = chapterId; - } - - public String getChapterName() { - return chapterName; - } - - public void setChapterName(String chapterName) { - this.chapterName = chapterName; - } - - public boolean isCollect() { - return collect; - } - - public void setCollect(boolean collect) { - this.collect = collect; - } - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getEnvelopePic() { - return envelopePic; - } - - public void setEnvelopePic(String envelopePic) { - this.envelopePic = envelopePic; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getNiceDate() { - return niceDate; - } - - public void setNiceDate(String niceDate) { - this.niceDate = niceDate; - } - - public String getOrigin() { - return origin; - } - - public void setOrigin(String origin) { - this.origin = origin; - } - - public String getProjectLink() { - return projectLink; - } - - public void setProjectLink(String projectLink) { - this.projectLink = projectLink; - } - - public int getSuperChapterId() { - return superChapterId; - } - - public void setSuperChapterId(int superChapterId) { - this.superChapterId = superChapterId; - } - - public String getSuperChapterName() { - return superChapterName; - } - - public void setSuperChapterName(String superChapterName) { - this.superChapterName = superChapterName; - } - - public long getPublishTime() { - return publishTime; - } - - public void setPublishTime(long publishTime) { - this.publishTime = publishTime; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public int getZan() { - return zan; - } - - public void setZan(int zan) { - this.zan = zan; - } - } - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java deleted file mode 100644 index c4fab0f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/HotKeyData.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.android.learn.base.mmodel; - -public class HotKeyData { - - - /** - * id : 6 - * link : - * name : 面试 - * order : 1 - * visible : 1 - */ - - private int id; - private String link; - private String name; - private int order; - private int visible; - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java deleted file mode 100644 index aaec995..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/ProjectListData.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - - -/** - * @author quchao - * @date 2018/2/24 - */ - -public class ProjectListData { - - /** - * "curPage": 1, - * "datas": [], - * "offset": 0, - * "over": true, - * "pageCount": 1, - * "size": 15, - * "total": 8 - */ - public ListData data; - - public class ListData { - public int curPage; - public List datas; - public int offset; - public boolean over; - public int pageCount; - public int size; - public int total; - public List getDatas() { - return datas; - } - - public void setDatas(List datas) { - this.datas = datas; - } -// public int getCurPage() { -// return curPage; -// } -// -// public void setCurPage(int curPage) { -// this.curPage = curPage; -// } -// -// public int getOffset() { -// return offset; -// } -// -// public void setOffset(int offset) { -// this.offset = offset; -// } -// -// public boolean isOver() { -// return over; -// } -// -// public void setOver(boolean over) { -// this.over = over; -// } -// -// public int getPageCount() { -// return pageCount; -// } -// -// public void setPageCount(int pageCount) { -// this.pageCount = pageCount; -// } -// -// public int getSize() { -// return size; -// } -// -// public void setSize(int size) { -// this.size = size; -// } -// -// public int getTotal() { -// return total; -// } -// -// public void setTotal(int total) { -// this.total = total; -// } - } - - public class ProjectData implements Serializable - { - -// { -// "apkLink": "", -// "author": "LiangLuDev", -// "chapterId": 294, -// "chapterName": "完整项目", -// "collect": false, -// "courseId": 13, -// "desc": "注册登录、用户信息、用户密码、用户图像修改、书籍分类、本地书籍扫描、书架、书籍搜索(作者名或书籍名)、书籍阅读(仅txt格式,暂不支持PDF等其他格式)、阅读字体、背景颜色、翻页效果等设置、意见反馈(反馈信息发送到我的邮箱)、应用版本更新", -// "envelopePic": "http://www.wanandroid.com/blogimgs/fab6fb8b-c3aa-495f-b6a9-c007d78751c0.gif", -// "fresh": false, -// "id": 2836, -// "link": "http://www.wanandroid.com/blog/show/2116", -// "niceDate": "2018-04-22", -// "origin": "", -// "projectLink": "https://github.com/LiangLuDev/WeYueReader", -// "publishTime": 1524376619000, -// "superChapterId": 0, -// "superChapterName": "", -// "tags": [ ], -// "title": "微Yue电子书阅读 WeYueReader", -// "type": 0, -// "visible": 1, -// "zan": 0 -//} - public String apkLink; - public String author; - public int chapterId; - public String chapterName; - public boolean collect; - public int courseId; - public String desc; - public String envelopePic; - public int id; - public String link; - public String niceDate; - public String origin; - public String projectLink; - public int superChapterId; - public String superChapterName; - public long publishTime; - public String title; - public int visible; - public int zan; - -// public String getApkLink() { -// return apkLink; -// } -// -// public void setApkLink(String apkLink) { -// this.apkLink = apkLink; -// } -// - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public int getChapterId() { - return chapterId; - } -// -// public void setChapterId(int chapterId) { -// this.chapterId = chapterId; -// } -// -// public String getChapterName() { -// return chapterName; -// } -// -// public void setChapterName(String chapterName) { -// this.chapterName = chapterName; -// } -// -// public boolean isCollect() { -// return collect; -// } -// -// public void setCollect(boolean collect) { -// this.collect = collect; -// } -// -// public int getCourseId() { -// return courseId; -// } -// -// public void setCourseId(int courseId) { -// this.courseId = courseId; -// } -// - public String getDesc() { - return desc; - } - - public void setDesc(String desc) { - this.desc = desc; - } - - public String getEnvelopePic() { - return envelopePic; - } - - public void setEnvelopePic(String envelopePic) { - this.envelopePic = envelopePic; - } -// -// public int getId() { -// return id; -// } -// -// public void setId(int id) { -// this.id = id; -// } - - public String getLink() { - return link; - } - - public void setLink(String link) { - this.link = link; - } - - public String getNiceDate() { - return niceDate; - } - - public void setNiceDate(String niceDate) { - this.niceDate = niceDate; - } -// -// public String getOrigin() { -// return origin; -// } -// -// public void setOrigin(String origin) { -// this.origin = origin; -// } -// -// public String getProjectLink() { -// return projectLink; -// } -// -// public void setProjectLink(String projectLink) { -// this.projectLink = projectLink; -// } -// -// public int getSuperChapterId() { -// return superChapterId; -// } -// -// public void setSuperChapterId(int superChapterId) { -// this.superChapterId = superChapterId; -// } -// -// public String getSuperChapterName() { -// return superChapterName; -// } -// -// public void setSuperChapterName(String superChapterName) { -// this.superChapterName = superChapterName; -// } -// -// public long getPublishTime() { -// return publishTime; -// } -// -// public void setPublishTime(long publishTime) { -// this.publishTime = publishTime; -// } -// - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } -// -// public int getVisible() { -// return visible; -// } -// -// public void setVisible(int visible) { -// this.visible = visible; -// } -// -// public int getZan() { -// return zan; -// } -// -// public void setZan(int zan) { -// this.zan = zan; -// } - - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java deleted file mode 100644 index 545aa0b..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/RegisterLoginData.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.util.List; - -/** - * @author quchao - * @date 2018/2/26 - */ - -public class RegisterLoginData extends BaseData { - - public Data data; - - public class Data { - public String username; - public String password; - public String email, icon, token; - public int id, type; - // private List chapterTops; - public List collectIds; - - @Override - public String toString() { - return "RegisterLoginData{" + - "username='" + username + '\'' + - ", password='" + password + '\'' + - ", email='" + email + '\'' + - ", icon='" + icon + '\'' + - ", token='" + token + '\'' + - ", id=" + id + - ", type=" + type + - ", collectIds=" + collectIds + - '}'; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java deleted file mode 100644 index dc3e812..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TodoData.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - -public class TodoData { - - - /** - * curPage : 1 - * datas : [{"completeDate":null,"completeDateStr":"","content":"圣诞节快乐","date":1545667200000,"dateStr":"2018-12-25","id":5566,"priority":0,"status":0,"title":"圣诞节","type":0,"userId":13479},{"completeDate":null,"completeDateStr":"","content":"圣诞夜快乐","date":1545580800000,"dateStr":"2018-12-24","id":5564,"priority":0,"status":0,"title":"圣诞夜","type":0,"userId":13479}] - * offset : 0 - * over : true - * pageCount : 1 - * size : 20 - * total : 2 - */ - - private int curPage; - private int offset; - private boolean over; - private int pageCount; - private int size; - private int total; - private List datas; - - public int getCurPage() { - return curPage; - } - - public void setCurPage(int curPage) { - this.curPage = curPage; - } - - public int getOffset() { - return offset; - } - - public void setOffset(int offset) { - this.offset = offset; - } - - public boolean isOver() { - return over; - } - - public void setOver(boolean over) { - this.over = over; - } - - public int getPageCount() { - return pageCount; - } - - public void setPageCount(int pageCount) { - this.pageCount = pageCount; - } - - public int getSize() { - return size; - } - - public void setSize(int size) { - this.size = size; - } - - public int getTotal() { - return total; - } - - public void setTotal(int total) { - this.total = total; - } - - public List getDatas() { - return datas; - } - - public void setDatas(List datas) { - this.datas = datas; - } - - public static class DatasBean implements Serializable{ - /** - * completeDate : null - * completeDateStr : - * content : 圣诞节快乐 - * date : 1545667200000 - * dateStr : 2018-12-25 - * id : 5566 - * priority : 0 - * status : 0 - * title : 圣诞节 - * type : 0 - * userId : 13479 - */ - - private Object completeDate; - private String completeDateStr; - private String content; - private long date; - private String dateStr; - private int id; - private int priority; - private int status; - private String title; - private int type; - private int userId; - - public Object getCompleteDate() { - return completeDate; - } - - public void setCompleteDate(Object completeDate) { - this.completeDate = completeDate; - } - - public String getCompleteDateStr() { - return completeDateStr; - } - - public void setCompleteDateStr(String completeDateStr) { - this.completeDateStr = completeDateStr; - } - - public String getContent() { - return content; - } - - public void setContent(String content) { - this.content = content; - } - - public long getDate() { - return date; - } - - public void setDate(long date) { - this.date = date; - } - - public String getDateStr() { - return dateStr; - } - - public void setDateStr(String dateStr) { - this.dateStr = dateStr; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public int getPriority() { - return priority; - } - - public void setPriority(int priority) { - this.priority = priority; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - public int getUserId() { - return userId; - } - - public void setUserId(int userId) { - this.userId = userId; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java deleted file mode 100644 index a3f694b..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/TreeBean.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.android.learn.base.mmodel; - -import java.io.Serializable; -import java.util.List; - - -public class TreeBean implements Serializable { - - /** - * children : [{"children":[],"courseId":13,"id":60,"name":"Android Studio相关","order":1000,"parentChapterId":150,"visible":1},"..."] - * courseId : 13 - * id : 150 - * name : 开发环境 - * order : 1 - * parentChapterId : 0 - * visible : 1 - */ - - private int courseId; - private int id; - private String name; - private int order; - private int parentChapterId; - private int visible; - private List children; - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getParentChapterId() { - return parentChapterId; - } - - public void setParentChapterId(int parentChapterId) { - this.parentChapterId = parentChapterId; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public List getChildren() { - return children; - } - - public void setChildren(List children) { - this.children = children; - } - - public static class ChildrenBean { - /** - * children : [] - * courseId : 13 - * id : 60 - * name : Android Studio相关 - * order : 1000 - * parentChapterId : 150 - * visible : 1 - */ - - private int courseId; - private int id; - private String name; - private int order; - private int parentChapterId; - private int visible; - private List children; - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getParentChapterId() { - return parentChapterId; - } - - public void setParentChapterId(int parentChapterId) { - this.parentChapterId = parentChapterId; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public List getChildren() { - return children; - } - - public void setChildren(List children) { - this.children = children; - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java deleted file mode 100644 index 298592d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mmodel/WxArticle.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.android.learn.base.mmodel; - -import com.google.gson.Gson; - -import java.util.List; - -public class WxArticle { - - - /** - * children : [] - * courseId : 13 - * id : 408 - * name : 鸿洋 - * order : 190000 - * parentChapterId : 407 - * userControlSetTop : false - * visible : 1 - */ - - private int courseId; - private int id; - private String name; - private int order; - private int parentChapterId; - private boolean userControlSetTop; - private int visible; - private List children; - - public static WxArticle objectFromData(String str) { - - return new Gson().fromJson(str, WxArticle.class); - } - - public int getCourseId() { - return courseId; - } - - public void setCourseId(int courseId) { - this.courseId = courseId; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getOrder() { - return order; - } - - public void setOrder(int order) { - this.order = order; - } - - public int getParentChapterId() { - return parentChapterId; - } - - public void setParentChapterId(int parentChapterId) { - this.parentChapterId = parentChapterId; - } - - public boolean isUserControlSetTop() { - return userControlSetTop; - } - - public void setUserControlSetTop(boolean userControlSetTop) { - this.userControlSetTop = userControlSetTop; - } - - public int getVisible() { - return visible; - } - - public void setVisible(int visible) { - this.visible = visible; - } - - public List getChildren() { - return children; - } - - public void setChildren(List children) { - this.children = children; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java deleted file mode 100644 index ae0718e..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mpresenter/BasePresenter.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.android.learn.base.mpresenter; - -import com.android.learn.base.thirdframe.retrofit.ApiService; -import com.android.learn.base.thirdframe.retrofit.RetrofitProvider; -import com.android.learn.base.thirdframe.rxjava.BaseObserver; -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.schedulers.Schedulers; - -public abstract class BasePresenter { - - public V mView; -// public Observable observable; - public ApiService mRestService = RetrofitProvider.getInstance().builder().getApiService(); - CompositeDisposable mCompositeDisposable ; - - /** - * 绑定View - * - * @param view - */ - public void attach(V view) { - this.mView = view; - if (mCompositeDisposable == null) { - mCompositeDisposable = new CompositeDisposable(); - } - } - - /** - * 释放View - */ - public void dettach() { - this.mView = null; - if (mCompositeDisposable != null) { - mCompositeDisposable.clear(); - } - } - - public void addSubscribe( Observable observable,BaseObserver observer){ - mCompositeDisposable.add(observer); - observable.subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(observer); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java deleted file mode 100644 index c04a9ad..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/mview/BaseView.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.android.learn.base.mview; - -public interface BaseView { - - void showLoading(); - void hideLoading(); - void showErrorMsg(String errorMsg); -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java deleted file mode 100644 index 5974beb..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/ImageLoader.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.android.learn.base.thirdframe.glide; - -import android.content.Context; -import android.widget.ImageView; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; -import com.bumptech.glide.request.RequestOptions; - - -public class ImageLoader { - public static ImageLoader instance; - public static RequestOptions options; - - private ImageLoader() { - } - - public static ImageLoader getInstance() { - if (instance == null) { - instance = new ImageLoader(); - options = new RequestOptions() -// .placeholder(R.drawable.ic_launcher)// 正在加载中的图片 -// .error(R.drawable.video_error) // 加载失败的图片 - .diskCacheStrategy(DiskCacheStrategy.ALL); // 磁盘缓存策略 - - } - return instance; - } - - /** - * 使用Glide加载圆形ImageView(如头像)时,不要使用占位图 - * - * @param context context - * @param url image url - * @param iv imageView - */ - public void load(Context context, String url, ImageView iv) { - - Glide.with(context).load(url).apply(options).transition(new DrawableTransitionOptions().crossFade(500)) - .into(iv); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java deleted file mode 100644 index 95c667d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/glide/MyAppGlideModule.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.android.learn.base.thirdframe.glide; - -import android.content.Context; -import android.os.Environment; -import android.support.annotation.NonNull; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.GlideBuilder; -import com.bumptech.glide.Registry; -import com.bumptech.glide.annotation.GlideModule; -import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool; -import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory; -import com.bumptech.glide.load.engine.cache.LruResourceCache; -import com.bumptech.glide.module.AppGlideModule; -import com.android.learn.base.application.CustomApplication; - -@GlideModule -public final class MyAppGlideModule extends AppGlideModule { - - public static String glideCachePath; - @Override - public boolean isManifestParsingEnabled() { -// return super.isManifestParsingEnabled(); - return false; - } - - @Override - public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { - int diskCacheSizeBytes = 1024 * 1024 * 100; // 50 MB - glideCachePath= CustomApplication.context.getExternalFilesDir("glide_cache").getAbsolutePath(); - builder.setDiskCache( - new DiskLruCacheFactory( glideCachePath, diskCacheSizeBytes ) - ); - int maxMemory = (int) Runtime.getRuntime().maxMemory();//获取系统分配给应用的总内存大小 - int memoryCacheSize = maxMemory / 8;//设置图片内存缓存占用八分之一 - //设置内存缓存大小 - builder.setMemoryCache(new LruResourceCache(memoryCacheSize)); - //设置BitmapPool缓存内存大小 - builder.setBitmapPool(new LruBitmapPool(memoryCacheSize)); - - } - private String getStorageDirectory(Context context){ - return Environment.getExternalStorageDirectory().getPath()+"/"+context.getPackageName(); - } - @Override - public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { - super.registerComponents(context, glide, registry); - } -} - diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java deleted file mode 100644 index fd8533f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/ApiService.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit; - - -import com.android.learn.base.mmodel.BannerListData; -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; -import com.android.learn.base.mmodel.FeedArticleListData; -import com.android.learn.base.mmodel.HotKeyData; -import com.android.learn.base.mmodel.RegisterLoginData; -import com.android.learn.base.mmodel.ProjectListData; -import com.android.learn.base.mmodel.TodoData; -import com.android.learn.base.mmodel.TreeBean; -import com.android.learn.base.mmodel.WxArticle; - -import java.util.List; -import java.util.Map; - -import io.reactivex.Observable; -import retrofit2.http.Field; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.GET; -import retrofit2.http.POST; -import retrofit2.http.Path; -import retrofit2.http.Query; -import retrofit2.http.QueryMap; - - -public interface ApiService { - - - @GET("project/list/{page}/json") - Observable getProjectListData(@Path("page") int page, @Query("cid") int cid); - - @GET("banner/json") - Observable getBannerListData(); - - @GET("article/list/{num}/json") - Observable> getFeedArticleList(@Path("num") int num); - - @GET("article/list/{num}/json") - Observable> getKnowledgeArticleList(@Path("num") int num, @Query("cid") int cid); - - @POST("user/login") - @FormUrlEncoded - Observable login(@Field("username") String username, @Field("password") String password); - - @GET("user/logout/json") - Observable logout(); - - @POST("user/register") - @FormUrlEncoded - Observable register(@Field("username") String username, @Field("password") String password, @Field("repassword") String repassword); - - @POST("lg/collect/{id}/json") - Observable addCollectArticle(@Path("id") int id); - - @GET("lg/collect/list/{page}/json") - Observable> getCollectList(@Path("page") int page); - - @POST("lg/uncollect_originId/{id}/json") - @FormUrlEncoded - Observable cancelCollectArticle(@Path("id") int id, @Field("originId") int originId); - - @GET("tree/json") - Observable>> getKnowledgeTree(); - - @GET("hotkey/json") - Observable>> getHotKey(); - - @GET("wxarticle/chapters/json") - Observable>> getWxArticle(); - - @GET("wxarticle/list/{id}/{num}/json") - Observable> getWxArtileById(@Path("id") int id, @Path("num") int num); - - @POST("article/query/{num}/json") - @FormUrlEncoded - Observable> search(@Path("num") int num, @Field("k") String key); - - @GET("lg/todo/list/{type}/json") - Observable> getTodoList(@Path("type") int type); - - @POST("lg/todo/listnotdo/{type}/json/{page}") - Observable> getListNotDone(@Path("type") int type, @Path("page") int page); - - @POST("lg/todo/listdone/{type}/json/{page}") - Observable> getListDone(@Path("type") int type, @Path("page") int page); - - @POST("lg/todo/add/json") - Observable addTodo(@QueryMap Map map); - - @POST("lg/todo/update/{id}/json") - Observable updateTodo(@Path("id") int id, @QueryMap Map map); - - @POST("lg/todo/delete/{id}/json") - Observable deleteTodo(@Path("id") int id); - - //status: 0或1,传1代表未完成到已完成,反之则反之。 - @POST("lg/todo/done/{id}/json") - Observable updateTodoStatus(@Path("id") int id, @Query("status") int status); -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java deleted file mode 100644 index 6d0131c..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonConverterFactory.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.reflect.TypeToken; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Type; - -import okhttp3.RequestBody; -import okhttp3.ResponseBody; -import retrofit2.Converter; -import retrofit2.Retrofit; - -/** - * @author lqx - * 自定义GsonConverterFactory - */ -public class CustomizeGsonConverterFactory extends Converter.Factory { - public static CustomizeGsonConverterFactory create() { - return create(new Gson()); - } - - public static CustomizeGsonConverterFactory create(Gson gson) { - return new CustomizeGsonConverterFactory(gson); - } - - private final Gson gson; - - private CustomizeGsonConverterFactory(Gson gson) { - if (gson == null) { - throw new NullPointerException("gson == null"); - } - this.gson = gson; - } - - @Override - public Converter responseBodyConverter(Type type, Annotation[] annotations, - Retrofit retrofit) { - TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); - return new CustomizeGsonResponseBodyConverter<>(gson, adapter); - } - - @Override - public Converter requestBodyConverter(Type type, Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { - TypeAdapter adapter = gson.getAdapter(TypeToken.get(type)); - return new CustomizeGsonRequestBodyConverter<>(gson, adapter); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java deleted file mode 100644 index 6e8170d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonRequestBodyConverter.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit; - -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonWriter; - -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.nio.charset.Charset; - -import okhttp3.MediaType; -import okhttp3.RequestBody; -import okio.Buffer; -import retrofit2.Converter; - -/** - * @param - * @author lqx - */ -public class CustomizeGsonRequestBodyConverter implements Converter { - - private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8"); - private static final Charset UTF_8 = Charset.forName("UTF-8"); - - private final Gson gson; - private final TypeAdapter adapter; - - CustomizeGsonRequestBodyConverter(Gson gson, TypeAdapter adapter) { - this.gson = gson; - this.adapter = adapter; - } - - @Override - public RequestBody convert(T value) throws IOException { - Buffer buffer = new Buffer(); - Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8); - JsonWriter jsonWriter = gson.newJsonWriter(writer); - adapter.write(jsonWriter, value); - jsonWriter.close(); - return RequestBody.create(MEDIA_TYPE, buffer.readByteString()); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java deleted file mode 100644 index 92dce17..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/CustomizeGsonResponseBodyConverter.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit; - -import com.android.learn.base.utils.LogUtil; -import com.google.gson.Gson; -import com.google.gson.TypeAdapter; - -import org.json.JSONObject; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import okhttp3.ResponseBody; -import retrofit2.Converter; - -/** - * @param - * @author lqx - */ -public class CustomizeGsonResponseBodyConverter implements Converter { - - private final Gson gson; - private final TypeAdapter adapter; - String TAG="CustomizeGsonResponseBodyConverter"; - - CustomizeGsonResponseBodyConverter(Gson gson, TypeAdapter adapter) { - this.gson = gson; - this.adapter = adapter; - } - - @Override - public T convert(ResponseBody value) throws IOException { - - String responseBodyStr = value.string(); - LogUtil.d(TAG,"responseBodyStr---------------"+responseBodyStr); - - - return adapter.fromJson(responseBodyStr); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java deleted file mode 100644 index 20a5d7f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitDynamicProvider.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit; - - -import com.android.learn.base.application.CustomApplication; -import com.android.learn.base.thirdframe.retrofit.interceptor.DefaultHeaderInterceptor; -import com.android.learn.base.thirdframe.retrofit.interceptor.HttpLoggingInterceptor; -import com.franmontiel.persistentcookiejar.PersistentCookieJar; -import com.franmontiel.persistentcookiejar.cache.SetCookieCache; -import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; - -import java.nio.charset.Charset; -import java.util.concurrent.TimeUnit; - -import okhttp3.OkHttpClient; -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; - - -public final class RetrofitDynamicProvider { - private final Charset UTF8 = Charset.forName("UTF-8"); - private Retrofit mRetrofit; - private OkHttpClient mOkHttpClient; - private static volatile RetrofitDynamicProvider sInstance; - private ApiService restService; - public static String netCachePath; -// public final String BASE_URL = "http://www.xuetangx.com/"; - - private RetrofitDynamicProvider() { - } - - - public RetrofitDynamicProvider builder(String BASE_URL) { - netCachePath = CustomApplication.context.getExternalFilesDir("net_cache").getAbsolutePath(); - if (mOkHttpClient == null) { - mOkHttpClient = new OkHttpClient.Builder() - .addNetworkInterceptor(new HttpLoggingInterceptor()) -// .addNetworkInterceptor(new HandleGzipInterceptor()) - .addInterceptor(new DefaultHeaderInterceptor())//请求连接中添加头信息 -// .addNetworkInterceptor(new OnlineCacheInterceptor())//有网缓存拦截器 -// .addInterceptor(new OfflineCacheInterceptor())//无网缓存拦截器 -// .cache(new Cache(new File(netCachePath), 50 * 10240 * 1024))//缓存路径和空间设置 -// .addInterceptor(new RetryIntercepter(4))//重试 -// .addInterceptor(new GzipRequestInterceptor())//开启Gzip压缩 - -// .addInterceptor(new ProgressInterceptor())//请求url的进度 -// .addInterceptor(new TokenInterceptor())//token过期,自动刷新Token -// .addInterceptor(new SignInterceptor())//所有的接口,默认需要带上sign,timestamp2个参数 -// .addNetworkInterceptor(new ParamsEncryptInterceptor())//参数加密,一般针对表单中的字段和值进行加密,防止中途第三方进行窥探和篡改 - .cookieJar(new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(CustomApplication.context))) - .connectTimeout(30, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .writeTimeout(30, TimeUnit.SECONDS) - .build(); - - } -// if (mRetrofit == null) { - mRetrofit = new Retrofit.Builder() - .client(mOkHttpClient) - .baseUrl(BASE_URL) - .addConverterFactory(CustomizeGsonConverterFactory.create()) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .build(); -// } - return sInstance; - } - - public static RetrofitDynamicProvider getInstance() { - if (sInstance == null) { - synchronized (RetrofitDynamicProvider.class) { - if (sInstance == null) { - sInstance = new RetrofitDynamicProvider(); - } - } - } - return sInstance; - } - - public T createService(Class tClass) { - return mRetrofit.create(tClass); - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java deleted file mode 100644 index 9d6c27c..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/RetrofitProvider.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit; - - -import com.android.learn.base.application.CustomApplication; -import com.android.learn.base.thirdframe.retrofit.interceptor.HttpLoggingInterceptor; -import com.android.learn.base.thirdframe.retrofit.interceptor.OfflineCacheInterceptor; -import com.android.learn.base.thirdframe.retrofit.interceptor.OnlineCacheInterceptor; -import com.android.learn.base.thirdframe.retrofit.interceptor.RetryIntercepter; -import com.franmontiel.persistentcookiejar.PersistentCookieJar; -import com.franmontiel.persistentcookiejar.cache.SetCookieCache; -import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor; - -import java.io.File; -import java.util.concurrent.TimeUnit; - -import okhttp3.Cache; -import okhttp3.OkHttpClient; -import retrofit2.Retrofit; -import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; -import retrofit2.converter.gson.GsonConverterFactory; - - -public final class RetrofitProvider { - - private Retrofit mRetrofit; - private OkHttpClient mOkHttpClient; - private static volatile RetrofitProvider sInstance; - private ApiService restService; - public static String netCachePath; - public final String BASE_URL = "http://www.wanandroid.com/"; - public PersistentCookieJar persistentCookieJar; - public SharedPrefsCookiePersistor sharedPrefsCookiePersistor; - - private RetrofitProvider() { - } - - - public RetrofitProvider builder() { - netCachePath = CustomApplication.context.getExternalFilesDir("net_cache").getAbsolutePath(); - if (mOkHttpClient == null) { - sharedPrefsCookiePersistor=new SharedPrefsCookiePersistor(CustomApplication.context); - persistentCookieJar=new PersistentCookieJar(new SetCookieCache(), sharedPrefsCookiePersistor); - mOkHttpClient = new OkHttpClient.Builder() - .addNetworkInterceptor(new HttpLoggingInterceptor()) - .addNetworkInterceptor(new OnlineCacheInterceptor())//有网缓存拦截器 - .addInterceptor(new OfflineCacheInterceptor())//无网缓存拦截器 - .cache(new Cache(new File(netCachePath), 50 * 10240 * 1024))//缓存路径和空间设置 - .addInterceptor(new RetryIntercepter(4))//重试 -// .addInterceptor(new GzipRequestInterceptor())//开启Gzip压缩 - -// .addInterceptor(new DefaultHeaderInterceptor())//请求连接中添加头信息 -// .addInterceptor(new ProgressInterceptor())//请求url的进度 -// .addInterceptor(new TokenInterceptor())//token过期,自动刷新Token -// .addInterceptor(new SignInterceptor())//所有的接口,默认需要带上sign,timestamp2个参数 -// .addNetworkInterceptor(new ParamsEncryptInterceptor())//参数加密,一般针对表单中的字段和值进行加密,防止中途第三方进行窥探和篡改 - .cookieJar(persistentCookieJar) - .connectTimeout(5, TimeUnit.SECONDS) - .readTimeout(5, TimeUnit.SECONDS) - .writeTimeout(5, TimeUnit.SECONDS) - .build(); - - } - if (mRetrofit == null) { - mRetrofit = new Retrofit.Builder() - .client(mOkHttpClient) - .baseUrl(BASE_URL) - .addConverterFactory(CustomizeGsonConverterFactory.create()) - .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) - .build(); - } - return sInstance; - } - - public static RetrofitProvider getInstance() { - if (sInstance == null) { - synchronized (RetrofitProvider.class) { - if (sInstance == null) { - sInstance = new RetrofitProvider(); - } - } - } - return sInstance; - } - - public T createService(Class tClass) { - return mRetrofit.create(tClass); - } - - public ApiService getApiService() { - if (restService == null) - restService = mRetrofit.create(ApiService.class); - return restService; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java deleted file mode 100644 index d7afc7a..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/DefaultHeaderInterceptor.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import java.io.IOException; - -import okhttp3.Headers; -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -public class DefaultHeaderInterceptor implements Interceptor { - - @Override - public Response intercept(Chain chain) throws IOException { - Request originalrequest = chain.request();//原始request - Headers headers = new Headers.Builder() - .add("name", "jason") - .add("age", "27") - .add("token", "dfedsdfsdfffdd12dsef123sdfef1s2dfe") - .build();//构造一个Headers - Request request = originalrequest.newBuilder().headers(headers).build();//注意这行代码别写错了 - return chain.proceed(request); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java deleted file mode 100644 index a4d11ff..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/GzipRequestInterceptor.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; /** This interceptor compresses the HTTP request body. Many webservers can't handle this! */ - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.MediaType; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okio.BufferedSink; -import okio.GzipSink; -import okio.Okio; - -/** - * 我们在向服务器提交大量数据的时候,希望对post的数据进行gzip压缩 - * 这个拦截器压缩了请求实体. 很多网络服务器无法处理它 */ -public class GzipRequestInterceptor implements Interceptor { - @Override public Response intercept(Interceptor.Chain chain) throws IOException { - Request originalRequest = chain.request(); - if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) { - return chain.proceed(originalRequest); - } - - Request compressedRequest = originalRequest.newBuilder() - .header("Content-Encoding", "gzip") - .method(originalRequest.method(), gzip(originalRequest.body())) - .build(); - return chain.proceed(compressedRequest); - } - - private RequestBody gzip(final RequestBody body) { - return new RequestBody() { - @Override public MediaType contentType() { - return body.contentType(); - } - - @Override public long contentLength() { - return -1; // We don't know the compressed length in advance! - } - - @Override public void writeTo(BufferedSink sink) throws IOException { - BufferedSink gzipSink = Okio.buffer(new GzipSink(sink)); - body.writeTo(gzipSink); - gzipSink.close(); - } - }; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java deleted file mode 100644 index 71e2a0d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/HttpLoggingInterceptor.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import android.util.Log; - - -import com.android.learn.base.utils.LogUtil; - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; - - -public class HttpLoggingInterceptor implements Interceptor { - public Response intercept(Interceptor.Chain chain) throws IOException { - //这个chain里面包含了request和response,所以你要什么都可以从这里拿 - Request request = chain.request(); - - long t1 = System.nanoTime();//请求发起的时间 - LogUtil.d("HttpLoggingInterceptor",String.format("发送请求 %s on %s%n%s", - request.url(), chain.connection(), request.headers())); - - Response response = chain.proceed(request); - - long t2 = System.nanoTime();//收到响应的时间 - - //这里不能直接使用response.body().string()的方式输出日志 - //因为response.body().string()之后,response中的流会被关闭,程序会报错,我们需要创建出一 - //个新的response给应用层处理 - ResponseBody responseBody = response.peekBody(1024 * 1024); - - LogUtil.d("HttpLoggingInterceptor",String.format("接收响应: [%s] %n返回json:【%s】 %.1fms%n%s", - response.request().url(), - responseBody.string(), - (t2 - t1) / 1e6d, - response.headers())); - - return response; - } -} - - diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java deleted file mode 100644 index d5a5de4..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OfflineCacheInterceptor.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import android.util.Log; - -import com.android.learn.base.application.CustomApplication; -import com.android.learn.base.utils.NetUtils; - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -public class OfflineCacheInterceptor implements Interceptor { - @Override - public Response intercept(Chain chain) throws IOException { - Request request = chain.request(); - if (!NetUtils.isConnected()) { - int offlineCacheTime = Integer.MAX_VALUE;//离线的时候的缓存的过期时间 - request = request.newBuilder() -// .cacheControl(new CacheControl -// .Builder() -// .maxStale(60, TimeUnit.SECONDS) -// .onlyIfCached() -// .build() -// ) -// 两种方式结果是一样的,写法不同 - .header("Cache-Control", "public, only-if-cached, max-stale=" + offlineCacheTime) - .build(); - } - Response response = chain.proceed(request); - Log.d("gaolei","OfflineCacheInterceptor------------response.code():"+response.code()); - if (response.code() == 504) { - // 缓存已经不可使用 - } - return response; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java deleted file mode 100644 index 78b383a..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/OnlineCacheInterceptor.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import android.util.Log; - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -public class OnlineCacheInterceptor implements Interceptor { - @Override - public Response intercept(Chain chain) throws IOException { - Request request = chain.request(); - Response response = chain.proceed(request); - int onlineCacheTime = 10;//在线的时候的缓存过期时间,如果想要不缓存,直接时间设置为0 - Response newResponse = response.newBuilder() - .header("Cache-Control", "public, max-age=" + onlineCacheTime) - .removeHeader("Pragma") - .build(); - Log.d("gaolei","OnlineCacheInterceptor------------newResponse.code():"+newResponse.code()); - - return newResponse; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java deleted file mode 100644 index 6655ba3..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ParamsEncryptInterceptor.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import android.util.Base64; -import android.util.Log; - -import java.io.IOException; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; -import java.security.spec.InvalidKeySpecException; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.spec.SecretKeySpec; - -import okhttp3.Interceptor; -import okhttp3.MediaType; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okio.Buffer; - -public class ParamsEncryptInterceptor implements Interceptor { - - private static final String TAG = ParamsEncryptInterceptor.class.getSimpleName(); - - private static final boolean DEBUG = true; - - @Override - public Response intercept(Chain chain) throws IOException { - - - Request request = chain.request(); - try { - RequestBody oldBody = request.body(); - Buffer buffer = new Buffer(); - oldBody.writeTo(buffer); - String strOldBody = buffer.readUtf8(); - MediaType mediaType = MediaType.parse("text/plain; charset=utf-8"); - //在发动报文前,用Base64和AES对参数进行加密转码 - String strNewBody = encryptDataWithSymmetricKey(generateSymmetric(), strOldBody); - RequestBody body = RequestBody.create(mediaType, strNewBody); - request = request.newBuilder().header("Content-Type", body.contentType().toString()) - .header("Content-Length", String.valueOf(body.contentLength())).method(request.method(), body).build(); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } catch (InvalidKeySpecException e) { - e.printStackTrace(); - } - return chain.proceed(request); -} - - //加密算法自己和服务端约定即可 - private static String encrypt(String str){ - //your code - return ""; - } - - //生成了对称密钥 - public static SecretKeySpec generateSymmetric() { - // Set up secret key spec for 128-bit AES encryption and decryption - SecretKeySpec sks = null; - try { - SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); - sr.setSeed("any data used as random seed".getBytes()); - KeyGenerator kg = KeyGenerator.getInstance("AES"); - kg.init(128, sr); - SecretKey secretKey=kg.generateKey(); - //在这里可以用从服务端获取到的RSA公钥对刚才随机产生的加密密钥secretKey进行加密 - sks = new SecretKeySpec(secretKey.getEncoded(), "AES"); - - System.out.println("AES KEY: " + sks); - } catch (Exception e) { - Log.e(TAG, "AES secret key spec error"); - } - return sks; - } - -//用SecretKeySpec加密数据 - private static String encryptDataWithSymmetricKey (SecretKeySpec symmKey, String data) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { - - // encryption - byte[] toBeCiphred = data.getBytes("UTF-8"); - String encryptedData = null; - - try { - Cipher c = Cipher.getInstance("AES"); - c.init(Cipher.ENCRYPT_MODE, symmKey); - byte[] encodedBytes = c.doFinal(toBeCiphred); - System.out.println("BYTE STRING (ASYMM): " + encodedBytes); - //将SecretKeySpec转换为Base64字符串格式 - encryptedData = Base64.encodeToString(encodedBytes, Base64.DEFAULT); - - } catch (Exception e) { - Log.e(TAG, "AES encryption error"); - throw new RuntimeException(e); - } - return encryptedData; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java deleted file mode 100644 index 3b505d6..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/ProgressInterceptor.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import com.android.learn.base.thirdframe.retrofit.interceptor.util.ProgressListener; -import com.android.learn.base.thirdframe.retrofit.interceptor.util.ProgressResponseBody; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; -import okhttp3.ResponseBody; - -/** - * @author guolin - * @since 2017/11/5 - */ -public class ProgressInterceptor implements Interceptor { - - public static final Map LISTENER_MAP = new HashMap<>(); - - public static void addListener(String url, ProgressListener listener) { - LISTENER_MAP.put(url, listener); - } - - public static void removeListener(String url) { - LISTENER_MAP.remove(url); - } - - @Override - public Response intercept(Chain chain) throws IOException { - Request request = chain.request(); - Response response = chain.proceed(request); - String url = request.url().toString(); - ResponseBody body = response.body(); - Response newResponse = response.newBuilder().body(new ProgressResponseBody(url, body)).build(); - return newResponse; - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java deleted file mode 100644 index 9f9e521..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/RetryIntercepter.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -public class RetryIntercepter implements Interceptor { - - public int maxRetry;//最大重试次数 - private int retryNum = 0;//假如设置为3次重试的话,则最大可能请求4次(默认1次+3次重试) - - public RetryIntercepter(int maxRetry) { - this.maxRetry = maxRetry; - } - - @Override - public Response intercept(Chain chain) throws IOException { - Request request = chain.request(); - System.out.println("retryNum=" + retryNum); - Response response = chain.proceed(request); - while (!response.isSuccessful() && retryNum < maxRetry) { - retryNum++; - System.out.println("retryNum=" + retryNum); - response = chain.proceed(request); - } - return response; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java deleted file mode 100644 index 662e848..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/SignInterceptor.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import android.content.Context; -import android.support.v4.util.ArrayMap; -import android.util.Log; -import android.util.Pair; - -import com.android.learn.base.utils.LogUtil; -import com.android.learn.base.utils.Utils; -import com.gaolei.basemodule.BuildConfig; - -import org.json.JSONException; -import org.json.JSONObject; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; - -import okhttp3.FormBody; -import okhttp3.Interceptor; -import okhttp3.MediaType; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; -import okio.Buffer; - - - -public final class SignInterceptor implements Interceptor { - - private static final String MD5KEY = "base64:FgBvWS7+m3BPRnKemuoOwXEf7kvldmM+VOmJS5Iccxs="; - private Context mContext; - - public SignInterceptor() { - } - - @Override - public Response intercept(Chain chain) throws IOException { - - Request request = chain.request(); - - //header add version - Request.Builder requestBuilder = request.newBuilder(); - requestBuilder.addHeader("version", BuildConfig.VERSION_NAME); - requestBuilder.addHeader("platform", "ANDROID"); - - if (!request.method().equals("POST")) { - return chain.proceed(request); - } - - JSONObject bodyJson = null; - List> params = new ArrayList<>(); - ArrayMap arrayMap = new ArrayMap<>(); - - FormBody body = null; - try { - body = (FormBody) request.body(); - } catch (ClassCastException c) { - } - - if (body != null) { - - int size = body.size(); - if (size > 0) { - for (int i = 0; i < size; i++) { - params.add(new Pair<>(body.name(i), body.value(i))); - } - } - } else { - RequestBody requestBody = request.body(); - - if (requestBody != null) { - Buffer buffer = new Buffer(); - requestBody.writeTo(buffer); - Charset charset = Charset.forName("UTF-8"); - MediaType contentType = requestBody.contentType(); - if (contentType != null) { - charset = contentType.charset(charset); - } - String paramsStr = buffer.readString(charset); - if (BuildConfig.DEBUG) { - Log.i("HTTP", "request = " + paramsStr); - } - - try { - bodyJson = new JSONObject(paramsStr); - } catch (JSONException e) { - LogUtil.e("JSON", "JsonObject err"); - } - - if (bodyJson != null) { - Iterator it = bodyJson.keys(); - while (it.hasNext()) { - String key = it.next(); - Object value = null; - try { - value = bodyJson.get(key); - } catch (JSONException e) { - LogUtil.e("JSON", "JsonObject get err"); - } - if (key.equals("token")) { - arrayMap.put("token", String.valueOf(value)); - arrayMap.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000)); - - for (String strKey : arrayMap.keySet()) { - params.add(new Pair<>(strKey, arrayMap.get(strKey))); - } - } else { - params.add(new Pair<>(key, String.valueOf(value))); - } - - } - } - - } - } - - params.add(new Pair<>("MD5Key", MD5KEY)); - Collections.sort(params, new Comparator>() { - @Override - public int compare(Pair lhs, Pair rhs) { - return lhs.second.compareTo(rhs.second); - } - }); - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < params.size(); i++) { - sb.append(params.get(i).second); - if (i < params.size() - 1) { - sb.append(""); - } - } - - String sign = Utils.md5Encode(sb.toString()); - params.add(new Pair<>("sign", sign)); - - for (Pair pair : params) { - if ((arrayMap.containsKey(pair.first) || pair.first.equals("sign")) && bodyJson != null) { - try { - bodyJson.put(pair.first, pair.second); - } catch (JSONException e) { - LogUtil.e("JSON", "JsonObject put err"); - } - } - } - - String postBodyString = bodyJson.toString(); - request = requestBuilder - .post(RequestBody.create(MediaType.parse("application/json;charset=UTF-8"), - postBodyString)) - .build(); - - return chain.proceed(request); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java deleted file mode 100644 index bd039f2..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/TokenInterceptor.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import com.android.learn.base.utils.LogUtil; - -import java.io.IOException; - -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -public class TokenInterceptor implements Interceptor { - - String TAG=getClass()+""; - @Override - public Response intercept(Chain chain) throws IOException { - Request request = chain.request(); - Response response = chain.proceed(request); - LogUtil.d(TAG,response.code()+""); - - if (isTokenExpired(response)) {//根据和服务端的约定判断token过期 - LogUtil.d(TAG,"静默自动刷新Token,然后重新请求数据"); - //同步请求方式,获取最新的Token - String newSession = getNewToken(); - //使用新的Token,创建新的请求 - Request newRequest = chain.request() - .newBuilder() - .header("Cookie", "JSESSIONID=" + newSession) - .build(); - //重新请求 - return chain.proceed(newRequest); - } - return response; - } - - /** - * 根据Response,判断Token是否失效 - * - * @param response - * @return - */ - private boolean isTokenExpired(Response response) { - if (response.code() == 404) { - return true; - } - return false; - } - - /** - * 同步请求方式,获取最新的Token - * - * @return - */ - private String getNewToken() throws IOException { - // 通过一个特定的接口获取新的token,此处要用到同步的retrofit请求 -// Response_Login loginInfo = CacheManager.restoreLoginInfo(BaseApplication.getContext()); -// String username = loginInfo.getUserName(); -// String password = loginInfo.getPassword(); -// -// LogUtil.print("loginInfo=" + loginInfo.toString()); -// Call call = WebHelper.getSyncInterface().synclogin(new Request_Login(username, password)); -// loginInfo = call.execute().body(); -// LogUtil.print("loginInfo=" + loginInfo.toString()); -// -// loginInfo.setPassword(password); -// CacheManager.saveLoginInfo(loginInfo); -// return loginInfo.getSession(); -// } - return ""; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java deleted file mode 100644 index 0096641..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/UrlResetInterceptor.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor; - -import java.io.IOException; - -import okhttp3.HttpUrl; -import okhttp3.Interceptor; -import okhttp3.Request; -import okhttp3.Response; - -/* -实际的开发过程中,我们在网络请求中会添加一些公共参数,对于一些可变的公共参数,在缓存数据和访问缓存数据的 -过程中需要删除,比如网络类型,有网络时其值为Wifi或4G等,无网络时可能为none, 这时访问缓存时就会因url不一致导致访问缓存失败 -*/ - -public class UrlResetInterceptor implements Interceptor { - @Override - public Response intercept(Chain chain) throws IOException { - - - Response response = chain.proceed(chain.request()); - HttpUrl newUrl = chain.request().url().newBuilder() - .removeAllQueryParameters("network") - .build(); // 缓存数据前删除可变的公共参数 - Request newRequest = chain.request().newBuilder() - .url(newUrl) - .build(); - return response.newBuilder() - .request(newRequest) - .removeHeader("Pragma") - .header("Cache-Control", "public, max-age=" + 1) - .build(); - - -// Request request = chain.request(); -// HttpUrl url = request.url(); -// String s = url.url().toString(); -// //———请求之前—– -// Response response = null; -// //如果Url中没有包含androidxx关键字,则修改请求链接为http://www.androidxx.cn -// if (s.contains("androidxx")) { -// request = request.newBuilder().url("http://www.androidxx.cn").build(); -// } -// response = chain.proceed(request); -// //———请求之后———— -// return response; - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java deleted file mode 100644 index 5f8d468..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressListener.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor.util; - -/** - * @author guolin - * @since 2017/11/5 - */ -public interface ProgressListener { - - /** - * 当下载进度发生变化时,会回调此方法。 - * @param progress - * 当前的下载进度,参数值的范围是0-100。 - */ - void onProgress(int progress); - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java deleted file mode 100644 index d3f9b5a..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/retrofit/interceptor/util/ProgressResponseBody.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.android.learn.base.thirdframe.retrofit.interceptor.util; - -import android.util.Log; - -import com.android.learn.base.thirdframe.retrofit.interceptor.ProgressInterceptor; - -import java.io.IOException; - -import okhttp3.MediaType; -import okhttp3.ResponseBody; -import okio.Buffer; -import okio.BufferedSource; -import okio.ForwardingSource; -import okio.Okio; -import okio.Source; - -/** - * @author guolin - * @since 2017/11/5 - */ -public class ProgressResponseBody extends ResponseBody { - - private static final String TAG = "ProgressResponseBody"; - - private BufferedSource bufferedSource; - - private ResponseBody responseBody; - - private ProgressListener listener; - - public ProgressResponseBody(String url, ResponseBody responseBody) { - this.responseBody = responseBody; - listener = ProgressInterceptor.LISTENER_MAP.get(url); - } - - @Override - public MediaType contentType() { - return responseBody.contentType(); - } - - @Override - public long contentLength() { - return responseBody.contentLength(); - } - - @Override - public BufferedSource source() { - if (bufferedSource == null) { - bufferedSource = Okio.buffer(new ProgressSource(responseBody.source())); - } - return bufferedSource; - } - - private class ProgressSource extends ForwardingSource { - - long totalBytesRead = 0; - - int currentProgress; - - ProgressSource(Source source) { - super(source); - } - - @Override - public long read(Buffer sink, long byteCount) throws IOException { - long bytesRead = super.read(sink, byteCount); - long fullLength = responseBody.contentLength(); - if (bytesRead == -1) { - totalBytesRead = fullLength; - } else { - totalBytesRead += bytesRead; - } - int progress = (int) (100f * totalBytesRead / fullLength); - Log.d(TAG, "download progress is " + progress); - if (listener != null && progress != currentProgress) { - listener.onProgress(progress); - } - if (listener != null && totalBytesRead == fullLength) { - listener = null; - } - currentProgress = progress; - return bytesRead; - } - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java deleted file mode 100644 index 3527b07..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/thirdframe/rxjava/BaseObserver.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.android.learn.base.thirdframe.rxjava; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; - -import com.android.learn.base.activity.BaseActivity; -import com.android.learn.base.application.CustomApplication; -import com.android.learn.base.mview.BaseView; -import com.android.learn.base.utils.NetUtils; -import com.android.learn.base.utils.Utils; -import com.android.learn.base.view.CustomProgressDialog; - -import java.io.IOException; - -import io.reactivex.observers.ResourceObserver; -import retrofit2.HttpException; - -public abstract class BaseObserver extends ResourceObserver { - - protected String errMsg = ""; - private boolean isCancelDialog = true; - private Context context; -// public static Dialog prgressDialog; - - protected BaseObserver(boolean isShowDialog) { - // context在CustomProgressDialog中用到 -// this.context = context; -// if (isShowDialog) { -// Activity activity=BaseActivity.context; -// CustomProgressDialog.show(activity); -// } - } - - protected BaseObserver(BaseView view, boolean isShowError) { - } - - - public void setCancelDialog(boolean cancelDialog) { - isCancelDialog = cancelDialog; - } - - @Override - - public void onNext(T t) { - - } - - @Override - public void onError(Throwable e) { - if(isCancelDialog) - CustomProgressDialog.cancel(); - if (!NetUtils.isConnected()) { - errMsg = "网络连接出错,请检查网络"; - - } else if (e instanceof HttpException) { - errMsg = "服务器访问异常(HttpException)"; - } else if (e instanceof IOException) { - errMsg = "服务器访问异常(IOException)"; - } - if (!"".equals(errMsg)) - Utils.showToast(errMsg, true); - - } - - @Override - public void onComplete() { - if(isCancelDialog) - CustomProgressDialog.cancel(); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java deleted file mode 100644 index e4bc9c7..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CrashHandler.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.AlarmManager; -import android.app.Dialog; -import android.app.PendingIntent; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.os.Environment; -import android.os.Looper; -import android.support.v7.app.AlertDialog; -import android.util.Log; -import android.view.Gravity; -import android.view.WindowManager; -import android.widget.Toast; - - -import com.android.learn.base.application.CustomApplication; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.Writer; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.Map; - -public class CrashHandler implements Thread.UncaughtExceptionHandler { - /** - * 系统默认的异常处理类 - */ - private Thread.UncaughtExceptionHandler mDefaultHandler; - Context mcontext; - private static CrashHandler INSTANCE = new CrashHandler(); - String errorSavePath; - //用来存储设备信息和异常信息 - private Map infos = new LinkedHashMap(); - - public static CrashHandler getInstance() { - return INSTANCE; - } - - public void init(Context context) { - mcontext = context; - mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();// 获取默认的异常处理类 - Thread.setDefaultUncaughtExceptionHandler(this);// 设置当前处理类为默认的异常处理类 - } - - @Override - public void uncaughtException(Thread thread, Throwable ex) { - saveCrashInfoIntoSd(ex); - showToast(mcontext, "程序出错了,请先用其它功能,我们会尽快修复!"); - - try { - Thread.sleep(2000); - } catch (Exception e) { - // TODO: handle exception - } - - -// if (SPUtils.contains("currentTime")) { -// String lastTimeMillis = (String) SPUtils.get("currentTime", String.valueOf("0")); -// LogUtil.d("lastTimeMillis:" + lastTimeMillis); -// LogUtil.d("System.currentTimeMillis():" + System.currentTimeMillis()); -// LogUtil.d("priod:" + (System.currentTimeMillis() - Long.valueOf(lastTimeMillis))); -// long timeInterval = System.currentTimeMillis() - Long.valueOf(lastTimeMillis); -// if (timeInterval > 60 * 1000) { -// SPUtils.put("currentTime", String.valueOf(System.currentTimeMillis())); -// } -// } else { -// SPUtils.put("currentTime", String.valueOf(System.currentTimeMillis())); -// -// } - -// android.os.Process.killProcess(android.os.Process.myPid()); -// System.exit(0); - ExitAppUtils.getInstance().exit(); -// } - } - - private void showToast(final Context context, final String msg) { - new Thread(new Runnable() { - - @Override - public void run() { - Looper.prepare(); - Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); - Looper.loop(); - } - }).start(); - } - - - // 收集设备、软件参数信息 - private void collectDeviceInfo() { - try { - PackageManager pm = CustomApplication.context.getPackageManager(); - PackageInfo pi = pm.getPackageInfo(CustomApplication.context.getPackageName(), PackageManager.GET_ACTIVITIES); - if (pi != null) { - String versionName = pi.versionName == null ? "null" : pi.versionName; - String versionCode = pi.versionCode + ""; - infos.put("systemVersion", SystemUtil.getSystemVersion()); - infos.put("deviceModel", SystemUtil.getSystemModel()); - infos.put("deviceBrand", SystemUtil.getDeviceBrand()); - infos.put("versionName", versionName); - infos.put("versionCode", versionCode); - } - } catch (PackageManager.NameNotFoundException e) { - } - - } - - // 保存错误信息到SD卡文件中 - private void saveCrashInfoIntoSd(Throwable ex) { - collectDeviceInfo(); - //创建文件夹 - errorSavePath = Environment.getExternalStorageDirectory().getPath() + "/" + mcontext.getPackageName() + "/crash"; - File dir = new File(errorSavePath); - if (!dir.exists()) dir.mkdirs(); - - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String time = formatter.format(new Date()); - StringBuffer sb = new StringBuffer(); - sb.append("\n" + time + "\n"); - for (Map.Entry entry : infos.entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); - sb.append(key + "=" + value + "\n"); - } - - sb.append(getCrashInfo(ex)); - - try { - //创建文件 - String fileName = "crash-" + time + ".txt"; - File file = new File(errorSavePath + "//" + fileName); - if (!file.exists()) file.createNewFile(); - - FileOutputStream fos = new FileOutputStream(file); - fos.write(sb.toString().getBytes()); - fos.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 得到程序崩溃的详细信息 - */ - public String getCrashInfo(Throwable ex) { - Writer result = new StringWriter(); - PrintWriter printWriter = new PrintWriter(result); - ex.setStackTrace(ex.getStackTrace()); - ex.printStackTrace(printWriter); - printWriter.close(); - return result.toString(); - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java deleted file mode 100644 index 242f86b..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/CustomCrashHandler.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Build; -import android.os.Environment; -import android.os.Looper; -import android.util.Log; -import android.widget.Toast; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.Thread.UncaughtExceptionHandler; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.TimeZone; - -public class CustomCrashHandler implements UncaughtExceptionHandler { - private static final String TAG = "Activity"; - private Context mContext; - private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().toString(); - private static CustomCrashHandler mInstance = new CustomCrashHandler(); - - - private CustomCrashHandler(){} - - public static CustomCrashHandler getInstance(){ - return mInstance; - } - - - @Override - public void uncaughtException(Thread thread, Throwable ex) { - savaInfoToSD(mContext, ex); - - showToast(mContext, "程序出错了,请先用其它功能,我们会尽快修复!"); - try { - thread.sleep(2000); - } catch (InterruptedException e) { - e.printStackTrace(); - } -// android.os.Process.killProcess(android.os.Process.myPid()); -// System.exit(0); - - ExitAppUtils.getInstance().exit(); - - } - - - public void init(Context context){ - mContext = context; - Thread.setDefaultUncaughtExceptionHandler(this); - } - - - private void showToast(final Context context, final String msg){ - new Thread(new Runnable() { - - @Override - public void run() { - Looper.prepare(); - Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); - Looper.loop(); - } - }).start(); - } - - - private HashMap obtainSimpleInfo(Context context){ - HashMap map = new HashMap(); - PackageManager mPackageManager = context.getPackageManager(); - PackageInfo mPackageInfo = null; - try { - mPackageInfo = mPackageManager.getPackageInfo(context.getPackageName(), PackageManager.GET_ACTIVITIES); - } catch (NameNotFoundException e) { - e.printStackTrace(); - } - - map.put("versionName", mPackageInfo.versionName); - map.put("versionCode", "" + mPackageInfo.versionCode); - - map.put("MODEL", "" + Build.MODEL); - map.put("SDK_INT", "" + Build.VERSION.SDK_INT); - map.put("PRODUCT", "" + Build.PRODUCT); - - return map; - } - - - private String obtainExceptionInfo(Throwable throwable) { - StringWriter mStringWriter = new StringWriter(); - PrintWriter mPrintWriter = new PrintWriter(mStringWriter); - throwable.printStackTrace(mPrintWriter); - mPrintWriter.close(); - - Log.e(TAG, mStringWriter.toString()); - return mStringWriter.toString(); - } - - - private String savaInfoToSD(Context context, Throwable ex){ - String fileName = null; - StringBuffer sb = new StringBuffer(); - - for (Map.Entry entry : obtainSimpleInfo(context).entrySet()) { - String key = entry.getKey(); - String value = entry.getValue(); - sb.append(key).append(" = ").append(value).append("\n"); - } - - sb.append(obtainExceptionInfo(ex)); - - if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ - File dir = new File(SDCARD_ROOT + File.separator + "crash" + File.separator); - if(! dir.exists()){ - dir.mkdir(); - } - - try{ - fileName = dir.toString() + File.separator + paserTime(System.currentTimeMillis()) + ".log"; - FileOutputStream fos = new FileOutputStream(fileName); - fos.write(sb.toString().getBytes()); - fos.flush(); - fos.close(); - }catch(Exception e){ - e.printStackTrace(); - } - - } - - return fileName; - - } - - - private String paserTime(long milliseconds) { - System.setProperty("user.timezone", "Asia/Shanghai"); - TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); - TimeZone.setDefault(tz); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - String times = format.format(new Date(milliseconds)); - - return times; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java deleted file mode 100644 index 5616e8a..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/DialogUtil.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.support.v7.app.AlertDialog; -import android.util.Log; -import android.view.WindowManager; -import android.widget.Toast; - -public class DialogUtil { - - - - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java deleted file mode 100644 index 7e4cc6f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ErrorLogSave.java +++ /dev/null @@ -1,191 +0,0 @@ - -package com.android.learn.base.utils; - -import android.content.Context; -import android.os.Environment; -import android.os.Handler; -import android.text.TextUtils; -import android.util.Log; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; - -public class ErrorLogSave extends Thread { - - private static final String TAG = "ErrorLogSave"; - - Context context; - - private static final String SD_PATH = Environment.getExternalStorageDirectory() - .getAbsolutePath(); - - private static final String FILE_PATH = SD_PATH + "/xuetangx_error_log/"; - - private static String packageName; - - protected final Handler mHandler; - - public ErrorLogSave(Context context) { - this.context = context; - mHandler = new Handler(); - packageName = context.getPackageName(); - } - - - public static void onError(Context context) { - new ErrorLogSave(context).start(); - } - - /** - * 获取异常日志信息 - * - * @param paramContext - * @return - */ - private static String getExceptionLog(Context paramContext) { - String localObject = ""; - try { - String str1 = paramContext.getPackageName(); - String str2 = ""; - int i1 = 0; - int i2 = 0; - ArrayList localArrayList = new ArrayList(); - localArrayList.add("logcat"); - localArrayList.add("-d"); - localArrayList.add("-v"); - localArrayList.add("raw"); - localArrayList.add("-s"); - localArrayList.add("AndroidRuntime:E"); - localArrayList.add("-p"); - localArrayList.add(str1); - Process localProcess = Runtime.getRuntime().exec( - (String[]) localArrayList.toArray(new String[localArrayList.size()])); - BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader( - localProcess.getInputStream()), 1024); - for (String str3 = localBufferedReader.readLine(); str3 != null; str3 = localBufferedReader - .readLine()) { - if (str3.indexOf("thread attach failed") < 0) { - str2 = str2 + str3 + '\n'; - } - if ((i2 == 0) && (str3.toLowerCase().indexOf("exception") >= 0)) { - i2 = 1; - } - if ((i1 != 0) || (str3.indexOf(str1) < 0)) { - continue; - } - i1 = 1; - } - if ((str2.length() > 0) && (i2 != 0) && (i1 != 0)) { - localObject = str2; - } - try { - Runtime.getRuntime().exec("logcat -c"); - } catch (Exception localException2) { - Log.e(TAG, "Failed to clear log"); - } - } catch (Exception localException1) { - Log.e(TAG, "Failed to catch error log"); - } - return localObject; - } - - /** - * 存储错误日志到sd卡
目录名称:"/sd/itotem_error_log/"
文件名称: - * packagename_tiem(YYYY_MM_DD-HH_mm_ss) - * - * @param context - * @param errorLog - */ - protected static void cacheErrorLogToSDFile(Context context, String errorLog) { - Log.e(TAG, "cache Error Log To SD File is ruuning:" + errorLog); - if (TextUtils.isEmpty(errorLog)) { - return; - } - FileOutputStream outputStream = null; - try { - long curTimeM = System.currentTimeMillis(); - if (TextUtils.isEmpty(packageName)) { - packageName = context.getPackageName(); - } - // 获取新的文件名称 - String fileName = packageName + "_" + getTime(curTimeM) + ".txt"; - Log.i(TAG, "new file is :" + fileName); - // File file = new File(FILE_PATH, fileName); - File pathFile = new File(FILE_PATH); - File file = new File(pathFile, fileName); - if (!pathFile.exists()) { - pathFile.mkdirs(); - } - if (!file.exists()) { - file.createNewFile(); - } - // 打开一个新的文件 - outputStream = new FileOutputStream(file); - outputStream.write(errorLog.getBytes()); - outputStream.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - return; - } catch (IOException e) { - e.printStackTrace(); - return; - } finally { - if (outputStream != null) { - try { - outputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - outputStream = null; - } - } - } - - private static String getTime(long curTime) { - SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); - Date date = new Date(curTime); - return df1.format(date); - } - - - @Override - public void run() { - String str = getExceptionLog(context); - mHandler.post(new SaveErrorLog2SD(str)); - super.run(); - } - - private static final Object a = new Object();// 线程锁 - - /** - * 保存错误日志到sd卡 - * - * @author pengjun - */ - private class SaveErrorLog2SD implements Runnable { - String errorLog; - - SaveErrorLog2SD(String errorLog) { - this.errorLog = errorLog; - } - - @Override - public void run() { - // TODO 执行保存错误日志到卡 -// String deviceInfo = CollectDataManager.getDebugInfosToErrorMessage(context); -// errorLog += "\n deviceInfo:" + deviceInfo; -// cacheErrorLogToSDFile(context, errorLog); - - } - - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java deleted file mode 100644 index d41c683..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ExitAppUtils.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Activity; - -import java.util.LinkedList; -import java.util.List; - -public class ExitAppUtils { - - private List mActivityList = new LinkedList(); - private static ExitAppUtils instance = new ExitAppUtils(); - - private ExitAppUtils(){}; - - public static ExitAppUtils getInstance(){ - return instance; - } - - public void addActivity(Activity activity){ - mActivityList.add(activity); - } - - public void delActivity(Activity activity){ - mActivityList.remove(activity); - } - - public void exit(){ - for(Activity activity : mActivityList){ - activity.finish(); - } - - System.exit(0); - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java deleted file mode 100644 index 28cecea..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/JsonUtil.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.android.learn.base.utils; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParseException; -import com.google.gson.JsonParser; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * JSON字符换和对象间转换的工具类 - */ -public class JsonUtil { - - private static final Gson GSON = new Gson(); - - /** - * 将json字符串转换成相应的对象 - * - * @param jsonString json字符串 - * @param classOfT 对象类型的class - * @param 对象的类型 - * @return 转换后的对象 - * @throws JsonParseException if json is not a valid representation for an object of type classOfT - */ - public static T decode(String jsonString, Class classOfT) throws RuntimeException { - return GSON.fromJson(jsonString, classOfT); - } - - /** - * 将json字符串转换成相应的对象 - * - * @param jsonString json字符串 - * @param typeOfT 对象类型的type - * @param 对象的类型 - * @return 转换后的对象 - * @throws JsonParseException if json is not a valid representation for an object of type typeOfT - */ - public static T decode(String jsonString, Type typeOfT) throws RuntimeException { - return GSON.fromJson(jsonString, typeOfT); - } - - /** - * 将已经从json转换后的对象(通常是一个Map)转换成对应Bean的对象实例 - * - * @param object 一个转json换中的过程对象,通常是一个Map,若传值为null,则返回null - * @param typeOfT 要转换的对象类型的type - * @param 要转换的对象类型 - * @return 转换后的对象 - * @throws JsonParseException if object is not a valid representation for an object of type typeOfT - */ - public static T decode(Object object, Type typeOfT) throws RuntimeException { - String jsonString = GSON.toJson(object); - return GSON.fromJson(jsonString, typeOfT); - } - - /** - * 将一个JavaBean转换成json字符串 - * - * @param object 待转换的对象 - * @return json字符串 - * @throws JsonParseException if there was a problem while parsing object. - */ - public static String encode(Object object) throws RuntimeException { - return GSON.toJson(object); - } - - - /** - * 获取JsonObject - * - * @param json - * @return - */ - public static JsonObject parseJson(String json) { - JsonParser parser = new JsonParser(); - JsonObject jsonObj = parser.parse(json).getAsJsonObject(); - return jsonObj; - } - - /** - * 根据javaBean转json字符串再将字符串转Map对象 - * - * @param object - * @return - */ - public static Map javaBeanToMap(Object object) { - String strJson = encode(object); - return toMap(parseJson(strJson)); - } - - /** - * 将JSONObjec对象转换成Map-List集合 - * - * @param json - * @return - */ - public static Map toMap(JsonObject json) { - Map map = new HashMap(); - Set> entrySet = json.entrySet(); - for (Iterator> iter = entrySet.iterator(); iter.hasNext(); ) { - Map.Entry entry = iter.next(); - String key = entry.getKey(); - Object value = entry.getValue(); - if (value instanceof JsonArray) - map.put((String) key, toList((JsonArray) value)); - else if (value instanceof JsonObject) - map.put((String) key, toMap((JsonObject) value)); - else - map.put((String) key, value); - } - return map; - } - - /** - * 将JSONArray对象转换成List集合 - * - * @param json - * @return - */ - public static List toList(JsonArray json) { - List list = new ArrayList(); - for (int i = 0; i < json.size(); i++) { - Object value = json.get(i); - if (value instanceof JsonArray) { - list.add(toList((JsonArray) value)); - } else if (value instanceof JsonObject) { - list.add(toMap((JsonObject) value)); - } else { - list.add(value); - } - } - return list; - } - - /** - * Json解析公用方法 数组 - * - * @param json 解析参数 - * @param token 解析的类型 new TypeToken(){} - * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); - * @return - */ - public static T fromJson(JsonElement json, TypeToken token) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, token.getType()); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 数组 - * - * @param json 解析参数 - * @param type 解析的类型 new TypeToken(){}.getType() - * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); - * @return - */ - public static T fromJson(JsonElement json, Type type) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, type); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 单个类 - * - * @param json 解析参数 - * @param t 解析的类。 class - * @return - */ - public static T fromJson(JsonElement json, Class t) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, t); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 数组 - * - * @param json 解析参数 - * @param token 解析的类型 new TypeToken(){} - * ArrayList temp = ParserJson.fromJson(data, new TypeToken>(){}); - * @return - */ - public static T fromJson(String json, TypeToken token) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, token.getType()); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * Json解析公用方法 单个类 - * - * @param json 解析参数 - * @param t 解析的类。 class - * @return - */ - public static T fromJson(String json, Class t) { - try { - Gson gson = new Gson(); - return gson.fromJson(json, t); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; - } - - /** - * 把数据转换成Json结构 - * - * @param mType Object的数据,支持所有类型 - * @return - */ - public static String toJson(Object mType) { - Gson mGson = new Gson(); - String mResult = mGson.toJson(mType); - return mResult; - } -} - diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java deleted file mode 100644 index 0e0bc9c..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/KeyboardUtils.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.view.View; -import android.view.inputmethod.InputMethodManager; - -public class KeyboardUtils { - - public static void showKeyboard(View view) { - InputMethodManager imm = (InputMethodManager) view.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - view.requestFocus(); - imm.showSoftInput(view, 0); - } - } - - public static void hideKeyboard(View view){ - InputMethodManager imm = (InputMethodManager) view.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - imm.hideSoftInputFromWindow(view.getWindowToken(),0); - } - } - public static void toggleSoftInput(View view){ - InputMethodManager imm = (InputMethodManager) view.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm != null) { - imm.toggleSoftInput(0,0); - } - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java deleted file mode 100644 index 3f325d5..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LanguageUtil.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.os.Build; -import android.os.LocaleList; -import android.util.DisplayMetrics; -import android.util.Log; - - -import java.util.Locale; - -public class LanguageUtil { - - private static final String TAG = "LanguageUtil"; - - - /** - * 获取选择的语言设置 - * - * @param context - * @return - */ - public static Locale getSetLanguageLocale(Context context) { - int language = (Integer) SPUtils.getParam(context, "language", 0); - LogUtil.d(TAG, "language---------------" + language); -// LogUtil.d(TAG, "getSystemLocale(context)---------------" + getSystemLocale(context)); - switch (language) { - case 0: - return getSystemLocale(context); - case 1: - return Locale.CHINA; - case 2: - return Locale.ENGLISH; - default: - return Locale.CHINA; - } - } - - public static void saveSelectLanguage(Context context, int select) { - SPUtils.setParam(context, "language", select); - - setApplicationLanguage(context); - } - - public static Context setLocal(Context context) { - LogUtil.d(TAG, "getSetLanguageLocale---------------" + getSetLanguageLocale(context)); - return updateResources(context, getSetLanguageLocale(context)); - } - - private static Context updateResources(Context context, Locale locale) { - Locale.setDefault(locale); - - Resources res = context.getResources(); - Configuration config = new Configuration(res.getConfiguration()); - if (Build.VERSION.SDK_INT >= 17) { - config.setLocale(locale); - context = context.createConfigurationContext(config); - } else { - config.locale = locale; - res.updateConfiguration(config, res.getDisplayMetrics()); - } - return context; - } - - /** - * 我们都会在代码中调用context.getResource().getString()这句代码看起来没什么问题,但是你这个context要是用的是applicationContext那么问题就来了。 - * 你会发现当你切换语言后用这样方式设置的string没有改变,所以我们需要改动我们的代码。 - 解决方法就是,在切换语言后把application的updateConfiguration也要更新了 - */ - public static void setApplicationLanguage(Context context) { - Resources resources = context.getApplicationContext().getResources(); - DisplayMetrics dm = resources.getDisplayMetrics(); - Configuration config = resources.getConfiguration(); - Locale locale = getSetLanguageLocale(context); - config.locale = locale; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - LocaleList localeList = new LocaleList(locale); - LocaleList.setDefault(localeList); - config.setLocales(localeList); - context.getApplicationContext().createConfigurationContext(config); - Locale.setDefault(locale); - } - resources.updateConfiguration(config, dm); - } - - public static Locale getSystemLocale(Context context) { - Locale locale; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - locale = LocaleList.getDefault().get(0); - } else { - locale = Locale.getDefault(); - } - return locale; - } - -// public static void saveSystemCurrentLanguage(Context context) { -// Locale locale; -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { -// locale = LocaleList.getDefault().get(0); -// } else { -// locale = Locale.getDefault(); -// } -// Log.d(TAG, locale.getLanguage()); -// SPUtil.getInstance(context).setSystemCurrentLocal(locale); -// } - -// public static void onConfigurationChanged(Context context){ -//// saveSystemCurrentLanguage(context); -// setLocal(context); -// setApplicationLanguage(context); -// } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java deleted file mode 100644 index 9b8477f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/LogUtil.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (C) 2006-2014 Tuniu All rights reserved - */ -package com.android.learn.base.utils; - -import android.util.Log; - -import com.gaolei.basemodule.BuildConfig; - - -public class LogUtil { - - private static boolean isDebug = BuildConfig.DEBUG; - private static final String TAG = "zmy"; - - public static void init(boolean isPrintable) { - isDebug = isPrintable; - } - - public static void d(String msg) { - if (!isDebug) { - return; - } - Log.e(TAG, msg); - } - - public static void v(String tag, String msg) { - if (!isDebug) { - return; - } - Log.v(tag, msg); - } - - - public static void d(String tag, String msg) { - if (!isDebug) { - return; - } - Log.d(tag, msg); - } - - - public static void i(String tag, String msg) { - if (!isDebug) { - return; - } - Log.i(tag, msg); - } - - - public static void w(String tag, String msg) { - if (!isDebug) { - return; - } - Log.w(tag, msg); - } - - - public static void e(String tag, String msg) { - if (!isDebug) { - return; - } - Log.e(tag, msg); - } - - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java deleted file mode 100644 index b4a0234..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/NetUtils.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.android.learn.base.utils; - - -import android.app.Activity; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; - -import com.android.learn.base.application.CustomApplication; - -/** - * 跟网络相关的工具类 - * - * - * - */ -public class NetUtils -{ - private NetUtils() - { - /* cannot be instantiated */ - throw new UnsupportedOperationException("cannot be instantiated"); - } - - - public static boolean isConnected() - { - - ConnectivityManager connectivity = (ConnectivityManager) CustomApplication.context - .getSystemService(Context.CONNECTIVITY_SERVICE); - - if (null != connectivity) - { - - NetworkInfo info = connectivity.getActiveNetworkInfo(); - if (null != info && info.isConnected()) - { - if (info.getState() == NetworkInfo.State.CONNECTED) - { - return true; - } - } - } - return false; - } - - /** - * 判断是否是wifi连接 - */ - public static boolean isWifi() - { - ConnectivityManager cm = (ConnectivityManager) CustomApplication.context - .getSystemService(Context.CONNECTIVITY_SERVICE); - - if (cm == null) - return false; - return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; - - } - - /** - * 打开网络设置界面 - */ - public static void openSetting(Activity activity) - { - Intent intent = new Intent("/"); - ComponentName cm = new ComponentName("com.android.settings", - "com.android.settings.WirelessSettings"); - intent.setComponent(cm); - intent.setAction("android.intent.action.VIEW"); - activity.startActivityForResult(intent, 0); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java deleted file mode 100644 index 05169ab..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/PermissionUtil.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.android.learn.base.utils; - - -import android.Manifest; -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.Build; -import android.support.v4.app.ActivityCompat; - -public class -PermissionUtil { - - private static String denyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能"; - private static String foreverDenyRequestContent = "%s权限 为必要权限,开通才可以正常使用相应功能。\n \n 请点击 \"设置\"-\"权限\"-打开所需权限。"; - public static final int PERMISSION_CODE = 10001; - - public static void gotoDetailSettingIntent(Activity context) { - Intent intent = new Intent(); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - if (Build.VERSION.SDK_INT >= 9) { - intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); - intent.setData(Uri.fromParts("package", context.getPackageName(), null)); - } else if (Build.VERSION.SDK_INT <= 8) { - intent.setAction(Intent.ACTION_VIEW); - intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); - intent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName()); - } - context.startActivity(intent); - -// Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); -// Uri uri = Uri.fromParts("package", context.getPackageName(), null); -// intent.setData(uri); - } - - public static void requestDenyDialog(final Activity activity, final String... permissions) { - - String content = getContent(denyRequestContent, permissions); - - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - - builder.setTitle("权限申请") - .setMessage(content) - .setPositiveButton("申请", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - ActivityCompat.requestPermissions(activity, permissions, PERMISSION_CODE); - dialog.dismiss(); - } - }) - .setNegativeButton("取消", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - if (Utils.getTopActivity(activity).equals("MainActivity")) { - activity.finish(); - } - dialog.dismiss(); - } - }); - builder.show(); - } - - public static void requestForeverDenyDialog(final Activity activity, final String... permissions) { - - String content = getContent(foreverDenyRequestContent, permissions); - - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - - builder.setTitle("权限设置") - .setMessage(content) - .setPositiveButton("设置", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - gotoDetailSettingIntent(activity); - dialog.dismiss(); - } - }) - .setNegativeButton("取消", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - - dialog.dismiss(); - } - }); - builder.show(); - } - - public static String getContent(String ifForeverDeny, String... permissions) { - String content = ""; - - if (permissions.length == 1) { - if (permissions[0].equals(Manifest.permission.CAMERA)) - content = String.format(ifForeverDeny, "相机"); - if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) - content = String.format(ifForeverDeny, "存储"); - } - if (permissions.length > 1) { - StringBuilder stringBuilder = new StringBuilder(); - int length = permissions.length; - for (int i = 0; i < length; i++) { - if (permissions[i].equals(Manifest.permission.CAMERA)) - stringBuilder = stringBuilder.append("相机"); - if (permissions[i].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) - stringBuilder = stringBuilder.append("存储"); - if (permissions[i].equals(Manifest.permission.ACCESS_FINE_LOCATION)) - stringBuilder = stringBuilder.append("位置"); - if (permissions[i].equals(Manifest.permission.WRITE_CONTACTS)) - stringBuilder = stringBuilder.append("联系人"); - if (i < length - 1) - stringBuilder = stringBuilder.append("、"); - } - content = String.format(ifForeverDeny, stringBuilder.toString()); - } - return content; - - } - - /** - * 权限请求结果回调接口 - */ - public interface RequestPermissionCallBack { - /** - * 同意授权 - */ - public void granted(); - - /** - * 取消授权 - */ - public void denied(); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java deleted file mode 100644 index 9dac18c..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ResponseStatusUtil.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.android.learn.base.utils; - -import com.android.learn.base.mmodel.BaseData; -import com.android.learn.base.mmodel.BaseResponse; - -public class ResponseStatusUtil { - - - public static void handleResponseStatus(BaseResponse baseData) { - if (baseData == null) return; - Utils.showToast(baseData.errorMsg, true); - } - public static void handleResponseStatus(BaseData baseData) { - if (baseData == null) return; - Utils.showToast(baseData.errorMsg, true); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java deleted file mode 100644 index 98c6e61..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SPUtils.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.android.learn.base.utils; - -import android.content.Context; -import android.content.SharedPreferences; - - -public class SPUtils { - - /** - * 保存在手机里面的文件名 - */ - private static final String FILE_NAME = "SP_FILE"; - - - /** - * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 - * @param context - * @param key - * @param object - */ - public static void setParam(Context context , String key, Object object){ - - String type = object.getClass().getSimpleName(); - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sp.edit(); - - if("String".equals(type)){ - editor.putString(key, (String)object); - } - else if("Integer".equals(type)){ - editor.putInt(key, (Integer)object); - } - else if("Boolean".equals(type)){ - editor.putBoolean(key, (Boolean)object); - } - else if("Float".equals(type)){ - editor.putFloat(key, (Float)object); - } - else if("Long".equals(type)){ - editor.putLong(key, (Long)object); - } - - editor.commit(); - } - - - /** - * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 - * @param context - * @param key - * @param defaultObject - * @return - */ - public static Object getParam(Context context , String key, Object defaultObject){ - String type = defaultObject.getClass().getSimpleName(); - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); - - if("String".equals(type)){ - return sp.getString(key, (String)defaultObject); - } - - else if("Integer".equals(type)){ - return sp.getInt(key, (Integer)defaultObject); - } - - else if("Boolean".equals(type)){ - return sp.getBoolean(key, (Boolean)defaultObject); - } - - else if("Float".equals(type)){ - return sp.getFloat(key, (Float)defaultObject); - } - - else if("Long".equals(type)){ - return sp.getLong(key, (Long)defaultObject); - } - - return null; - } - - /** - * 清除所有数据 - * @param context - */ - public static void clearAll(Context context) { - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, - Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sp.edit(); - editor.clear().commit(); - } - - /** - * 清除指定数据 - * @param context - */ - public static void clear(Context context,String key) { - SharedPreferences sp = context.getSharedPreferences(FILE_NAME, - Context.MODE_PRIVATE); - SharedPreferences.Editor editor = sp.edit(); - editor.remove(key); - editor.commit(); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java deleted file mode 100644 index ac533ab..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/ScreenUtils.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Activity; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Rect; -import android.util.DisplayMetrics; -import android.view.View; -import android.view.WindowManager; - -/** - * 获得屏幕相关的辅助类 - * - * - * - */ -public class ScreenUtils -{ - private ScreenUtils() - { - /* cannot be instantiated */ - throw new UnsupportedOperationException("cannot be instantiated"); - } - - /** - * 获得屏幕高度 - * - * @param context - * @return - */ - public static int getScreenWidth(Context context) - { - WindowManager wm = (WindowManager) context - .getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics outMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(outMetrics); - return outMetrics.widthPixels; - } - - /** - * 获得屏幕宽度 - * - * @param context - * @return - */ - public static int getScreenHeight(Context context) - { - WindowManager wm = (WindowManager) context - .getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics outMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(outMetrics); - return outMetrics.heightPixels; - } - - /** - * 获得状态栏的高度 - * - * @param context - * @return - */ - public static int getStatusHeight(Context context) - { - - int statusHeight = -1; - try - { - Class clazz = Class.forName("com.android.internal.R$dimen"); - Object object = clazz.newInstance(); - int height = Integer.parseInt(clazz.getField("status_bar_height") - .get(object).toString()); - statusHeight = context.getResources().getDimensionPixelSize(height); - } catch (Exception e) - { - e.printStackTrace(); - } - return statusHeight; - } - - /** - * 获取当前屏幕截图,包含状态栏 - * - * @param activity - * @return - */ - public static Bitmap snapShotWithStatusBar(Activity activity) - { - View view = activity.getWindow().getDecorView(); - view.setDrawingCacheEnabled(true); - view.buildDrawingCache(); - Bitmap bmp = view.getDrawingCache(); - int width = getScreenWidth(activity); - int height = getScreenHeight(activity); - Bitmap bp = null; - bp = Bitmap.createBitmap(bmp, 0, 0, width, height); - view.destroyDrawingCache(); - return bp; - - } - - /** - * 获取当前屏幕截图,不包含状态栏 - * - * @param activity - * @return - */ - public static Bitmap snapShotWithoutStatusBar(Activity activity) - { - View view = activity.getWindow().getDecorView(); - view.setDrawingCacheEnabled(true); - view.buildDrawingCache(); - Bitmap bmp = view.getDrawingCache(); - Rect frame = new Rect(); - activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); - int statusBarHeight = frame.top; - - int width = getScreenWidth(activity); - int height = getScreenHeight(activity); - Bitmap bp = null; - bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - - statusBarHeight); - view.destroyDrawingCache(); - return bp; - - } - /** - * dp转换成px - * - * @param context Context - * @param dp dp - * @return px值 - */ - public static int dp2px(Context context, float dp) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dp * scale + 0.5f); - } - public static int px2sp(Context context, float pxValue) { - float fontScale = context.getResources().getDisplayMetrics().scaledDensity; - return (int) (pxValue / fontScale + 0.5f); - } - //转换dip为px - public static int dp2px(Context context, int dip) { - float scale = context.getResources().getDisplayMetrics().density; - return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1)); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java deleted file mode 100644 index e2c1d3d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/SystemUtil.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.Activity; -import android.content.Context; -import android.telephony.TelephonyManager; - -import java.util.Locale; - - -public class SystemUtil { - - /** - * 获取当前手机系统语言。 - * - * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN” - */ - public static String getSystemLanguage() { - return Locale.getDefault().getLanguage(); - } - - /** - * 获取当前系统上的语言列表(Locale列表) - * - * @return 语言列表 - */ - public static Locale[] getSystemLanguageList() { - return Locale.getAvailableLocales(); - } - - /** - * 获取当前手机系统版本号 - * - * @return 系统版本号 - */ - public static String getSystemVersion() { - return android.os.Build.VERSION.RELEASE; - } - - /** - * 获取手机型号 - * - * @return 手机型号 - */ - public static String getSystemModel() { - return android.os.Build.MODEL; - } - - /** - * 获取手机厂商 - * - * @return 手机厂商 - */ - public static String getDeviceBrand() { - return android.os.Build.BRAND; - } - - /** - * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限) - * - * @return 手机IMEI - */ - public static String getIMEI(Context ctx) { - TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE); - if (tm != null) { - return tm.getDeviceId(); - } - return null; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java deleted file mode 100644 index 787925d..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/Utils.java +++ /dev/null @@ -1,244 +0,0 @@ -package com.android.learn.base.utils; - -import android.app.ActivityManager; -import android.content.ClipboardManager; -import android.content.ComponentName; -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.os.Looper; -import android.text.TextUtils; -import android.view.Gravity; -import android.widget.Toast; - - -import com.android.learn.base.application.CustomApplication; - -import java.security.MessageDigest; -import java.text.NumberFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.regex.Pattern; - -/** - * Created by gaolei on 2018/6/15. - */ - -public class Utils { - - public static Pattern intPattern = Pattern.compile("^[-+]?[0-9]"); - public static Pattern decimalPattern = Pattern.compile("^[-+]?[0-9]+(\\.[0-9]+)?$"); - - /** - * md5 加密 - * - * @param str 要加密的字符串 - * @return - */ - public static String md5Encode(String str) { - StringBuffer buf = new StringBuffer(); - try { - MessageDigest md5 = MessageDigest.getInstance("MD5"); - md5.update(str.getBytes()); - byte[] bytes = md5.digest(); - for (int i = 0; i < bytes.length; i++) { - String s = Integer.toHexString(bytes[i] & 0xff); - if (s.length() == 1) { - buf.append("0"); - } - buf.append(s); - } - - } catch (Exception ex) { - } - return buf.toString(); - } - - public static String getTopActivity(Context context) { - ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - ActivityManager.RunningTaskInfo taskInfo = manager.getRunningTasks(1).get(0); - ComponentName componentInfo = taskInfo.topActivity; - String shortClassName = componentInfo.getShortClassName(); //类名 -// String className = info.topActivity.getClassName(); //完整类名 -// String packageName = info.topActivity.getPackageName(); - int index = shortClassName.lastIndexOf("."); - shortClassName = shortClassName.substring(index + 1); - return shortClassName; - } - - //判断手机号是否正确 - public static boolean isMobileNO(String mobile) { - - String telRegex = "[1][23456789]\\d{9}";//"[1]"代表第1位为数字1,"[35678]"代表第二位可以为23456789中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 - - if (TextUtils.isEmpty(mobile)) { - Utils.showToast("请输入正确的手机号", true); - return false; - } else if (!mobile.matches(telRegex)) { - Utils.showToast("请输入正确的手机号", true); - return false; - } - return true; - - } - - /** - * 判断是否是银行卡号 - * - * @param cardId - * @return - */ - public static boolean checkBankCard(String cardId) { - char bit = getBankCardCheckCode(cardId - .substring(0, cardId.length() - 1)); - if (bit == 'N') { - return false; - } - return cardId.charAt(cardId.length() - 1) == bit; - } - - private static char getBankCardCheckCode(String nonCheckCodeCardId) { - if (nonCheckCodeCardId == null - || nonCheckCodeCardId.trim().length() == 0 - || !nonCheckCodeCardId.matches("//d+")) { -// 如果传的不是数据返回N - return 'N'; - } - char[] chs = nonCheckCodeCardId.trim().toCharArray(); - int luhmSum = 0; - for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) { - int k = chs[i] - '0'; - if (j % 2 == 0) { - k *= 2; - k = k / 10 + k % 10; - } - luhmSum += k; - } - return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0'); - } - - public static void showToast(String content, boolean isShort) { - try { - Toast toast = Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG); - toast.setGravity(Gravity.CENTER, 0, 0); - toast.show(); - } catch (Exception e) { - //解决在子线程中调用Toast的异常情况处理 - Looper.prepare(); - Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); - Looper.loop(); - } - - } - public static void showToast(String content, boolean isShort,int gravity) { - try { - Toast toast = Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG); - toast.setGravity(gravity, 0, 0); - toast.show(); - } catch (Exception e) { - //解决在子线程中调用Toast的异常情况处理 - Looper.prepare(); - Toast.makeText(CustomApplication.context, content, isShort ? Toast.LENGTH_SHORT : Toast.LENGTH_LONG).show(); - Looper.loop(); - } - - } - - public static String ms2Date(long _ms) { - Date date = new Date(_ms); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()); - return format.format(date); - } - - public static String keepDecimal2(float value) { - NumberFormat ddf1 = NumberFormat.getNumberInstance(); - ddf1.setMaximumFractionDigits(2); - return ddf1.format(value); - } - public static void copyTxt(Context context,String content) { - ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - // 将文本内容放到系统剪贴板里。 - cm.setText(content); - Toast.makeText(context, "复制成功,可以分享给朋友们了", Toast.LENGTH_LONG).show(); - } - - public static int stringToInt(String value) { - return Integer.parseInt(value.trim()); - } - - public static double stringToDouble(String value) { - return Double.parseDouble(value.trim()); - } - - public static float stringToFloat(String value) { - return Float.parseFloat(value.trim()); - } - - public static float stringToDigit(String value) { - - - if (intPattern.matcher(value).matches()) { -//数字 - return Integer.parseInt(value.trim()); - } else if (decimalPattern.matcher(value).matches()) { -//小数 - return Float.parseFloat(value.trim()); - } else { -//非数字 - Utils.showToast("数据格式转化出错", true); - } - return Float.parseFloat(value.trim()); - } - public static int getVersionCode(Context context) { - try { - PackageManager packageManager = context.getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo( - context.getPackageName(), 0); - return packageInfo.versionCode; - } catch (Exception e) { - e.printStackTrace(); - } - return 0; - } - public static String getVersionName(Context context) { - try { - PackageManager packageManager = context.getPackageManager(); - PackageInfo packageInfo = packageManager.getPackageInfo( - context.getPackageName(), 0); - return packageInfo.versionName; - } catch (Exception e) { - e.printStackTrace(); - } - return ""; - } - - //假设传入的日期格式是yyyy-MM-dd HH:mm:ss, 也可以传入yyyy-MM-dd,如2018-1-1或者2018-01-01格式 - - public static boolean isValidDate(String strDate) { - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - try { - // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2018-02-29会被接受,并转换成2018-03-01 - - format.setLenient(false); - Date date = format.parse(strDate); - - //判断传入的yyyy年-MM月-dd日 字符串是否为数字 - String[] sArray = strDate.split("-"); - for (String s : sArray) { - boolean isNum = s.matches("[0-9]+"); - //+表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7") - if (!isNum) { - return false; - } - } - } catch (Exception e) { - // e.printStackTrace(); - // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 - return false; - } - - return true; - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java deleted file mode 100644 index 5eb40f3..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/utils/account/UserUtil.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.android.learn.base.utils.account; - -import com.android.learn.base.event.LoginEvent; -import com.android.learn.base.mmodel.RegisterLoginData; - -import org.greenrobot.eventbus.EventBus; - -public class UserUtil { - - public static boolean logined = false; - public static RegisterLoginData userInfo; - - public static boolean isLogined() { - return logined; - } - - public static void setLogined(boolean logined) { - UserUtil.logined = logined; - } - - public static RegisterLoginData getUserInfo() { - return userInfo; - } - - public static void setUserInfo(RegisterLoginData userInfo) { - UserUtil.userInfo = userInfo; - if (userInfo != null) { - setLogined(true); - } else setLogined(false); - LoginEvent accountEvent = new LoginEvent(); - EventBus.getDefault().post(accountEvent); - - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java deleted file mode 100644 index 79c3777..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CircleImageView.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.android.learn.base.view; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapShader; -import android.graphics.Canvas; -import android.graphics.Matrix; -import android.graphics.Paint; -import android.graphics.Shader; -import android.graphics.drawable.BitmapDrawable; -import android.support.annotation.Nullable; -import android.support.v7.widget.AppCompatImageView; -import android.util.AttributeSet; - -/** - * 功能描述:一个简洁而高效的圆形ImageView - * - * @author (作者) edward(冯丰枫) - * @link http://www.jianshu.com/u/f7176d6d53d2 - * 创建时间: 2018/4/17 0017 - */ -public class CircleImageView extends AppCompatImageView { - private float width; - private float height; - private float radius; - private Paint paint; - private Matrix matrix; - - public CircleImageView(Context context) { - this(context, null); - } - - public CircleImageView(Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public CircleImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - paint = new Paint(); - paint.setAntiAlias(true); //设置抗锯齿 - matrix = new Matrix(); //初始化缩放矩阵 - } - - /** - * 测量控件的宽高,并获取其内切圆的半径 - */ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - width = getMeasuredWidth(); - height = getMeasuredHeight(); - radius = Math.min(width, height) / 2; - } - - @Override - protected void onDraw(Canvas canvas) { - paint.setShader(initBitmapShader());//将着色器设置给画笔 - canvas.drawCircle(width / 2, height / 2, radius, paint);//使用画笔在画布上画圆 - } - - /** - * 获取ImageView中资源图片的Bitmap,利用Bitmap初始化图片着色器,通过缩放矩阵将原资源图片缩放到铺满整个绘制区域,避免边界填充 - */ - private BitmapShader initBitmapShader() { - if(getDrawable()==null)return null; - Bitmap bitmap = ((BitmapDrawable) getDrawable()).getBitmap(); - BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); - float scale = Math.max(width / bitmap.getWidth(), height / bitmap.getHeight()); - matrix.setScale(scale, scale);//将图片宽高等比例缩放,避免拉伸 - bitmapShader.setLocalMatrix(matrix); - return bitmapShader; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java deleted file mode 100644 index 369c1da..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/CustomProgressDialog.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.android.learn.base.view; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; - -import com.gaolei.basemodule.R; - - -public class CustomProgressDialog { - public static Dialog loadingDialog; - - public static Dialog createLoadingDialog(Context context) { - if (context == null) return null; - LayoutInflater inflater = LayoutInflater.from(context); - View v = inflater.inflate(R.layout.dialog_loading, null);// 得到加载view - LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局 - // main.xml中的ImageView - ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img); - TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字 - // 加载动画 - Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation( - context, R.anim.anim_dialog_load); - // 使用ImageView显示动画 - spaceshipImage.startAnimation(hyperspaceJumpAnimation); - - loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog - - loadingDialog.setCancelable(true);// 不可以用“返回键”取消 - loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局 - return loadingDialog; - - } - - public static void show(Activity activity) { - if (loadingDialog != null) return; - if (loadingDialog != null && loadingDialog.isShowing()) return; - loadingDialog = CustomProgressDialog.createLoadingDialog(activity); - loadingDialog.show();//显示 - } - - public static void cancel() { - if (loadingDialog != null) { - loadingDialog.cancel(); - loadingDialog = null; - } - } -} - diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java deleted file mode 100644 index 6267254..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/HeaderView.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.android.learn.base.view; - -public class HeaderView { -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java deleted file mode 100644 index 4681b8c..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/Html5Webview.java +++ /dev/null @@ -1,219 +0,0 @@ -package com.android.learn.base.view; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.net.Uri; -import android.os.Build; -import android.os.Message; -import android.support.annotation.RequiresApi; -import android.text.TextUtils; -import android.util.AttributeSet; -import android.util.Log; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.ConsoleMessage; -import android.webkit.JsPromptResult; -import android.webkit.JsResult; -import android.webkit.ValueCallback; -import android.webkit.WebChromeClient; -import android.webkit.WebResourceError; -import android.webkit.WebResourceRequest; -import android.webkit.WebResourceResponse; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.webkit.WebViewClient; - -public class Html5Webview extends WebView { - private ProgressView progressView;//进度条 - private Context context; - - public Html5Webview(Context context) { - this(context, null); - } - - public Html5Webview(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public Html5Webview(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - this.context = context; - init(); - } - - private void init() { - //初始化进度条 - progressView = new ProgressView(context); - progressView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, dp2px(context, 3))); -// progressView.setColor(Color.BLUE); -// progressView.setProgress(10); - //把进度条加到Webview中 - addView(progressView); - //初始化设置 - initWebSettings(); - setWebChromeClient(new MyWebCromeClient()); - setWebViewClient(new MyWebviewClient()); - } - - private void initWebSettings() { - WebSettings settings = getSettings(); - //默认是false 设置true允许和js交互 - settings.setJavaScriptEnabled(true); - // WebSettings.LOAD_DEFAULT 如果本地缓存可用且没有过期则使用本地缓存,否加载网络数据 默认值 - // WebSettings.LOAD_CACHE_ELSE_NETWORK 优先加载本地缓存数据,无论缓存是否过期 - // WebSettings.LOAD_NO_CACHE 只加载网络数据,不加载本地缓存 - // WebSettings.LOAD_CACHE_ONLY 只加载缓存数据,不加载网络数据 - //Tips:有网络可以使用LOAD_DEFAULT 没有网时用LOAD_CACHE_ELSE_NETWORK - settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); - //开启 DOM storage API 功能 较大存储空间,使用简单 - settings.setDomStorageEnabled(true); - //开启 Application Caches 功能 方便构建离线APP 不推荐使用 - settings.setAppCacheEnabled(true); - final String cachePath = context.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath(); - settings.setAppCachePath(cachePath); - settings.setAppCacheMaxSize(5 * 1024 * 1024); - //设置数据库缓存路径 存储管理复杂数据 方便对数据进行增加、删除、修改、查询 不推荐使用 - settings.setDatabaseEnabled(true); - final String dbPath = context.getApplicationContext().getDir("db", Context.MODE_PRIVATE).getPath(); - settings.setDatabasePath(dbPath); - } - - - private class MyWebCromeClient extends WebChromeClient { - @Override - public void onProgressChanged(WebView view, int newProgress) { - if (newProgress == 100) { - //加载完毕进度条消失 - progressView.setVisibility(View.GONE); - } else { - //更新进度 - progressView.setProgress(newProgress); - } - super.onProgressChanged(view, newProgress); - } - - @Override - public void onReceivedTitle(WebView view, String title) { - Log.e("TTT", "title is " + title); - super.onReceivedTitle(view, title); - } - - @Override - public boolean onJsAlert(WebView view, String url, String message, JsResult result) { - return super.onJsAlert(view, url, message, result); - } - - @Override - public boolean onConsoleMessage(ConsoleMessage consoleMessage) { - return super.onConsoleMessage(consoleMessage); - } - - @Override - public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { - return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg); - } - - @Override - public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) { - return super.onJsBeforeUnload(view, url, message, result); - } - - @Override - public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { - return super.onJsConfirm(view, url, message, result); - } - - @Override - public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { - return super.onJsPrompt(view, url, message, defaultValue, result); - } - - @Override - public void onCloseWindow(WebView window) { - super.onCloseWindow(window); - } - - @Override - public boolean onShowFileChooser(WebView webView, ValueCallback filePathCallback, FileChooserParams fileChooserParams) { - return super.onShowFileChooser(webView, filePathCallback, fileChooserParams); - } - } - - private class MyWebviewClient extends WebViewClient { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { - Log.e("TTT", "shouldOverrideUrlLoading 0"); - Uri uri = Uri.parse(url); - String scheme = uri.getScheme(); - if (TextUtils.isEmpty(scheme)) return true; - if (scheme.equals("nativeapi")) { - //如定义nativeapi://showImg是用来查看大图,这里添加查看大图逻辑 - return true; - } else if (scheme.equals("http") || scheme.equals("https")) { - //处理http协议 - if (Uri.parse(url).getHost().equals("www.example.com")) { - // 内部网址,不拦截,用自己的webview加载 - return false; - } else { - //跳转外部浏览器 - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - context.startActivity(intent); - return true; - } - } - return super.shouldOverrideUrlLoading(view, url); - } - - @Override - public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { - Log.e("TTT", "shouldOverrideUrlLoading 1"); - return super.shouldOverrideUrlLoading(view, request); - } - - - @Override - public WebResourceResponse shouldInterceptRequest(WebView view, String url) { - Log.e("TTT", "shouldInterceptRequest 0 url is " + url); - //回调发生在子线程中,不能直接进行UI操作 - return super.shouldInterceptRequest(view, url); - } - - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - @Override - public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { - Log.e("TTT", "shouldInterceptRequest 1 request url is " + request.getUrl().toString()); - return super.shouldInterceptRequest(view, request); - } - - @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { - Log.e("TTT", "onPageStarted"); - super.onPageStarted(view, url, favicon); - } - - @Override - public void onPageFinished(WebView view, String url) { - Log.e("TTT", "onPageFinished"); - super.onPageFinished(view, url); - } - - @Override - public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { - Log.e("TTT", "onPageFinished"); - super.onReceivedError(view, request, error); - } - } - - /** - * dp转换成px - * - * @param context Context - * @param dp dp - * @return px值 - */ - private int dp2px(Context context, float dp) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dp * scale + 0.5f); - } -} \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java deleted file mode 100644 index 402cb65..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/ProgressView.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.android.learn.base.view; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.support.annotation.Nullable; -import android.util.AttributeSet; -import android.view.View; - -public class ProgressView extends View { - private Paint mPaint; - private int mWidth, mHeight; - private int progress;//加载进度 - - public ProgressView(Context context) { - this(context, null); - } - - public ProgressView(Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public ProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - private void init() { - //初始化画笔 - mPaint = new Paint(); - mPaint.setDither(true); - mPaint.setAntiAlias(true); - mPaint.setStrokeWidth(5); - mPaint.setColor(Color.parseColor("#88b221")); - } - - @Override - protected void onSizeChanged(int w, int h, int ow, int oh) { - mWidth = w; - mHeight = h; - super.onSizeChanged(w, h, ow, oh); - } - - - @Override - protected void onDraw(Canvas canvas) { - canvas.drawRect(0, 0, mWidth * progress / 100, mHeight, mPaint); - super.onDraw(canvas); - } - - /** - * 设置新进度 重新绘制 - * - * @param newProgress 新进度 - */ - public void setProgress(int newProgress) { - this.progress = newProgress; - invalidate(); - } - - /** - * 设置进度条颜色 - * - * @param color 色值 - */ - public void setColor(int color) { - mPaint.setColor(color); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java deleted file mode 100644 index 3a226ee..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/TitleView.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.android.learn.base.view; - -import android.app.Activity; -import android.content.Context; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; - -import com.gaolei.basemodule.R; - -public class TitleView extends FrameLayout { - - private ImageView iv_back; - - private TextView title; - - public TitleView(Context context, AttributeSet attrs) { - super(context, attrs); - LayoutInflater.from(context).inflate(R.layout.title_view, this); - iv_back =findViewById(R.id.iv_back); - title =findViewById(R.id.title); - iv_back.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - ((Activity) getContext()).finish(); - } - }); - } - - public void setTitleText(String text) { - title.setText(text); - } - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java deleted file mode 100644 index 83459dc..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTabLayout.java +++ /dev/null @@ -1,215 +0,0 @@ -package com.android.learn.base.view.colorfultab; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.TabLayout; -import android.support.v4.view.ViewPager; -import android.util.AttributeSet; -import android.util.Log; -import android.view.ViewGroup; -import android.widget.LinearLayout; - -import com.gaolei.basemodule.R; - -import java.lang.ref.WeakReference; - -import static android.support.v4.view.ViewPager.SCROLL_STATE_DRAGGING; -import static android.support.v4.view.ViewPager.SCROLL_STATE_IDLE; -import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING; - -/** - * Created by rookie on 2018/4/24. - */ - -public class ColorClipTabLayout extends TabLayout { - - private int tabTextSize;//每个tab字体大小 - private int tabSelectedTextColor;//每个tab选中字体颜色 - private int tabTextColor;//每个tab未选中颜色 - private static final int INVALID_TAB_POS = -1; - - //最后的选中位置 - private int lastSelectedTabPosition = INVALID_TAB_POS; - - private ViewPager viewPager;//所绑定的viewpager - - private ColorClipTabLayoutOnPageChangeListener colorClipTabLayoutOnPageChangeListener; - - - public ColorClipTabLayout(Context context) { - this(context, null); - } - - public ColorClipTabLayout(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public ColorClipTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - if (attrs != null) { - // Text colors/sizes come from the text appearance first - final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.ColorClipTabLayout); - //Tab字体大小 - tabTextSize = ta.getDimensionPixelSize(R.styleable.ColorClipTabLayout_text_size, 72); - //Tab文字颜色 - tabTextColor = ta.getColor(R.styleable.ColorClipTabLayout_text_unselected_color, Color.parseColor("#000000")); - tabSelectedTextColor = ta.getColor(R.styleable.ColorClipTabLayout_text_selected_color, Color.parseColor("#cc0000")); - ta.recycle(); - } - } - - @Override - public void addTab(@NonNull Tab tab, int position, boolean setSelected) { - //通过addTab的方式将colorClipView作为customView传入tab - ColorClipView colorClipView = new ColorClipView(getContext()); - colorClipView.setProgress(setSelected ? 1 : 0); - colorClipView.setText(tab.getText() + ""); - colorClipView.setTextSize(tabTextSize); - colorClipView.setTag(position); - colorClipView.setTextSelectedColor(tabSelectedTextColor); - colorClipView.setTextUnselectColor(tabTextColor); - LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); - colorClipView.setLayoutParams(layoutParams); - tab.setCustomView(colorClipView); - super.addTab(tab, position, setSelected); - int selectedTabPosition = getSelectedTabPosition(); - if ((selectedTabPosition == INVALID_TAB_POS && position == 0) || (selectedTabPosition == position)) { - setSelectedView(position); - } - - setTabWidth(position, colorClipView); - } - - @Override - public void setupWithViewPager(@Nullable ViewPager viewPager, boolean autoRefresh) { - super.setupWithViewPager(viewPager, autoRefresh); - try { - if (viewPager != null) - this.viewPager = viewPager; - //通过反射找到mPageChangeListener -// Field field = TabLayout.class.getDeclaredField("colorClipTabLayoutOnPageChangeListener"); -// field.setAccessible(true); -// TabLayoutOnPageChangeListener listener = (TabLayoutOnPageChangeListener) field.get(this); -// if (listener != null) { -// //删除自带监听 -// viewPager.removeOnPageChangeListener(listener); - colorClipTabLayoutOnPageChangeListener = new ColorClipTabLayoutOnPageChangeListener(this); - colorClipTabLayoutOnPageChangeListener.reset(); - viewPager.addOnPageChangeListener(colorClipTabLayoutOnPageChangeListener); -// } - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void removeAllTabs() { - lastSelectedTabPosition = getSelectedTabPosition(); - super.removeAllTabs(); - } - - @Override - public int getSelectedTabPosition() { - final int selectedTabPositionAtParent = super.getSelectedTabPosition(); - return selectedTabPositionAtParent == INVALID_TAB_POS ? - lastSelectedTabPosition : selectedTabPositionAtParent; - } - - public void setLastSelectedTabPosition(int lastSelectedTabPosition) { - lastSelectedTabPosition = lastSelectedTabPosition; - } - - public void setCurrentItem(int position) { - if (viewPager != null) - viewPager.setCurrentItem(position); - } - - private void setTabWidth(int position, ColorClipView colorClipView) { - ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0); - ViewGroup tabView = (ViewGroup) slidingTabStrip.getChildAt(position); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT); - - int w = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - int h = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - //手动测量一下 - colorClipView.measure(w, h); - params.width = colorClipView.getMeasuredWidth() + tabView.getPaddingLeft() + tabView.getPaddingRight(); - //设置tabView的宽度 - tabView.setLayoutParams(params); - } - - private void setSelectedView(int position) { - final int tabCount = getTabCount(); - if (position < tabCount) { - for (int i = 0; i < tabCount; i++) { - getColorClipView(i).setProgress(i == position ? 1 : 0); - } - } - } - - public void tabScrolled(int position, float positionOffset) { - - if (positionOffset == 0.0F) { - return; - } - ColorClipView currentTrackView = getColorClipView(position); - ColorClipView nextTrackView = getColorClipView(position + 1); - currentTrackView.setDirection(1); - currentTrackView.setProgress(1.0F - positionOffset); - nextTrackView.setDirection(0); - nextTrackView.setProgress(positionOffset); - } - - private ColorClipView getColorClipView(int position) { - return (ColorClipView) getTabAt(position).getCustomView(); - } - - public static class ColorClipTabLayoutOnPageChangeListener extends TabLayoutOnPageChangeListener { - - private final WeakReference mTabLayoutRef; - private int mPreviousScrollState; - private int mScrollState; - - public ColorClipTabLayoutOnPageChangeListener(TabLayout tabLayout) { - super(tabLayout); - mTabLayoutRef = new WeakReference<>((ColorClipTabLayout) tabLayout); - } - - @Override - public void onPageScrollStateChanged(final int state) { - mPreviousScrollState = mScrollState; - mScrollState = state; - } - - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - super.onPageScrolled(position, positionOffset, positionOffsetPixels); - ColorClipTabLayout tabLayout = mTabLayoutRef.get(); - if (tabLayout == null) return; - final boolean updateText = mScrollState != SCROLL_STATE_SETTLING || - mPreviousScrollState == SCROLL_STATE_DRAGGING; - if (updateText) { - Log.e("tag1", "positionOffset" + positionOffset); - tabLayout.tabScrolled(position, positionOffset); - } - } - - @Override - public void onPageSelected(int position) { - super.onPageSelected(position); - ColorClipTabLayout tabLayout = mTabLayoutRef.get(); - mPreviousScrollState = SCROLL_STATE_SETTLING; - tabLayout.setSelectedView(position); - } - - void reset() { - mPreviousScrollState = mScrollState = SCROLL_STATE_IDLE; - } - - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java deleted file mode 100644 index bc9d9ce..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipTestView.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.android.learn.base.view.colorfultab; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.support.annotation.Nullable; -import android.util.AttributeSet; -import android.util.Log; -import android.view.MotionEvent; -import android.view.View; - -public class ColorClipTestView extends View { - float per = 0; - float x = 0, y = 0; - - public ColorClipTestView(Context context) { - super(context); - } - - public ColorClipTestView(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - public ColorClipTestView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - - Paint paint = new Paint(); - paint.setAntiAlias(true); - paint.setStrokeWidth(80); - paint.setStyle(Paint.Style.FILL); - - paint.setTextSize(68); - canvas.save(); - canvas.drawText("我是火车王", 200, 200, paint); - canvas.restore(); - paint.setColor(Color.RED); - canvas.clipRect(200, 0, 320 * per, 400); - Log.e("per", "per:" + per); - canvas.drawText("我是火车王", 200, 200, paint); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - Log.e("log", "ACTION_DOWN"); - x = event.getRawX(); - y = event.getRawY(); - return true; - case MotionEvent.ACTION_MOVE: - Log.e("log", "ACTION_MOVE"); - float currentX = event.getRawX(); - float currentY = event.getRawY(); - if (currentY > y) { - per = ((currentY - y) / y) * 10; - } - invalidate(); - return true; - } - return super.onTouchEvent(event); - } - - private void move(Canvas canvas, Paint paint, float per) { - canvas.save(); - float right = 300 * per; - - canvas.restore(); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java deleted file mode 100644 index a1c4ddd..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/view/colorfultab/ColorClipView.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.android.learn.base.view.colorfultab; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Rect; -import android.util.AttributeSet; -import android.util.Log; -import android.util.TypedValue; -import android.view.View; - -import com.gaolei.basemodule.R; - -/** - * Created by rookie on 2018/4/24. - */ - -public class ColorClipView extends View { - - private Paint paint;//画笔 - private String text = "我是不哦车网";//绘制的文本 - private int textSize = sp2px(18);//文本字体大小 - - private int textWidth;//文本的宽度 - private int textHeight;//文本的高度 - - private int textUnselectColor = R.color.colorPrimary;//文本未选中字体颜色 - private int textSelectedColor = R.color.colorAccent;//文本选中颜色 - - private static final int DIRECTION_LEFT = 0; - private static final int DIRECTION_RIGHT = 1; - private static final int DIRECTION_TOP = 2; - private static final int DIRECTION_BOTTOM = 3; - - private int mDirection = DIRECTION_LEFT; - - private Rect textRect = new Rect();//文本显示区域 - - private int startX;//X轴开始绘制的坐标 - - private int startY;//y轴开始绘制的坐标 - - private int baseLineY;//基线的位置 - - private float progress; - - - public ColorClipView(Context context) { - this(context, null); - } - - public ColorClipView(Context context, AttributeSet attrs) { - super(context, attrs); - - //初始化各个属性包括画笔 - - paint = new Paint(Paint.ANTI_ALIAS_FLAG); - TypedArray ta = context.obtainStyledAttributes(attrs, - R.styleable.ColorClipView); - text = ta.getString(R.styleable.ColorClipView_text); - textSize = ta.getDimensionPixelSize(R.styleable.ColorClipView_text_size, textSize); -// textUnselectColor = ta.getColor(R.styleable.ColorClipView_text_unselected_color, textUnselectColor); -// textSelectedColor = ta.getColor(R.styleable.ColorClipView_text_selected_color, textSelectedColor); - mDirection = ta.getInt(R.styleable.ColorClipView_direction, mDirection); - progress = ta.getFloat(R.styleable.ColorClipView_progress, 0); - ta.recycle();//用完就得收! - paint.setTextSize(textSize); - } - - private int sp2px(float dpVal) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, - dpVal, getResources().getDisplayMetrics()); - } - - public void setProgress(float progress) { - this.progress = progress; - invalidate(); - } - - public void setTextSize(int mTextSize) { - this.textHeight = mTextSize; - paint.setTextSize(mTextSize); - requestLayout(); - invalidate(); - } - - public void setText(String text) { - this.text = text; - requestLayout(); - invalidate(); - } - - public void setDirection(int direction) { - this.mDirection = direction; - invalidate(); - } - - public void setTextUnselectColor(int unselectColor) { - this.textUnselectColor = unselectColor; - invalidate(); - } - - public void setTextSelectedColor(int selectedColor) { - this.textSelectedColor = selectedColor; - invalidate(); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - measureText();//测量文本的长宽 - - int width = measureWidth(widthMeasureSpec);//通过模式的不同来测量出实际的宽度 - int height = measureHeight(heightMeasureSpec);//通过模式的不同来测量出实际的高度 - setMeasuredDimension(width, height); - Log.e("tag", "七点" + (getMeasuredWidth() - getPaddingRight() - getPaddingLeft())); - startX = (getMeasuredWidth() - getPaddingRight() - getPaddingLeft()) / 2 - textWidth / 2; - startY = (textHeight - getPaddingBottom() - getPaddingTop()); - } - - private int measureHeight(int heightMeasureSpec) { - int mode = MeasureSpec.getMode(heightMeasureSpec); - int size = MeasureSpec.getSize(heightMeasureSpec); - int realSize = 0; - switch (mode) { - case MeasureSpec.EXACTLY: - realSize = size; - break; - case MeasureSpec.AT_MOST: - case MeasureSpec.UNSPECIFIED: - realSize = textHeight; - realSize += getPaddingTop() + getPaddingBottom(); - break; - } - realSize = mode == MeasureSpec.AT_MOST ? Math.min(realSize, size) : realSize; - return realSize; - } - - private int measureWidth(int widthMeasureSpec) { - int mode = MeasureSpec.getMode(widthMeasureSpec);//通过widthMeasureSpec拿到Mode - int size = MeasureSpec.getSize(widthMeasureSpec);//同理 - int realSize = 0;//最后返回的值 - switch (mode) { - case MeasureSpec.EXACTLY://精确模式下直接用给出的宽度 - realSize = size; - break; - case MeasureSpec.AT_MOST://最大模式 - case MeasureSpec.UNSPECIFIED://未指定模式 - //这两种情况下,用测量出的宽度加上左右padding - realSize = textWidth; - realSize = realSize + getPaddingLeft() + getPaddingRight(); - break; - } - //如果mode为最大模式,不应该大于父类传入的值,所以取最小 - realSize = mode == MeasureSpec.AT_MOST ? Math.min(realSize, size) : realSize; - return realSize; - } - - private void measureText() { - textWidth = (int) paint.measureText(text);//测量文本宽度 - Log.d("tag", "measureText=" + paint.measureText(text)); - - - //直接通过获得文本显示范围,再获得高度 - //参数里,text 是要测量的文字 - //start 和 end 分别是文字的起始和结束位置,textRect 是存储文字显示范围的对象,方法在测算完成之后会把结果写进 textRect。 - paint.getTextBounds(text, 0, text.length(), textRect); - textHeight = textRect.height(); - - //通过文本的descent线与top线的距离来测量文本高度,这是其中一种测量方法 - Paint.FontMetrics fm = paint.getFontMetrics(); - textHeight = (int) Math.ceil(fm.descent - fm.top); - - baseLineY = (int) (textHeight / 2 - (fm.bottom - fm.top) / 2 - fm.top); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - //OK~开始绘制咯~ - //首先先判断方向是左还是右呢? 是上还是下呢? 真期待.... - Log.e("tag", "OnDraw"); - if (mDirection == DIRECTION_LEFT) { - //绘制朝左的选中文字 - drawHorizontalText(canvas, textSelectedColor, startX, - (int) (startX + progress * textWidth)); - //绘制朝左的未选中文字 - drawHorizontalText(canvas, textUnselectColor, (int) (startX + progress - * textWidth), startX + textWidth); - } else if (mDirection == DIRECTION_RIGHT) { - //绘制朝右的选中文字 - drawHorizontalText(canvas, textSelectedColor, - (int) (startX + (1 - progress) * textWidth), startX - + textWidth); - //绘制朝右的未选中文字 - drawHorizontalText(canvas, textUnselectColor, startX, - (int) (startX + (1 - progress) * textWidth)); - } else if (mDirection == DIRECTION_TOP) { - //绘制朝上的选中文字 - drawVerticalText(canvas, textSelectedColor, startY, - (int) (startY + progress * textHeight)); - //绘制朝上的未选中文字 - drawVerticalText(canvas, textUnselectColor, (int) (startY + progress - * textHeight), startY + textHeight); - } else { - //绘制朝下的选中文字 - drawVerticalText(canvas, textSelectedColor, - (int) (startY + (1 - progress) * textHeight), - startY + textHeight); - //绘制朝下的未选中文字 - drawVerticalText(canvas, textUnselectColor, startY, - (int) (startY + (1 - progress) * textHeight)); - } - - } - - private void drawHorizontalText(Canvas canvas, int color, int startX, int endX) { - paint.setColor(color); - canvas.save(); - Log.e("tag", "getMeasuredHeight" + getMeasuredHeight()); - canvas.clipRect(startX, 0, endX, getMeasuredHeight()); - canvas.drawText(text, this.startX, baseLineY, paint); - canvas.restore(); - } - - private void drawVerticalText(Canvas canvas, int color, int startY, int endY) { - paint.setColor(color); - canvas.save(); - canvas.clipRect(0, startY, getMeasuredWidth(), endY);// left, top, - canvas.drawText(text, this.startX, - this.startY, paint); - canvas.restore(); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java deleted file mode 100644 index 083aa45..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomTitleView.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.android.learn.base.xskin; - - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Rect; -import android.support.annotation.ColorInt; -import android.util.AttributeSet; -import android.util.TypedValue; -import android.view.View; - -import com.gaolei.basemodule.R; - -/** - * Created by Windy on 2018/1/10. - */ - -public class CustomTitleView extends View { - /** - * 文本 - */ - private String mTitleText; - /** - * 文本的颜色 - */ - private int mTitleTextColor; - /** - * 文本的大小 - */ - private int mTitleTextSize; - - /** - * 绘制时控制文本绘制的范围 - */ - private Rect mBound; - private Paint mPaint; - private Rect mBounds = new Rect(); - - public CustomTitleView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public CustomTitleView(Context context) { - this(context, null); - } - - /** - * 获得我自定义的样式属性 - * - * @param context - * @param attrs - * @param defStyle - */ - public CustomTitleView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - /** - * 获得我们所定义的自定义样式属性 - */ - TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CustomTitleView, defStyle, 0); - int n = a.getIndexCount(); - for (int i = 0; i < n; i++) { - int attr = a.getIndex(i); - - if (attr == R.styleable.CustomTitleView_titleText) { - mTitleText = a.getString(attr); - } - if (attr == R.styleable.CustomTitleView_titleTextColor) { - // 默认颜色设置为黑色 - mTitleTextColor = a.getColor(attr, Color.BLACK); - } - if (attr == R.styleable.CustomTitleView_titleTextSize) { - // 默认设置为16sp,TypeValue也可以把sp转化为px - mTitleTextSize = a.getDimensionPixelSize(attr, (int) TypedValue.applyDimension( - TypedValue.COMPLEX_UNIT_SP, 16, getResources().getDisplayMetrics())); - - } - - } - a.recycle(); - - /** - * 获得绘制文本的宽和高 - */ - mPaint = new Paint(); - mPaint.setTextSize(mTitleTextSize); - // mPaint.setColor(mTitleTextColor); - mBound = new Rect(); - mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBound); - - } - - public void setTextColor(@ColorInt int color) { - mTitleTextColor = color; - invalidate(); - } - - @Override - protected void onDraw(Canvas canvas) { - mPaint.setColor(Color.YELLOW); - canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mPaint); - - mPaint.setColor(mTitleTextColor); - canvas.drawText(mTitleText, getWidth() / 2 - mBound.width() / 2, getHeight() / 2 + mBound.height() / 2, mPaint); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int widthMode = MeasureSpec.getMode(widthMeasureSpec); - int widthSize = MeasureSpec.getSize(widthMeasureSpec); - int heightMode = MeasureSpec.getMode(heightMeasureSpec); - int heightSize = MeasureSpec.getSize(heightMeasureSpec); - int width; - int height; - if (widthMode == MeasureSpec.EXACTLY) { - width = widthSize; - } else { - mPaint.setTextSize(mTitleTextSize); - mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBounds); - float textWidth = mBounds.width(); - int desired = (int) (getPaddingLeft() + textWidth + getPaddingRight()); - width = desired; - } - - if (heightMode == MeasureSpec.EXACTLY) { - height = heightSize; - } else { - mPaint.setTextSize(mTitleTextSize); - mPaint.getTextBounds(mTitleText, 0, mTitleText.length(), mBounds); - float textHeight = mBounds.height(); - int desired = (int) (getPaddingTop() + textHeight + getPaddingBottom()); - height = desired; - } - setMeasuredDimension(width, height); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java deleted file mode 100644 index 1f1c84f..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/CustomViewTextColorResDeployer.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.android.learn.base.xskin; - -import android.view.View; - -import com.wind.me.xskinloader.entity.SkinAttr; -import com.wind.me.xskinloader.entity.SkinConfig; -import com.wind.me.xskinloader.skinInterface.ISkinResDeployer; -import com.wind.me.xskinloader.skinInterface.ISkinResourceManager; - -/** - * Created by Windy on 2018/1/10. - */ - -public class CustomViewTextColorResDeployer implements ISkinResDeployer { - - @Override - public void deploy(View view, SkinAttr skinAttr, ISkinResourceManager resource) { - if (!(view instanceof CustomTitleView)) { - return; - } - CustomTitleView titleView = (CustomTitleView) view; - if (SkinConfig.RES_TYPE_NAME_COLOR.equals(skinAttr.attrValueTypeName)) { - titleView.setTextColor(resource.getColor(skinAttr.attrValueRefId)); - } - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java deleted file mode 100644 index f4c37d3..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ExtraAttrRegister.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.android.learn.base.xskin; - -import com.wind.me.xskinloader.SkinResDeployerFactory; -import com.wind.me.xskinloader.StyleParserFactory; - - -/** - * 扩展换肤属性和style中的换肤属性 - * Created by Windy on 2018/2/9. - */ - -public class ExtraAttrRegister { - - public static final String CUSTIOM_VIEW_TEXT_COLOR = "titleTextColor"; - - static { - //增加自定义控件的自定义属性的换肤支持 - SkinResDeployerFactory.registerDeployer(CUSTIOM_VIEW_TEXT_COLOR, new CustomViewTextColorResDeployer()); - - //增加xml里的style中指定的View background属性换肤 - StyleParserFactory.addStyleParser(new ViewBackgroundStyleParser()); - } - - //仅仅为了使类的静态方法被加载而已 - public static void init() {} - -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java deleted file mode 100644 index 0287486..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/learn/base/xskin/ViewBackgroundStyleParser.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.android.learn.base.xskin; - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.view.View; - -import com.wind.me.xskinloader.SkinResDeployerFactory; -import com.wind.me.xskinloader.entity.SkinAttr; -import com.wind.me.xskinloader.entity.SkinConfig; -import com.wind.me.xskinloader.parser.SkinAttributeParser; -import com.wind.me.xskinloader.skinInterface.ISkinStyleParser; -import com.wind.me.xskinloader.util.ReflectUtils; - -import java.util.Map; - -/** - * 解析Xml中的style属性,使支持style中定义的View的background支持换肤 - * Created by Windy on 2018/1/23. - */ -public class ViewBackgroundStyleParser implements ISkinStyleParser { - - private static int[] sViewStyleList; - private static int sViewBackgroundStyleIndex; - - @Override - public void parseXmlStyle(View view, AttributeSet attrs, Map viewAttrs, String[] specifiedAttrList) { - Context context = view.getContext(); - int[] viewStyleable = getTextViewStyleableList(); - int viewStyleableBackground = getTextViewTextColorStyleableIndex(); - - TypedArray a = context.obtainStyledAttributes(attrs, viewStyleable, 0, 0); - if (a != null) { - int n = a.getIndexCount(); - for (int j = 0; j < n; j++) { - int attr = a.getIndex(j); - if (attr == viewStyleableBackground && - SkinConfig.isCurrentAttrSpecified(SkinResDeployerFactory.BACKGROUND, specifiedAttrList)) { - int drawableResId = a.getResourceId(attr, -1); - SkinAttr skinAttr = SkinAttributeParser.parseSkinAttr(context, SkinResDeployerFactory.BACKGROUND, drawableResId); - if (skinAttr != null) { - viewAttrs.put(skinAttr.attrName, skinAttr); - } - } - } - a.recycle(); - } - } - - private static int[] getTextViewStyleableList() { - if (sViewStyleList == null || sViewStyleList.length == 0) { - sViewStyleList = (int[]) ReflectUtils.getField("com.android.internal.R$styleable", "View"); - } - return sViewStyleList; - } - - private static int getTextViewTextColorStyleableIndex() { - if (sViewBackgroundStyleIndex == 0) { - Object o = ReflectUtils.getField("com.android.internal.R$styleable", "View_background"); - if (o != null) { - sViewBackgroundStyleIndex = (int) o; - } - } - return sViewBackgroundStyleIndex; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java deleted file mode 100644 index 9c16442..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackChineseWordVo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.android.speechdemo.bean; - -import java.io.Serializable; - -/** - * Created by LiuXing on 2016/10/27. - */ -public class TalkBackChineseWordVo implements Serializable { - /** - * word,单字 - */ - private String w; - /** - * score,分数 - */ - private int sc; - - public String getW() { - return w; - } - - public void setW(String w) { - this.w = w; - } - - public int getSc() { - return sc; - } - - public void setSc(int sc) { - this.sc = sc; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java deleted file mode 100644 index dfad4ee..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackVo.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.android.speechdemo.bean; - -import java.io.Serializable; -import java.util.List; - -/** - * Created by LiuXing on 2016/10/27. - */ -public class TalkBackVo implements Serializable { - /** - * sentence,第几句 - */ - private int sn; - /** - * last sentence,是否最后一句 - */ - private boolean ls; - /** - * begin,开始 - */ - private int bg; - /** - * end,结束 - */ - private int ed; - /** - * words,词 - */ - private List ws; - - public int getSn() { - return sn; - } - - public void setSn(int sn) { - this.sn = sn; - } - - public boolean isLs() { - return ls; - } - - public void setLs(boolean ls) { - this.ls = ls; - } - - public int getBg() { - return bg; - } - - public void setBg(int bg) { - this.bg = bg; - } - - public int getEd() { - return ed; - } - - public void setEd(int ed) { - this.ed = ed; - } - - public List getWs() { - return ws; - } - - public void setWs(List ws) { - this.ws = ws; - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java deleted file mode 100644 index 31f47ff..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/bean/TalkBackWordsVo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.android.speechdemo.bean; - -import java.io.Serializable; -import java.util.List; - -/** - * Created by LiuXing on 2016/10/27. - */ -public class TalkBackWordsVo implements Serializable { - /** - * begin,开始 - */ - private int bg; - /** - * chinese word,中文分词 - */ - private List cw; - - public int getBg() { - return bg; - } - - public void setBg(int bg) { - this.bg = bg; - } - - public List getCw() { - return cw; - } - - public void setCw(List cw) { - this.cw = cw; - } -} - diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java deleted file mode 100644 index 95b6ae3..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/JsonParser.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.android.speechdemo.xf; - -import org.json.JSONArray; -import org.json.JSONObject; -import org.json.JSONTokener; - -/** - * Json结果解析类 - */ -public class JsonParser { - - public static String parseIatResult(String json) { - StringBuffer ret = new StringBuffer(); - try { - JSONTokener tokener = new JSONTokener(json); - JSONObject joResult = new JSONObject(tokener); - - JSONArray words = joResult.getJSONArray("ws"); - for (int i = 0; i < words.length(); i++) { - // 转写结果词,默认使用第一个结果 - JSONArray items = words.getJSONObject(i).getJSONArray("cw"); - JSONObject obj = items.getJSONObject(0); - ret.append(obj.getString("w")); -// 如果需要多候选结果,解析数组其他字段 -// for(int j = 0; j < items.length(); j++) -// { -// JSONObject obj = items.getJSONObject(j); -// ret.append(obj.getString("w")); -// } - } - } catch (Exception e) { - e.printStackTrace(); - } - return ret.toString(); - } - - public static String parseGrammarResult(String json) { - StringBuffer ret = new StringBuffer(); - try { - JSONTokener tokener = new JSONTokener(json); - JSONObject joResult = new JSONObject(tokener); - - JSONArray words = joResult.getJSONArray("ws"); - for (int i = 0; i < words.length(); i++) { - JSONArray items = words.getJSONObject(i).getJSONArray("cw"); - for(int j = 0; j < items.length(); j++) - { - JSONObject obj = items.getJSONObject(j); - if(obj.getString("w").contains("nomatch")) - { - ret.append("没有匹配结果."); - return ret.toString(); - } - ret.append("【结果】" + obj.getString("w")); - ret.append("【置信度】" + obj.getInt("sc")); - ret.append("\n"); - } - } - } catch (Exception e) { - e.printStackTrace(); - ret.append("没有匹配结果."); - } - return ret.toString(); - } - - public static String parseLocalGrammarResult(String json) { - StringBuffer ret = new StringBuffer(); - try { - JSONTokener tokener = new JSONTokener(json); - JSONObject joResult = new JSONObject(tokener); - - JSONArray words = joResult.getJSONArray("ws"); - for (int i = 0; i < words.length(); i++) { - JSONArray items = words.getJSONObject(i).getJSONArray("cw"); - for(int j = 0; j < items.length(); j++) - { - JSONObject obj = items.getJSONObject(j); - if(obj.getString("w").contains("nomatch")) - { - ret.append("没有匹配结果."); - return ret.toString(); - } - ret.append("【结果】" + obj.getString("w")); - ret.append("\n"); - } - } - ret.append("【置信度】" + joResult.optInt("sc")); - - } catch (Exception e) { - e.printStackTrace(); - ret.append("没有匹配结果."); - } - return ret.toString(); - } - - public static String parseTransResult(String json, String key) { - StringBuffer ret = new StringBuffer(); - try { - JSONTokener tokener = new JSONTokener(json); - JSONObject joResult = new JSONObject(tokener); - String errorCode = joResult.optString("ret"); - if(!errorCode.equals("0")) { - return joResult.optString("errmsg"); - } - JSONObject transResult = joResult.optJSONObject("trans_result"); - ret.append(transResult.optString(key)); - /*JSONArray words = joResult.getJSONArray("results"); - for (int i = 0; i < words.length(); i++) { - JSONObject obj = words.getJSONObject(i); - ret.append(obj.getString(key)); - }*/ - } catch (Exception e) { - e.printStackTrace(); - } - return ret.toString(); - } -} diff --git a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java b/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java deleted file mode 100644 index 9f90f29..0000000 --- a/AndroidLearnProject/basemodule/src/main/code_backup/android/speechdemo/xf/SettingTextWatcher.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.android.speechdemo.xf; - -import android.content.Context; -import android.preference.EditTextPreference; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.widget.Toast; - -import java.util.regex.Pattern; - -/** - * 输入框输入范围控制 - */ -public class SettingTextWatcher implements TextWatcher { - private int editStart ; - private int editCount ; - private EditTextPreference mEditTextPreference; - int minValue;//最小值 - int maxValue;//最大值 - private Context mContext; - - public SettingTextWatcher(Context context, EditTextPreference e, int min, int max) { - mContext = context; - mEditTextPreference = e; - minValue = min; - maxValue = max; - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { -// Log.e("demo", "onTextChanged start:"+start+" count:"+count+" before:"+before); - editStart = start; - editCount = count; - } - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { -// Log.e("demo", "beforeTextChanged start:"+start+" count:"+count+" after:"+after); - } - - @Override - public void afterTextChanged(Editable s) { - if (TextUtils.isEmpty(s)) { - return; - } - String content = s.toString(); -// Log.e("demo", "content:"+content); - if (isNumeric(content)) { - int num = Integer.parseInt(content); - if (num > maxValue || num < minValue) { - s.delete(editStart, editStart+editCount); - mEditTextPreference.getEditText().setText(s); - Toast.makeText(mContext, "超出有效值范围", Toast.LENGTH_SHORT).show(); - } - }else { - s.delete(editStart, editStart+editCount); - mEditTextPreference.getEditText().setText(s); - Toast.makeText(mContext, "只能输入数字哦", Toast.LENGTH_SHORT).show(); - } - } - - /** - * 正则表达式-判断是否为数字 - */ - public static boolean isNumeric(String str){ - Pattern pattern = Pattern.compile("[0-9]*"); - return pattern.matcher(str).matches(); - } - -}; From 10d63c269dd04375a2f32d6be4c80a8a78cfd377 Mon Sep 17 00:00:00 2001 From: GaoLei Date: Sun, 28 Apr 2019 09:54:52 +0800 Subject: [PATCH 21/38] =?UTF-8?q?=E6=8A=8Ahttp=E6=8D=A2=E6=88=90https?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=B8=8D=E8=83=BD=E7=99=BB=E5=BD=95=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.idea/caches/build_file_checksums.ser | Bin 645 -> 645 bytes .../.idea/caches/gradle_models.ser | Bin 0 -> 391178 bytes ...semodule_libs_Msc_jar_unspecified_jar.xml} | 2 +- ...le_libs_Sunflower_jar_unspecified_jar.xml} | 2 +- ...e_libs_activation_jar_unspecified_jar.xml} | 2 +- ..._libs_additionnal_jar_unspecified_jar.xml} | 2 +- ...emodule_libs_mail_jar_unspecified_jar.xml} | 2 +- ...__android_arch_core_runtime_1_1_1_aar.xml} | 6 +- ...oid_arch_lifecycle_livedata_1_1_1_aar.xml} | 6 +- ...rch_lifecycle_livedata_core_1_1_1_aar.xml} | 6 +- ...roid_arch_lifecycle_runtime_1_0_0_aar.xml} | 6 +- ...roid_arch_lifecycle_runtime_1_1_1_aar.xml} | 6 +- ...id_arch_lifecycle_viewmodel_1_1_1_aar.xml} | 6 +- ...ereza_customactivityoncrash_2_2_0_aar.xml} | 9 +- ...olapple_bga_swipebacklayout_1_2_0_aar.xml} | 6 +- ...adle__cn_lankton_flowlayout_1_0_1_aar.xml} | 6 +- ...t_animated_vector_drawable_26_1_0_aar.xml} | 6 +- ...t_animated_vector_drawable_28_0_0_aar.xml} | 6 +- ...droid_support_appcompat_v7_26_1_0_aar.xml} | 6 +- ...ndroid_support_appcompat_v7_28_0_0_aar.xml | 13 + ...upport_asynclayoutinflater_28_0_0_aar.xml} | 6 +- ...ndroid_support_cardview_v7_28_0_0_aar.xml} | 6 +- ...onstraint_constraint_layout_1_1_0_aar.xml} | 6 +- ...droid_support_coordinatorlayout_28_0_0.xml | 10 - ...d_support_coordinatorlayout_28_0_0_aar.xml | 13 + ...roid_support_cursoradapter_28_0_0_aar.xml} | 6 +- ...android_support_customview_28_0_0_aar.xml} | 6 +- ...dle__com_android_support_design_28_0_0.xml | 10 - ..._com_android_support_design_28_0_0_aar.xml | 13 + ...om_android_support_documentfile_28_0_0.xml | 10 - ...droid_support_documentfile_28_0_0_aar.xml} | 6 +- ...ndroid_support_drawerlayout_28_0_0_aar.xml | 13 + ...om_android_support_interpolator_28_0_0.xml | 10 - ...droid_support_interpolator_28_0_0_aar.xml} | 6 +- ...com_android_support_loader_28_0_0_aar.xml} | 6 +- ...port_localbroadcastmanager_28_0_0_aar.xml} | 6 +- ...adle__com_android_support_print_28_0_0.xml | 10 - ...__com_android_support_print_28_0_0_aar.xml | 13 + ...android_support_recyclerview_v7_28_0_0.xml | 10 - ...oid_support_recyclerview_v7_28_0_0_aar.xml | 13 + ...droid_support_slidingpanelayout_28_0_0.xml | 10 - ...d_support_slidingpanelayout_28_0_0_aar.xml | 10 + ...oid_support_support_compat_26_1_0_aar.xml} | 6 +- ..._android_support_support_compat_28_0_0.xml | 10 - ...roid_support_support_compat_28_0_0_aar.xml | 13 + ...id_support_support_core_ui_26_1_0_aar.xml} | 6 +- ...android_support_support_core_ui_28_0_0.xml | 10 - ...id_support_support_core_ui_28_0_0_aar.xml} | 6 +- ...support_support_core_utils_26_1_0_aar.xml} | 6 +- ...roid_support_support_core_utils_28_0_0.xml | 10 - ..._support_support_core_utils_28_0_0_aar.xml | 10 + ...d_support_support_fragment_26_1_0_aar.xml} | 6 +- ...ndroid_support_support_fragment_28_0_0.xml | 10 - ...id_support_support_fragment_28_0_0_aar.xml | 13 + ...pport_support_media_compat_26_1_0_aar.xml} | 6 +- ...android_support_support_v4_26_1_0_aar.xml} | 6 +- ...rt_support_vector_drawable_26_1_0_aar.xml} | 6 +- ...rt_support_vector_drawable_28_0_0_aar.xml} | 6 +- ...roid_support_swiperefreshlayout_28_0_0.xml | 10 - ..._support_swiperefreshlayout_28_0_0_aar.xml | 13 + ..._android_support_transition_28_0_0_aar.xml | 13 + ...upport_versionedparcelable_28_0_0_aar.xml} | 6 +- ..._android_support_viewpager_28_0_0_aar.xml} | 6 +- ...eRecyclerViewAdapterHelper_2_9_30_aar.xml} | 9 +- ...b_bumptech_glide_gifdecoder_4_6_1_aar.xml} | 9 +- ...github_bumptech_glide_glide_4_6_1_aar.xml} | 6 +- ...ight_infinitecycleviewpager_1_0_2_aar.xml} | 6 +- ...ontiel_PersistentCookieJar_v1_0_1_aar.xml} | 6 +- ..._github_yyued_SVGAPlayer_Android_2_3_0.xml | 10 - ...hub_yyued_SVGAPlayer_Android_2_3_0_aar.xml | 12 + ...aeger_statusbarutil_library_1_4_0_aar.xml} | 6 +- ...com_jakewharton_butterknife_8_8_1_aar.xml} | 6 +- ...trefresh_SmartRefreshHeader_1_0_5_aar.xml} | 9 +- ...trefresh_SmartRefreshLayout_1_0_5_aar.xml} | 6 +- ...e__com_youth_banner_banner_1_4_10_aar.xml} | 6 +- ...reactivex_rxjava2_rxandroid_2_0_1_aar.xml} | 6 +- AndroidLearnProject/.idea/misc.xml | 16 +- AndroidLearnProject/.idea/workspace.xml | 2381 ++++++++--------- AndroidLearnProject/basemodule/build.gradle | 1 - .../thirdframe/retrofit/RetrofitProvider.kt | 3 +- .../profile-2019-04-17-11-14-49-700.json | 1 + .../profile-2019-04-17-11-14-49-700.rawproto | Bin 0 -> 12841 bytes .../profile-2019-04-17-11-15-24-728.json | 1 + .../profile-2019-04-17-11-15-24-728.rawproto | Bin 0 -> 17877 bytes AndroidLearnProject/local.properties | 4 +- .../xskinloader-lib/build.gradle | 9 +- 86 files changed, 1464 insertions(+), 1524 deletions(-) create mode 100644 AndroidLearnProject/.idea/caches/gradle_models.ser rename AndroidLearnProject/.idea/libraries/{Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml => Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml} (62%) rename AndroidLearnProject/.idea/libraries/{Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml => Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml} (63%) rename AndroidLearnProject/.idea/libraries/{Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml => Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml} (64%) rename AndroidLearnProject/.idea/libraries/{Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml => Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml} (64%) rename AndroidLearnProject/.idea/libraries/{Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml => Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml} (62%) rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_core_runtime_1_1_1.xml => Gradle__android_arch_core_runtime_1_1_1_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_lifecycle_livedata_1_1_1.xml => Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml => Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml} (65%) rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_lifecycle_runtime_1_0_0.xml => Gradle__android_arch_lifecycle_runtime_1_0_0_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_lifecycle_runtime_1_1_1.xml => Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml => Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__cat_ereza_customactivityoncrash_2_2_0.xml => Gradle__cat_ereza_customactivityoncrash_2_2_0_aar.xml} (50%) rename AndroidLearnProject/.idea/libraries/{Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0.xml => Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0_aar.xml} (64%) rename AndroidLearnProject/.idea/libraries/{Gradle__cn_lankton_flowlayout_1_0_1.xml => Gradle__cn_lankton_flowlayout_1_0_1_aar.xml} (71%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_animated_vector_drawable_26_1_0.xml => Gradle__com_android_support_animated_vector_drawable_26_1_0_aar.xml} (72%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_animated_vector_drawable_28_0_0.xml => Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml} (59%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_appcompat_v7_26_1_0.xml => Gradle__com_android_support_appcompat_v7_26_1_0_aar.xml} (65%) create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_asynclayoutinflater_28_0_0.xml => Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml} (61%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_cardview_v7_28_0_0.xml => Gradle__com_android_support_cardview_v7_28_0_0_aar.xml} (56%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_constraint_constraint_layout_1_1_0.xml => Gradle__com_android_support_constraint_constraint_layout_1_1_0_aar.xml} (61%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_customview_28_0_0.xml => Gradle__com_android_support_cursoradapter_28_0_0_aar.xml} (50%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_transition_28_0_0.xml => Gradle__com_android_support_customview_28_0_0_aar.xml} (58%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_drawerlayout_28_0_0.xml => Gradle__com_android_support_documentfile_28_0_0_aar.xml} (56%) create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_cursoradapter_28_0_0.xml => Gradle__com_android_support_interpolator_28_0_0_aar.xml} (51%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_loader_28_0_0.xml => Gradle__com_android_support_loader_28_0_0_aar.xml} (58%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_localbroadcastmanager_28_0_0.xml => Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml} (61%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_compat_26_1_0.xml => Gradle__com_android_support_support_compat_26_1_0_aar.xml} (65%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_core_ui_26_1_0.xml => Gradle__com_android_support_support_core_ui_26_1_0_aar.xml} (65%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_appcompat_v7_28_0_0.xml => Gradle__com_android_support_support_core_ui_28_0_0_aar.xml} (50%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_core_utils_26_1_0.xml => Gradle__com_android_support_support_core_utils_26_1_0_aar.xml} (64%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_fragment_26_1_0.xml => Gradle__com_android_support_support_fragment_26_1_0_aar.xml} (64%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_media_compat_26_1_0.xml => Gradle__com_android_support_support_media_compat_26_1_0_aar.xml} (73%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_v4_26_1_0.xml => Gradle__com_android_support_support_v4_26_1_0_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_vector_drawable_26_1_0.xml => Gradle__com_android_support_support_vector_drawable_26_1_0_aar.xml} (72%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_support_vector_drawable_28_0_0.xml => Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml} (60%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_versionedparcelable_28_0_0.xml => Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml} (61%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_android_support_viewpager_28_0_0.xml => Gradle__com_android_support_viewpager_28_0_0_aar.xml} (58%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30.xml => Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30_aar.xml} (56%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_github_bumptech_glide_gifdecoder_4_6_1.xml => Gradle__com_github_bumptech_glide_gifdecoder_4_6_1_aar.xml} (55%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_github_bumptech_glide_glide_4_6_1.xml => Gradle__com_github_bumptech_glide_glide_4_6_1_aar.xml} (69%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_github_devlight_infinitecycleviewpager_1_0_2.xml => Gradle__com_github_devlight_infinitecycleviewpager_1_0_2_aar.xml} (72%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1.xml => Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1_aar.xml} (73%) delete mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0.xml create mode 100644 AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0_aar.xml rename AndroidLearnProject/.idea/libraries/{Gradle__com_jaeger_statusbarutil_library_1_4_0.xml => Gradle__com_jaeger_statusbarutil_library_1_4_0_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_jakewharton_butterknife_8_8_1.xml => Gradle__com_jakewharton_butterknife_8_8_1_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5.xml => Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5_aar.xml} (57%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5.xml => Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5_aar.xml} (73%) rename AndroidLearnProject/.idea/libraries/{Gradle__com_youth_banner_banner_1_4_10.xml => Gradle__com_youth_banner_banner_1_4_10_aar.xml} (70%) rename AndroidLearnProject/.idea/libraries/{Gradle__io_reactivex_rxjava2_rxandroid_2_0_1.xml => Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml} (70%) create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-04-17-11-14-49-700.json create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-04-17-11-14-49-700.rawproto create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-04-17-11-15-24-728.json create mode 100644 AndroidLearnProject/build/android-profile/profile-2019-04-17-11-15-24-728.rawproto diff --git a/AndroidLearnProject/.idea/caches/build_file_checksums.ser b/AndroidLearnProject/.idea/caches/build_file_checksums.ser index f3f91c78f3bb9ca192f5c50db7a934b638298cb2..feaedbce748d14a052f61027f135b2eba74b7286 100644 GIT binary patch delta 193 zcmZo=ZDpM>oi!_QS>dLMbNtiQ^+StOi;DHr6Z3OYGxhb-ixN|EQuQH}UO`cQL26M+ zW@>S15d%}S)0)rXKiD`z9xyR5R1`2UFbG_c?YY^{u!-em1Lur4Kb-1H82F1*OG+~H z(u<)+l@>D8F|bYMW3&~hRtwy)+F|GY#<|-YJ-7MZm>kWhBH&oQI#45a%XZIKi4s4A ox2jFMn8E@yIKWNc-1asUEbLag%__y!16 z-~s>ucyN;WwvUGmW?{y77MJtVO7VQ}MlbO0wWRdZ!>b1z3>Z%mQ*9g{u+2@upBjM RvIOaX37G8oLVlAe0$h9jL1q8| diff --git a/AndroidLearnProject/.idea/caches/gradle_models.ser b/AndroidLearnProject/.idea/caches/gradle_models.ser new file mode 100644 index 0000000000000000000000000000000000000000..ce3d38306cf19924ebfdcd6a325880b5fa750cda GIT binary patch literal 391178 zcmdRX37i~7^?zrxXA&TU(<>mCg6teU_kx-wAtaE5kc5C-p|9CYb}nanl3heZ?!yC6 zPz3y`93rTABA_7X55zMlx8jK>sNex8{?z}ss`{Ru>D}t>4S)PNo9U^pdiCnn_q}@c z>eZ+JB=j{K!b+u9iAhzpQ7fr2y;dtXVG^eF-1}~ zm+*Hf{%Y!4_Ur1Js+F4p`>&@*=vgJ~R+&7aRVu4%rG{QoN_DBKH+5m*sx8u1Dc;gc z<@l;nQ$K8#uzO{ay?zAw+bU~oq>82syEsa&mgR5ce-oS_u4w16`ZDjXsZ3u6f8o?DZkg-uF z4Gua9AMjuATw%dU!rqn1nf8+PUsEkD6OhBBwbV2*IErl zTaIDV8W1z5@T}K}l)2bPYMHl6cy(p+*sWTl0h*etrE00DHTAWUGA@ll{&sUP_z27j zO{$`rJu8#wnA%eGGqXSNbcNF6$?ox>i}K>cU~P`=zR`mCL0q@mgK0O7&7) zo6xmJRVuTB1``aPnJ=Tgohp;-YBhaXsj*hlH|xUAjH*&CzPwb{P+*VBMh*dxvj0a_60X{a?)R zRYGqajIiE6Hhz2)BOV`3)N2M#%(awT2-=j)IVmUC@PaOtFv&q7X4kUGs#GZ{%QZ=F z0j7;+ffH;tE-O{EDq*$x3jp#ta7hG`1=*GPJ4t47$YY({?_^h19(HPu;%E+k#_Lp)7LZD{pcvjjyp8E5m!XcmN^ zk+tR4SgC4YCb;AVxs`yZG0JFwxN8thYVdrW)}%&H zjY|SG4(1Bqdj8McTW2>u6O`;VU500$r zjY$|clB$--43o+jNMhIk3rH7$WDCHvT0UO#p*E3W8P(5f2uWwxjRp*8cl6fTfWb;(5p1i5urtMJ zVui$xthOr7AA#%hGyC=o0{r)yk3^{B1meQPlv^<`OnxE%u_P3uhNC%yH-7Y zr4*+FLsb(LrI?K+Vj^uT)*>w?(V?Dc=qwAiEpRo44QjjBrIsL%4in4^+Ya3EnsQbX z5J#9y)K+6A8h~XhUSzz&%qG}jAPW0o8U~~L#lx7KpYxv2rNE4YQ?R?hgGH&$gMpKX z-d?83t+6p8lrEN>BtV-TT`k!^(Z4`gf>9G@m}`c1>j(@B20eC9hFqjmV{x<&<3oYAsa031>sv(| z#rLXA;{9f;qBSr`V=bwn661?u2pvYtMlMT=MwUp%Fk*EA(pN*jgDn#V=|nOYt`gju z4!rZL8&U?vvQa7Al%<$DRWMhCMR{kiq(|BgXWcEcA|R zleE+ElZF1R7EN)0i#gi_`(Hr0K9z_H`E3a(SWFR-E>Ug!s(HYXmAXEOmfx1${rr=j z`rShmiRyFiz3Tdpv+CHy7CL;JK% zM)KU4R|g$1a1YiWn+&6Pla9sGCX?e+u$0{-8Zru3!A>5^AW5SowTu-H5WUv0Edw|d zn5u053B6g`{uI4gTCcZ1M+?NrYyW{*i`5d$@MimO#EvtTh-6j}#=t&yOZThXQ@gzq zPy{(|e-4Pma|(k#zk;mwngvqEUY!5yF3H9JDx(7IDmogG$~IBCm^4@YK4 za+?g5ZAy+g?~=Y}bz%OdR<)!X8j{TRH5*q99o9*Nl9^r$*QFV8r}lR|$!5Py*31k{QYd z1#D?U%1U&j&j_`RZUzn>AaDax6MwC$T&p?ld#p?AyOCSNi5_P5f#`|eDf4H?_E(!KD(aYXol{g2yAoO zjy=$mKGZA{|_hat(>IwIdd9s>*U30{j zUu3qr*ObTJNhGG9F+3Y!Chs5%-9PUTroY4-q==td+EMk84wm`rKI z&q#K*X=|N`hLwKTC_9d{g?*q@#+L7=VuSQifJVq)7TZ(yF&uv@mf z$)aRiI5*}vDS{SVXBfI0|E{8_9fvE}i5HtT^kmL^=n0w)m_2^|ehps2Pb+bxr-7(j z9CRTBt!q_r+{NI-0bPoWHpb{%bYij)+>JD3a#=&#M&ghWB;W0vji<12wgsKR@gsxn zEPN96?IP^;?kjYmCz)YAp^?RN zuD~y^7WVq*-S|b!*0H-{oi}N=>h)SfkC90mYtRvk8Tfhh@reDg2XW~%mb3mNV)xe@ z#7mBgng<}4k%LdV5iN^Deu$RE$+-25PG}KwvW&1{A?x(RH;*RG;N5^T88|=LF53BPhPaJL>Sy zs-}fT)W%d#M<3mG_SRNrUf(Q~^O04hrsCiup#gRwIoeM7vJ|HoVH?RM9Gj*}jQz+g zuJ#|9hTH$4k6jLAKYqjV;XKkdBx5-u&`*N;sUG)q9OQM7eG)PDmTuORabmnN0-GM& z1BXS(IqxzKE;|m3KqaroL9YfnVWk})UG1^#kjXT$GWt?P8(FC)_Mr;Q|3DErFL}lt zdwuEfPk!`gRG*=H;A12SyCr0tY&T-NolyWkR0>EbFX=n zfHd2^UGuHa>~mlz>4{`3h&U{!iq4TlAUFvKhUG|XZU+g0c-(VvS3Hh-i~@l;vS3(S zVYMM}BMJm|3`%F{ooAQoG;1P>#I~Ca+P{rjV1rOL5|!iZ{**Q-qLxZ8uFkpi2hyqM zFyAc|j3cZB4L!&dbNuQf*BrHJ>59=cYmQvCY2)as5o!tU071bf8_V2q}4eeMuh!+ZS#+Q54F%u~J-_lSVu!`S|_$I=8(4Ijqap49*1DL89B zj1?_u8!}1;rZ$P%hhfqYjH^*E^bAUZA@-845F51*!z42(yGhh*K$DIg;KMMQ?u5Z^ z9|kMjX_`f1P&$_F2B`t)JWHY-1k_RcFid7l3A1NOe!cK59HXsk98W;n@L}W@wr=bs zJ&~=C4Ne83b7VdYlYn4YjzqVTC7D4&FdpCD6_2AHqd>Davelx^pf=MtG9QM~W@qT7 zJ`7f>)2xYPeddsu0I-c(V1rOL5|!iZ{*>S~YN_<%>YPi5mu&c%zYl{fnvNkKt6Z*% z&D2CC&!42OiYEyw8?K7dT|0eX>aGgqga_#UqTmzs6v>j9ksfSaM=}-6#)Gjtl2xJ6 zd@yeRt}AXwIWB>i9SKI*jA_H`NL&?0d!4YFPOMHC9f_;LASeKzqZG;@Y>vcLVRm~; zxE!VAwPEt`d$;}TX^#jPu8MmGe&9TjxuU1i@kD0S*-tkhgFeE?gV8kVC4)ssFtSGN z1u#hoMA^A}bVb?O8oNNmjRXN53vma-+R*omD0cjO+U|tJy0ECdv}amcj=`vX1ty~c zP>x zZ1G`H5RA}~`2|cGf}we|D>O$wOo5mj$th*0pnyefU>wN_dS|1ZQJChqGKR0yHoc51-|MC>HR#%ZY=N*f?V{x!L*pU(S;)+objIEIcBIfD^Rt(?MZ5r}4R^v`Tt(~|&Q236k|m#~?V#x8SrO+TV2;{JNylqy-ild~ zSuaov$Nc&1OWs7_*l<!jzX8{#>FzJ?p(=RdsYdsBBqjE*dNO(z+QWXqTk9&9g1 zBL1xDV2q9=Q5$VM7@xZzr;ct!0NFD~$r(t=3Gg^X zCyGHR9Elf@b$Ln%9G$$iq3`h1KUucSGxUa|;hDc2d=bG`!_lBW`{0qDf|jEp5;wYI zJ#<`Yb8QO98TAstAR`z>qh7@`LIM%B_f1_b-q{(oKy-}+@7jdN&)X37&9!WpI-#!n z=2}{|)BK8htL6^6Iw-+l#guS*b|lw}*}^f4=A9%FWHx*bPd|9-=Q~MG zB&v)oC>WmtH`F3qOc?D4V{v5bdPYGo2%pdugd-lHK=h4dYsD52KiG}z!df;Wo$;1l zSW63anl6!8UN$!Z5H?~_4T9E4w2Y(kQ^M4U<U9RL?EXgT*Pb4s-;?DP8EcQxCP&L9iAosqjP_S1t?c;pUW4^|t>H`oOKuq; zkJd`f=C)dchP&ZCWR%^QG+I5fN^gtuD2K}%%q+uYjgIRPtx{Qa>`!Ls{~~4r#~N!L>1oOkU)4f(!!gMbs^s=tL|7sQp;ML z4qAMrs(BhiHeFJe))>>&-9_aI;p?9|1$mO)1z>(Tl+>jL|^KEAwBs~pj)f{`1f=D1@D zcet?xnVhKvu$x4dm$b4T*5O7!ybjfO!<=Wd(@r=@TS_me-6o$P`#abCwgRD3!HkT3xH+vJnLw)`iSe zyX<@ohrXZS?w%}=6mm>^jc3Rk>$I-8Ev~INhZ*xH4MZkBO!TNjC)@~%eXMd zx?F?}tb;WW7mPQiDlP|U)lJfxGU)IrF~}en4Ljck zwYW=Xb*rqG7{)PrfoNMx=qec+6mctO;DUi>K7|>yy=Kcl{sPq6i`daIntvS`;m0*~ zh1A@Pem_xu{G=;?ddOmucip_XgqAXXziZj~S6+3;SJHFwdwtsiD4K(quTHU~IBK4G&P`&5575kV}DdsSY~51-AhCK9lP8 zI350YsS1d!XlhB)wPsu)f{(uvvkOT3aU*>gg>vR>n)>{6j*Vmf!G!Ab%sGrGkYKO3AN+=5BTSVQEWnUZu?k{Mav zs;NtBususvGWfbsn9|I{lv^!r)vAtHjZ14!+56BQ+*)w%rcLFVB9%8uQlq(P)5uH; zt_(njbpTPXomFvez(@&6(C;#$T{fDl>nLSb*BedTiUb_Gzbj~b} z(CVfVG&V=(R{l~KX4K8$9UFrR@2K4L;pa#UnLTA@g9yiX9QvUvdodmt&*FGsIa}IF zuPqE3mhXRm2naKy=Qg~<;wHvBI>+3vU*#H|S)|1=NI&|^Rqw$dT{4@4WL(`-mAWZS z0xXZDZoc^Ax-g?LFKwgbrp7x=*C;RE<{GBiB*rmLU${>BE5?alrqq0UOKNDXdaR-8 zjasp!i|}Mrag!5_=;5(utvVv&#wO8Wfly|?{}U_kg06KJMV)&Ro3Oo3^3D^u{fX9f z@81U=bFty0ZhILUZwAI+e|)a>YU> zk&xt!oR^i9C>6C#22WGTd?F7Hrlm~W^Ex<%*FBv2^$SCXgHs20;FKwCU{SiAML+-A zsqcov)-2@Z4c@qF<00p|cyq-}@y2WvOhG&GqLP-RR9?)cM7bzQIa$le>0~BX(2BB@ zPO2Fxm(-ME3YW96`2%j?Jr6hZ%Rc=gxN(q+8@2Jxx?WF>u)iazSTfPhig*27`GhX? zvofe+cfTqOvFT@39QetpCz))<3E(6nl!CfD>4IQ6Q!+-j2f(k>S-T=m5V zfgENbyuY*ieaZ!T4Vn)u1VnGDD z7INvlA|@nJ(TZA8(sDV~dXG$#Hi>xl{KK}OCyNQw$+g&Hv8FmsHXJHY&&gP(9W}nP z>2?2rG_WFgbtl)WCJ*SV@4s;=$#`s|#rf0bfva+&n?YBcRvuR~St*+@W|FyNPRi#p z&?kkYR>+Czgotm6Ofi>|vtrSBYnZ;}nGk;v_x%qM1XnX75=_2Hy`(fpa(*0mRr0sE zmT<@_MRZ6Xk$P%}&{xzSeUe<|ZTEcoqwgXKK1PG2IITY}B@{){lDSkSqvWAS6B#Kl zi_o5VB@N4?pk{MoF#~;SzBf$Y^K`%b&G(%|y6={>5jrJQsfKwVw%cdr<>yG42WBDK z`vcA1(>LzBaN{{4d+(+wZZ-zl2Su>El$<83idaY`6S5|z)I=@|VmTXqj@@l7QhG{h(M!s?Qli2INeXAQ<>7;5QMT2uG8YJ*HNFo!Xb`L^#(S#b+U*u z{yB`D^IA(Ertawm@ERAgd(D|;_msb;3ww8Z3GGqv_w?J*o++@j_Ol+?=GO0b%>+IqKP z^wS*U|tN-SXEnagVlFS=UJbFW27-J=Ub4!lNtqR;0%I4Tu8GC9YYNc?r`EYY|7khv~Z>)}3(6(odkD#8!>@HV>oJwnTh6_lpny{cLPT zIm%JfjBM%B{f|Dq=M4{#+{-rDT*D_se&Ya3)1uGhPA(5~OwJb|H)%PWm6B>!%1ebj zthGX-SV$)%DI-BaI$rf<&P6AjcL$ggBSxXQmWPheq)Kzd{61_xAmHAn1pEGa{4F@- za#ck`*#lqp)(HE;a&-7cp6&$OB5(*%4v%qL;e4M+mrallSq$z$18$R`pRfO8?8 zR0?7yrxdkBp@?;FLQBBY*!Diq3GaKP>X?!DK88N-LtKUvu~LS!> zs@VD--qO%=)I7?ziN;Nf$BsavSNaa$Z|t6Lx!5y(XR4bldr1efjOCzKkmX`d zO6H-n<#ZtlYdoRmldy6Mg_NQcB;ayVPNiJ$`Ys98hwmlYeAsVD+#=OMnqL3MCqDz9 zh->sHPcEZkLwIue0hd?yb@Aj{E=2K)ynDP&X_1sHR>xXCt7UCAp7;|B zSw+mJ3*?{fxBUf0yywdw0eALuamS^Yl0KUfTW|eyg7o_gytQ^UkbYt9G5pNW?pT0}ozZGIjFmD-JiRUot*#u1gd@7$4 z^Vy^*iddmywZ2)^+&o}!` zhV0t*D&+#}ikNctB5johbuVR6y&&BR?^}iA5|b<_)+mP_y9*$G z_-L3c&VWc#6w!=`ku@0T{Sk452;N&Q5w~4aw<$2<`;4en@*H7)EJoW!1lk1G))Qx+ zVl+W3A%SMS57poG?*$P31K}ZLrx8X*>>YYcj>5!?tuhUQh?9s{ogF@*vIzPv zb!)F3N}si#E`TtPTHT?9!IA|tjfi0jRx#jx_mYoq;A76u>4(Wy&oX1jQg6V5IlE#L zl`>^DcDw9TD`5HiUqP~fB@z?V`tY&WA7rxi>Q@qlR4A}o(VY?@EHP>Q@GFVdx}k4k z`h@P9W>>wUsHE!8MPuLXrO#jaFo5=8tWaZGLpwtnQCc|JSD`ELl0I3hDh(V?fO{AF z-%AjPO)Pd3v%h@yAF=zrhwmE%y{$?S4vbf6BoeCm#)TiBZ;s}A#35m68TV}vZa1<;k9OklG-V3eY+B3YBy9L4#XK=$vJ%<-&LXJ952`(w;vvL0 z8p>puKRs|Af}VIfBa2B5VNjBkEff*8p=zQe!rvn%u>m3`<&2g|%0=0~61!6_x$3@I z92M7maoQY6eMbx=WeQOeKWT)&*x$WFi0X*o@7gis_(Ao;S1rCAs7jYBh96wjww6m{oAr@WwOFc_u$w^E;9E=D zwz@<@m&htw^rE(O!5v@0`rH2%G(h*0Jq?gK_6YEsR`|7_yl<%~Luc~v$G>U1rW7fF zYl!5MrHqmg)7b>vFj*xliA5~NMeMg^i)lXqzqKnRz5s4-D42|duhox{)B`QX6|$Rw zSej%ylS(Iwsa&Fnu)AUw@GXjoLJ~e{L~tex9cr;V=mPT#x)R<25&Y@2TZjj;uq&Fk zb_h)tod2~Q&bxa&BI8mZo=@%&PT2Rf6jynJ_r^s{#i zm+F3)zI5Zg#{hEoQL3@BR2?TFR^+@Gi(R4co%F)@KaYLK#kw%hE{6B#+3!=NCe!EU zAOG;YlTFF+WKo}*)nPY5aV1Hi8UArGr%Fmek$}ls4pwy{kw-wKl*9H)QS*aljtD=C zA90%sio(fw7C|nGBx5fluVB9qp`2~Uqhlg$|4=)^zH`>7F!w>*d?uEa>`Ckt<;Ym3@w+~B)c>0E#dE_; zlx-xrah$S8w)5b)<;55-Pu<)WIeUNvgqMR$_ zi%J49g82-N7!?sWU65297|^mQC8ZULh$u8)v-{z~P_CK6!J4iB>ba1@!=w(z;q-~H z(DU`}=*gu^rcXjJbb1b*kl4>&xMV`y z!yIZZOk`CLv)Y(FnNDOh8NricA*~_`u9(nLvX(`>pjs#^soZk zcZ3yjMoU~xYKV&|AQDeRKpCPrrIdoxLx=@PkQIJ1F9Ic{oMOD@=t6in7?lp&?6s#;3Q z6r^M_52%K{n1C&djkctgPQg)&6KEP>+re2!cU)k}wc_khaXgSuT_MwRNrH!C9V|#* zQY_#+w%v~8@=oy*5)7YQjw5bzED$~Q2T!dqXA_qy;U*yfO1a#<+{APQRIXJQKN)_o zs=WANVr7!}Mz59WIJ4G%B9BG~x0#;zZ`~b~-_)VuI{5yr@AlX!+h?E#2&U|awrSevQmAlbH7y9z;w05pM9>~6~ z2+V~vUHTeGj)lT3ZHLQz^(4uhnmPzWOfV92*^;41ve5WPAOHPabJCsFRo*)&%1~qk zATpN`5sILWsLU746lO;Gx=TMYx!?IfX6i2WEP6*2ghiA10BZ00Isqn5sgkpDj)D$z z7n7tvRov%)&o;%O!6gnh5sr0qT*i(P!tk@XRJNGR;Uq53ffaFfFoEOu`GV%Vwe+E` z?N8Oxb#&JB2jH|c+@B)O4uJ~zCDKYEt;pnva1OZu3i)ilfX#oU5O=)m=!^?#xq>A8 z>kVd7SCI9jKAR%0@eP-SukWDH>cUsPuo^x(f}yq6Rfsxa8YeXts@`?!_Lt0Q#AQ~7 zl90|3SbPy`oZRS$rCj@7yd3d`QB63t1Q?}fSd4I}BH~eTenm%m{*krFvtPnR22~vi zjK@pb(MTS=mDpKr9)u;Oh4&z=%I5`CPgD1`SC8330!j&~yzM=W`_L9=w8bUlUC8DV zsRYv4AY&7f8RhaBk>tutBF7W*o)yzFVh+-NbvXLx0%I=I&WA=v{c&ii?)>Wt%3SWE zkQ7s@tY9v;QCONff;ZP9 zAv869UWy;zQ5puy(!DT8Dkx_nDZOs2RMJ0yFtoRzK>{K&XOM%J*_4z3B1_34PP3=e1+|#Uq!USBEWVrziyi!M=Cm@?VP#ZB zQS$k0E-%9Oki#BbDuvLiqL|QBF`w76Vj4bQcRDPV0t?-6K`z(2h?6^Ak(O(3oR1I- zU_aFkuw2uFkBnek^;}gvwIu;3F&3QO@t?~-W6m8edy|uZ02JlYF`T4y1W&HmYhEJ! zF!QY6pO4H$EQzpTuX%D6v5ZA5)s6=@H~sU;L4;7z5)?7XF!wz|KJ*tyuN^W+oogjZ zYc=xVP^^@5aMorMY9d?I3JHy7!$pQBF{=VX3%*$CIfv?OMsE~Mld`)PBfD@J;53Z2OA^MQkynrpG^eD~d88Xk=Z)7K^t*tN zPZLv0990Ihq$?D1g_TZ!Tr4mo_wjgA9dLPjrcXjJ9P*jY(;pDaM7(bGo+p|Uglq4M zg9`zW$mOWvAfqEFa$zzL0e-M}!UccJ0N38=myds>F=6a9Aya^l3v~C}*2Ityz$!&8 z!#xc|r1z5~ul}H99lziLf2(pFngwO_*3 zd;mytEn&C_=?IftIL$|bA5fmV=3-n-%ns@|m2DEaIiiB}Ck?HLq1!yNo_txyzO15I z%IQhZjQ8MD@tQr3LHf=1;;4KtVqN-FZbB;Ah|08%e^NH(gKJgQ-ZYFWR7|lokF)P- z6=yExOd$a?FM(unQd$&o%R(`wX^J1Vev->k>C?}6J8ATIXeORV7C#)*SKtAVabZv* zl|tg~yd;4{HJvNwk_e$imj9ej4R+^TfXj7&xt%_{_IM!cx*{)^6%dLZ6M_dwwnC4E z%9V>I6g9zE%!NVWXtF^0>3!0lG$$Qbm_s-^0??Vu^&F0(jxf!oyhGCBhu7<#-*bB4JPoLIX90)=MsuQ{K3=A{8sL_*^-Yr+982%k~`!${hh z5_8BTjw4No(^n9lPwwIHKV=#XE;G^$T+ZU4mx_CM8 zMRS=P(v4$}y^tc|PJU)H-xZ|J-o@LQz^=cEizM$gl2^fBi$u>FQb0?oOd*f!C*+ip z#2$YV%0o(~eQL0KH3PUDif0kvau|9nTu#jtE{CBeDqIdllZDHt{q`-(&Dq9>%c1Cq z1eZfmG{d+Yjut;${>4Aq$f#LFn`m_r3nK+FpJ||PS_Df7J!S1bDB^YznrYj}AV_n``wGpLHgElkeXib@{meTz7iR!pQ}DkoGG zSDPSjLS8MTaigc=SB2d%7esSqiu0k+t{(Yh0{GSyqq(-c!x3bGG)Z#dacXeoWDG}6 zFiLZ|cta9p!L+<+)nVqW;|ewnNk{-rb7_u{By|L8t|Mt-iSa|~&wXOWP5{(HtZNiT zMkbo$rE0lGycoksywiR^!$NNn%nmc*_rlkVzX;RWTY~Q9k(o>N~5mhjST~*LkI@sc09e|71sr0;nLz~fBwrRnIC<{kr{y2*S+Eh?ug}{dmwi_H29}T{P9t#i-GiqIeaBcCo4-g zOX|oGQd3*UGJ`iZ;^^@5I1(K^ffoz7z-bqLw*O1Gn>cpzuH8unba(2UV$+4$tDDvyod{m@M0T9K1KW>Qzo=E_ITMTdpY z?`y|rF3rJ3MX>9ID?*=-7R$n~{wKf6w4J!Z;rZGRz*sIP6dxrW@sukZoRbDWx5|Sr z-gu*lokozam0-7FSlZo_>|FE#^*LSG#Z#C9C`-AE>Cm70*gbLUay~A;d+K-Or-_pb z=JWX+{MtBXtmSZZI*y6p8ijOP!nM%Y?(;b;@;_WK>fsO!3wldY!{Csaa7V=%pBHeB(n?%|N*z#Jkn9C|T+%l2QiMYJY^S+}~E->YCQg*I8m|*%_&Du z1F5lq^@es}<#PUq;Y^^Z%NMZA&mG&i{YCD5+f0z9Ucv=B{<+Ps|MRz(!CJM;dBOHI7k~aDQxdo$Z0)L@ z6BTDWa4Ag|5y(nDmz9w>0YS-GBs-Ugr$UqbaQ4a>!C9Lg6Jp6N=S59QiU|eT)-rMXRYzA`=*pGS!MECYAcwjFE7!R+K0+)^y{jElx#DX1 z$OyJpxl%fC5@VUGo5kOpYR(_7s3}eY0zj0@a^@tZBYtwlqw^Bs2c0|p_;VlX1f9)R zyiIb^~~ z6_NU@fYZ##JmX`c&J1+g^qA0@PN$LLOU9{YErZmMDJ`4D!RAy}Qs8<}aJCOOR-}*s zB5uFx=t_9#^sP3SLo*MZe1urg`OpkOCm$IRK_@3M7IZ!=KWTYbxuBDifGD7ola!f- zPF^DXp!1aemD>QFDL<>zY^S2BC5gl-<0gp?AbQ}N-?dg3cK3V33#aFQ|HPk~aLQ$8 z`8DD|qj)|iFLLle~zr?~>~!jt2N z*ni#q&J%#xxCo)$Phhr)Oul0kL_1`?6*DaxFBx z4X~SX*d^#PE`?MQdEg;Qe4AB@DLEy=#w=i`DJN%r1Cc$UVxIlkP7w_rXNrZeCX?9Z zKVm$WNM>l>$9y^|Vbe`ZDTzcbiEKYOz*j8bFiQ>@&*Vf~1&(gH;5n2Go76cfj|cLs zD>QR$Qid5q3zq+{9hSMmWx@~>49THX7uRrEaQxZr4_;%!F_*6;6lVgUn9Fe-ilB}# z9Liqg8Y185g6rph<0U|FvKs^|wT3oKuJ3Jj0O6-keB>jDF*6xum-oW(;eUFr#}p2( z6Cv$QI6)l8T}s_AQ|(vIWI<6^^dCz?f@WC?w~)!ZFvGkZ=ThM-g(QA!iwIOYjWE|}CzZ&y@@66$R_1>M{a>I20(bw(u z(`QX_;ToGx4KYMx8Q%(-go-V$TrQDT@;JPw<_q}*@~x$l$ex}{`-X>oZbrbm6Lsd* znFUpXp$wvsp)*y?z^9#)Q&KUTDWs9$9d`|7vZ|CT#5>jF=%ov{FYZb`-9;$Y8kOd7 zGF~i|HT;bs?_GzHb~F+XWMx5ry$ezEt9|)iILwHl;P7UA}efi~u$TipD zB`>~jII73Gr6|-I%|o0MlSJeUQY4tUMGZFrr4=!U1jiCC>_o^dqQrcY&fV5^(ofeZ z;vvpNcS+4>uq04(MFdtP3K^}SCX$F;!*zC8JQUM8g6%mmZ5iaAdK{f}p?fIrZ09!O zfsE`5?xCDrA*iyj{Vna-&UH4SgJ?TOBbZZx&>m`09)epovVU{pu*Xeg=K|1~;8Osw zhjMs@;ZjFj59Rj{MUfw@fAofz4+N~!6B{0n?T9%%Y@tx<;81zT929}p4HkX)B8y;h^fKwV-WIoE`0!;+MNf{i`%O*q(zU2s`jy;_={U}mi zQ*-G8PHiA6uYgcEgy<7PF8Ok*w>t5GvFBDkeJTbe{!uu!f>S{{BlJd zhoZy}cHevBn#TdVGz(p4*kzF)Iph#(+e@s~cK)g^>}(T8%6dWfC2fzrO^M)&7Iatd zfTwsWTga!Rf-L4lIh)k9biR;P5QUr+alB7W`I^kv&8W$Yg$TNALN0(dhfPhKHBsbZ z7CDv@MI@ao%18v7&*ddtIf`pOvyvU?!CrTC$%VLFo}>`m>I%4Ak+=NBSa`do9dAP! zFKsLjmZCr_IHWtDh>$}Df(f$F_RL@3eTX@?LZaKWi3qTHL#+%r2B{;~hTJxrHeY;q z4gb2~9VtNV8%>y%8p`Haxm08aeMTBB+`L@TXtMm2H>2F{M-4C5g#n`sh1Xj!DcDiu zTi^8ko+nHZ;5y4`)C=Ef0+~EXo;VG6Dk-vD!2QD-!ZM0#E|E$I@ z_riswT#Nd)DuWr*6+yY~T$(-+7IL25j+|U}$Mi`EHc+|Fwr~()A?39X-Tst0O}K(R zI2sQ?NG>CtgN%;I$aSEBhXA+n39%HG=)wU6zxv9Pnbi0T#G!P(wJSL{o`(x$+eBzR#2g?D#;D0VgIzK zGP!=dRIht~Avs!v1B9L5f1f=kDI4eq?dAR37J$};Z(Twu?lWc8v$hPEqzS1^jl^*o~R3FACRF8jadV+ z7{nhwJ>p&TOd6!m?Gbi&k-k#suS{;3tOIrzpbwZzjITrj=B*NT#j}Q9LXtCmR8^s} zDP8zsXZwfc&=jQjBKEY|)bysSl7$wYA1yV^(x?MCf8+!PwknlJtJRt=k(1PB1A~=G zyAo7AMEK}@dp;giOLiGlh%&1nDkx`=k20%jid4oES}(=}n#N4OXcWQ-L1~P&q=vc< z17Z?@uCJxq(GoACJce!^(PWLL(kRt+7X@e##a)lU*7cJWxmI@cd?7fwp7d8?axqEy z$5hex;y-;gn|gf4P>2Kt1W7yi`aS3B9p{Ze`oJf2fy-&{snvPjWs0dnbb-tH9j4(e z5T>|NCg(t#F?`VlE^km65^%$*IbC9Bl*qbs;3j+w-l7Y9rfUeH*-|a(0+&BI3yrz46J2-UxubBvr- zPLE7#k8mOscdP9>f(r_`+izD8{l^gnai=bDoj2kpglY#a9O7@1=;tn~fy-dvrp8w< za5=uYNpLF#E{7|B+m?e#7q|igxLYRbV0LAl>H;pc$K6S%BKXrc&byi^f^qjMd}_uI z$Bpew1?)#uz+|nZZ;r7#MvOnnSUQ%ZS-uJKKdK8{n;<-N8JN!{>KyI0qdnJZh@)j6 zoPUzw{DZo{<;UkBfg(KDQkAE%0Bq;dG#qsJqB_^oi=%Njo^x4!JgqvAoGVu^N1Fu0 zXG@MLdY5MjIi0xuor%YYdk(%(I!| zNw?GY#I?kmIZ}w)+QBo5YBMe;=*+RfspKyB=s`uMPWeJzjD`^?Gy=#ayrLL+pS*J9WZBlhC)+F^cSbZby zmD6ai42kw48m(6sxXzWf*E=nu4K2oH6ohNKeLce^&Ebe>U)l@|5^eQcPJe4SYN&?d z+UE(`Zh%(eI#(5rBwtO$b@VbE9d7Nzfop+oS2#Tq4W$t(#Cw`- zY1bB9UKrjUw=ZgbMAXC!x)ADI#B`ZJcEP!<1kQd_u6Nnx-~wb$T6{GE7esIp;8q1( zpvc>@LkDoVw>jG-;6I!4P1h4#+bNtKbi)1qpL$*i0r#9a?b)iq7w+vEJ#c>qC*0c= zy5N3l*Ldgx7u<8UIYV&I*}BiF;A?>UA*|83rUNG#bUDBU_q+`TtOK~JhkXNC@k>fy5YW`qi&h`3yBGt)XzOI)VTj5P05Qb+#mrb9!lN#vG}lP}{{oHHNJ z$MP{2bSsL*d`eZtYzp_I78NOpBi3pk&=@+$w_0{lwd{Ln&~%pE%p)UXSp$$GslmY|shyckX-EzZukr@@aDB(`GA?>0fF< z)*#5E$`xvE`s{c~Hq-!@u@tiHc6GqDfgX~IcC|3LJ5dWs&V!O6$)W0jD<~#x!vSi7 zYyA_FCSP^IwY49T5VzXk@^yrzz@a|4)KL{aHvDwWNPsZ1_`WOrHINq}s3NZFLY@jWG{;T|u# znH^WEF}YM7tJTJ8Wt>96tqVT&A{+|!n&D6@IhBe}#fXQRI>BL-O31cnNU4ORqFt#B ztR_kY8GE=UQAl$5l}gx#qfja#X_`5u5|WS^P%2?52&+^=w$H6p!nVt;R6;iFR4T{K zfA43RQVFHcxh`chRf;3Wj-f8CRN-d5j$GkDuz{C3Bg#x|Y*y<`)fspzBfH3*Gg3QL z%kAnUlx@z}`?fuif&UO?a;z?J#WIFt2#KEJ^6Q3cHb9YZons0`k*^vFwKCum4!08F z+HDBM2IpB0u2YqvS|4VRn_F^BZdK~KhAg~eW#niZ zv8x@S)tc*&_i#oi*!4||Ok?@M72C?!WV@Q+a^~?h?z7mqjOd5cIFIr3Q9;)jTwYhs z_5w5l7Zmf6;;Ra{@PV&=w+`UKL(YaB>j$p$*nG_r)aTkl;cSkq7Pw9?@U`c}`D?Fv z@lzpizF4kpvm8zd1Lup$BCbV~l!78j6$+x9g+l?AVriFkNAQov+Cm0(QQ}+kw4*J^}U$r}*Ih*4KcE0wUz@FOmuyF?LT$>wfk<+%+)U~R|8QvHGkc8N6Q7 z$|F9tkFeTJ;J=(RWu;He)1%u^0bJ|-u#LAX1FmiJuw?kCg)50#IFr*g7nUBXAh?d5 zhi*AQRb0rEbR#TLzDk43YZ#UixBB36+Jz>;p-8w^L}3XaDuruR8oFVkT)4adVOw^p znWJxh;{8m`a4nb`6B4`5Vwi0HGToviq+~Xgm2ppfE|F1+ha}hyR1lRoMYc4=9aD~NlQR1r%xc2+Fns;jeF8@4VyAIgrN^#27 zD#7~MlWDpOz~z1C>YNkRcY6LMnV~uthMBt%^qLlOaVfnzk!%C7h@^Z@&ZMP+SX2vG zM~F%`k;!HA>4cQZ$Qe~j7zm#ts|Q0r#Ed$v?PF)%o|D(V<~#)*o@@j7xlSmBZoORz za4lj&)6uRF27XTz!bd{J**Qntbu>Omny7LJ75dBHbbzAZItUqhgnX3-*8(dvDQ*Q4 zD)g3nkepl0T&8?zE)d1SWwC{CnXDqXHZnsu?Nm4qpLzHdOyO|Z5GF0As-gE_)8NzdraYt>s({N};b^a21#mfAI9hIBP4tft=tp`juIm6eNT86^Yp`8m}d0KTqI@h%p9BmRPpDj725YFYl;^>$Yx<7K!5sx$Lo=bX5 zxIGzB;p{TPttD++9anxgXkd>>jeJeXsgqA+~hPVIB|A)kL=h|LV8)zoVhy3btFCu>!uAvHH+JJ>v}ET_awA)8HW znVgi#6rghovYJ86YbGt?*tL1Q`d~%UV_HKyLmKg|5&PAs(bPCkaB|MK>S+-hW(y;9 z>+Sl6YYQVZ9X{&jDWYy3<8;%8CWwCvBYe{V%7$wTBQ#aMx`t~DBQz;)Rm0_+4NrqZ z({T9&LQ}xKg%Q4G?k$YaO*_@hnh*BpnVR8pjW}<_SfNSegr>@J$NvljMNCjn7NYzHlSfvb}#kt|ZLtU5+503WQ z6$F=7=V-ZID-51Pw8Gyx9mO0Z@NanVG!}sWTrOh{I($K&Yr})1aW~R)ZFums>VS8y z4G)esxi>s`+9E*Cwc)|hm=nEU{KdZiWa!PMzLZ+EiOVxeRejhxTy4hAX0X|ziD^wu zWpLO|Nfq<5B&OtCx|r9}nvybbd<0uc%K)CVjO6 zSL%;YjB)D+E~k39_8ppnODBeEo#+g%K`a(79)FZ!o@RUQC9^q2YG-;9} zvymw0pf|D!HIXf9g#^;YrV=vA$&^)b)kMKOwN3B2>yUtnreSjCUh2PF7r2%v(iGx|S<>z@k=%O$xXH6~$} zq>Te|DOJqnii(`ez_3r}QerWuh^c%gFD0<2Z29{SAx8cdNkcSLtf@54 z7*)ckN0p{gzYnLohKIf|?i!Bv+R>UzadWingV*~Lyna2WyM}`Ves>K|V*!}W<*wnN z!xy!=OjC}=-MG!AD|lLU7~x#@AV-_r?i!x9xZO1zjXClA;rW04R+z2ZjYo~Hg`);r zwuV$9;wEK4dAca)@&7b(SroFVL|(~da`{3*EF=o4Og3SL2hjs)hRr=W+0xXJ^=-8x zL3fcd*lV}4O0{02tovLswA<44& z_H4to8=wUE_H09unILVQ?L%iz^hdh7RHKv4?56U4w98XBZONmkWa%iT-%2E^ryIVQ8W2 z1}({*FkN-( zi=mhQw3O+KI*%Vtks2yF4L7_s=RDRdBk6WRNoNr=T1@8BxdL+J6}4n4k;xbH1earKWj_@zn=hOKn~X+`53vlgZt*Ll1D}p5twp=m4$_5bg%aih;{@$J?S4 z`?vh#ymvF~=R!DB1#Q(7z1A338`3sOE^BPfz|yFSDNRu%4F{pMdjg}%Qn>FJyJEP?m ztL4@4LT_(pR)(^Xn>2YE;)YYFl7p_&$@RrUnscm9;qb-Rckh*qQYsLZ+%`15Q7e{oaYRxj+;i9%Hq+R% zojyY#=CJ-QI(hGXSuLZ4W1h8p*Wm8qX05zcYZx)!MzzPYYEO9f;ySB#KPs)b{~dE% zmBtWNGGhE8xei2A$o66HeXQ^1OVoKso$+HL|VyieT0Dj6mm+oI`+`zckMvGJN-E>%a^pW&viVm{Ha%35&rQC7w2!Y!w= zDlVB#nOD^kk$8+yccK4_L+D@r(Jnt@q{c{Z&8r%4utAe5%@OlEy2~DrV**xp&t=_J z-rB!{)gcCRYu3F^hj^T-2 zdlxi5{a`vxn$*T_V3yi_gMXz~UE;r1&7C(~ER+X4jyVa@Ol4nEMsFskT< zSG769!r5t3y&i8i;O}7@!yDlDI#HSV6*l$QM5Rn= z(S<$zr$MKg=(*J@Qlc9Ue%T9gYaY&~;A1&%kDU)Ko&c9<*`hUTt%edn(QHb0b2EW> z#-Z#0q1>QsDsp$CL*^mC#PNpq^cGFeT>bjTu60V~)GHe-8e1(+nBov!eVm5CON zk7-q{A?cbL$H>MTO{X%5Pf%?Tr~1tvbr9ppIvNo%T63dRZhC5|>jrLSvM$$;R$Iqhz!T`H67TlIRap|7V0Cr%Rfu%2k@5teIe74crJtQKn? zSJX|d|2~bHdjxafu9`{L3Q^f?;BW?9YtWlbAUo{YFw!H|Ix@>q#zH+}cFg&C8^kq) z!<{19g`)2*12!ASqH00@AhXM9$$N8kKI|)%-<+K04mo+Gf`?(CIKS# zadXIsrRxF`{8%4mXg5sJ4*nvwQ7fsWWDIW_HbU>}(Uof`y*5J6u{ts5Mq?=Fz35wJ z_g$Ag#qje1CA(!G5L4h#s*gEkGHEqG1dy=p_W`DI*p+3^)vQm?5 zOsgJw1^ga4p(!}4R;wOaZQ;WCWcy^(8gaVC5O=h6fc4s8Owxq2E*>2_t07SDg9#!O zJF&KAI~2aJ8zc*h1c6rcCSB-VaqRjH-XR4;T=&p*LCK?GftwI%bEL=9b?BMZHD#P| z1&2oTVy#g*n(kDvU5?&+KangxOsMF+f7=37v+%7;SY;Es@EXa0RmTGEctq=v9#X;~ zah`3YnNr$rMWmDoCC#|*onn^#(EDBO;_GrAZc^8A@AgynKH?&xlX@Sf^JLET0{Qaj zGsjl1!9V8w93S(xQ5I~!;If1MLyP{De9m7;3jXXbk6n0zRq&In;C_D)ub>5=whR9H zrmOp2unJzw3Lg5QTQ8vn|6mt<=9v30eXUjSOjhtmfBDQJTJSl$;Pcn0JCXAqjK<4Z z!7p5Q#sn?+f?e>%d;h-p6tf_6bM)CJl!rRU2y3B2UrEE(bBtp@56UqLkn)U3zmMeO;Rq3%=Jb_`dTO9Q|giAa&jMZhz(@ zKcIE>U1=A*YQM2ZS6cd_F8GPk zQ?LHKRq#e86s<#gAEX6uwhMmhn7JG0S_P>Gx_A2*Mjzfv3*KfI{M?o=U3I2a@C)=` zq*{lEZC~=e@Af;NO)RHx-$}j_-{O2WX&<@z;XfWoo-t0{jeqt&K|Y?`@7arPp_Kve zub4@D%Jz5qu0NbgU>IKJCR;Sdi>)%<8Hy9FptFTBA^cvG$ZKCoL{h>H4MyDWRA*6g z@iE_mcVoo_7XQyHiF#u#*5=wG9iTpG;y`}?D~V#$nN;6;*JG!f5^?n_i9#w7*n-ua z;vg(BY5njkiPn0fHioztHKtGKmbFF3d`3MGVS&Itg=o>(cl#G#`|X`5(miD3WJ;dThh=7wU{PQiXW6n@g<|p(;W8Fm_u&uNDbGPrZ#jfc| zvwCxINy(=y5*ZCYwZ8Y={0f@|JMB6jFzf7l-hTKk>mjjT<{yI( zYQi{4{vIvkAo(HoVCSn}-fY+O9kV7U$=|0B?Lt4WzW3e!p8NiGJ|Ve(j>YBvo&yg5 z%9VC;<_srg2JD9wv!VX^gyi*pBr~jZki3 zmoA)WKRm#!$wBhGH_(T6p*LFJ`)>dFX!3GOa>6D#`S8=)u~zY+ub6fAQ@fQ3*B#bF za*f@5#fRjfyJ;B*m)R~;{rsNKe8sN*t7c6Ol85f05A8xyQbsJnw%tWpbzar$6Md~ZvX7~W!F=Z>B4yaLNwif z=~D;3-GM^yFzf86i(bl`p);+AR}zxX^&xra-L#BN^3eJ0!D$~_zS5#*=v`(_4w8q? zp%3js=UU(UZa-lEYw2Em|0irNUw`KpCSPY4x50tB2pGxxnGN;dN=Uxck7PFO9VEYr zzEtli{qOJW>JKz)a*}K#1Z(bK2gwhvzvGjX%XD4HxP0eZKfQgaRp-22%{u$^HfS(Ah0 zL0j9gLfaiAf9$UZ)hL&LYm@xDU;X!k4)t`2S!e$rEs}>WwH`iCNWR{O%R`sZGB(LW zA7l^izia3wyQcSi^F@_bs3fE7n66rUjY? zdaXJJe`_{0KpY?Qi9mZnZtz)J#wL02IriYtOU8a_*YpRoCI`ubf20rXLVvQp_uYQ& z$t#Z~BoFLiad}|Rzim8Z)G9voYqQRQSKANmevq3k=6}(L_P&WO z%qd5Pes5OqAbE)O)^5)3Lf`EhzIiz{iw53glYHnN2fxm4XkOf`bHIV73F{$Q8P5Nz z56SZ~j6$p7c?I_1=HuRew*4?=*5n|0UY0(z3+1fueYd~(nM0_;9yr1#dFfGCy}XlE zeCVxaodXUuU1B{XUXuCW^dWiZNLt43{Lo7F;MRA(i+YC`mzSC~IY=H_P9NGd9A$m) zyZz;z-a)O4fs@cEje4R$H*m_r6aR07y`l>rn#uK)C+KP>{1yY&D)r;9I7&M?F9uF0 zL;XGPQ0u}CuedHu$%FC1R~*@v8{>kPfBl>(${&5jks092xb784a7Ty6jP4ZA2u%2T zHTM5P@taf^QoDn}T|Ili`xaOTIcPaB2DaJ{A2+de;0!W#f9##Q_&&&76E;c@{(`<# zpTEl{d!ae_W3wg)N)Osz3}!<7%z@IkesWHnl6;}9SS~vC(`koS<5aWGf%jM>51nQ` zyo`|iD<6`F6k5h6d1#D1xT7?FfnAei*5n|0NTm<$LYnox@AgH~6F;XUUuTp2(Ps{p z4X7r}`jlDcz$dIa25+$*l8u1*&-jo$cpEKalRWsv|Hs~!z{ycm|Ia47$?j%zkw8vB zP65g8oIA4tBnL-GLWl{6A_zS*J)0qWF*}*%(B6#4>AW;Mn z0YQw2iYOv@{okwVs;;W8o}TTQ?v1~H{Cq4n)791AdhgY%SMR;5qCf0?!?*9YTe^d_ zBtUMyi~ML;x|{#I>HgPKQ%)w3iEo1n#(nv}zWyCvy@jt+$3AHP*vLLK_L~TqM~npP zxuu2Fu_3pNr$5~NmFbt;EsbR@36NXt#VVcS$B|0-Qq%p%9Q@i(2;?8wRQ};zzj*jL z-e&V(S({^jZ2$N!|M6Lb{DF?jACNjWZn=*9Xji(P|GVk_{Z4=DQUciy7?1tib~CrwRBqwkfU&lBrsW9sp|Sr) z$gMiabe%6i{y2GQ;O}$)VK2~HRt$hJ#>3dYd_*hV}AE&SnHDj2#ZKe(~T{H`jXH&>;-8E~p-O>)MB@wc{zNV08 z3Xsn}Yy1BY$Y~pL=9+s_wj-wXIM!yfP5M@@teY{rtZi2f8AU)Oqz27fqb|Pd0Fqm2cmZMkFqwKSJ*%Dg$p_Vtc^$H1tr&d zkP3Mb{o%47&OO#{X#s0qgiMz=b|rhw(scjNC!IB!K+f5a^YflrWTR`@$l7eSN#DZf zm*yU%a$G~@mOB;5E%(qLo;u>~JV(=VJ8NEm+(Ks|yOKS%fX4XNoxKF|dK>a7Lz&L) z?CO7EZ8m?#{*fzda)(&kTpi^1RmlIMKfJNun>*Moy~mmtAybuZSE70vJ`$Nn_jeA! z25wER(n^}p4Hd_=LD75(HlgG@@w|8CfRuVAG}$T9G`$>>1IsS?OzRL{!&O62MsRO@ z18fcIwQ{(u#mr*1&$-UASGP=HiusWK9!NyTyt5T7N#3Ok*n{TlBWLWMBHXg`8qp8a zjHXfZH?a6F7Mrm^zuyV^BEcVA@2^Pmxo;$$qaUMn)D6~Eqk z3Kr-;Z#^B0GqFIobn6Bz5L+vz%e123xAh_{F2>>uSbPZ!MBaJ@7FS_$4Hnm8aXl93 z6>P~{iiP;w+DKwE~V-CKZ+LAWuxr8g1Bh)V8xZMj=^Ms-2 zz0XUzHz6Ptc7ljPH%<-ZQi@=3c<$_KqZ6$g$WU13xur|FZXz&JIrefXx1$F0VK+Zf zIWkcZZZ|F!>gnuY`zV!f!)_WfHM(I4MVy&$$_+#y+t?h0U~^DKdW0gg;ts9fe`{B& zqajB|IbNuCxmCAUF|&Z}EWkrA*Ccpa5%Q<;(F^xZ6BoW>@kAiQdx|E*n=lo?D`yba z3%r=rH`u{4yXiIwVN)0&AJp)ECZnZbMOmWG zltF4Sjf=!;5eIQn&$R;3>!>U)#V6R;PtJ3Li(T@|b z5$&qsN;YV*@v!6r7h5kYUb*zE{`>&|RUEYtxNM5n`=_`6>hE>uD}a)3xD<*CXDQTO zoK;g3$c1MqP|+1kWo8}(zSQm*oqDjca~^+x=ct>;q6^O2O%H#ykv+4x4??*>r1nul*)DD{mwKdbD(4%?5$NAk zWk#UlllR>p-}|En@3&%0TUU4No#Jhm5P%IAeB}>Q4~3&3pfgrrU;%fNqbGC}`iMs@ zm491?zmd&)Z7-1*u~-B}+e^DV^TcuRN5iFL?_$Fj$zzOpG?4v&4VU8&BxAPWip?A6 z$B?{&XMPO+6P>mVU%>)Bw++`}f$rOe8?d+ui(9ck0c!h(hC!ncAPqz{KCpOFOObSM zb2&1BGJa0Ug!5bmOirFreJ|l-f`Pwu>%&xIM7g6N?XHu@@G5V}Vh_aUa0~;|Jp~GBK_l z3M+_c+Ylc@{Q9ky_~4QBLWlOfb2W)Rc6)fd^lp}Rb_^chjyTLrx5)>vAmu^)ufyYb{xftl5u;QN#V_g&a zYA3EorsP#y7e!suBu934szYBXIg&8M#?8m#Ff2ZX#V4>Zuqa}2G8XHxI1>x>+>ArZ ze%zHx$0ljW3q_BsY zuj}Csb)v1SuHOo>_Z`|yqwt>x=^gh97F)2ugr9MLhoTJ^QfghNN!2Ys%VK7Cd!u^!QZi=y8iF=m#MO z1kstH^{!L*+t)gLe1`Mzap5Jh5wDGGFJ<{?uP#aagovNbRqh}RI1_9I9n0PsX+8Cv zO`PdF9EW$rDiF`Roj=2nc*d>9(_HxxW}IjAD&TY@fn1IlmU3@t?cQHGmy&(j&1@@2 zCOg>b#;t&J2pLq5s8&d#&CEqNVkmci2E{jkQALC+B>5HNTyK2$hgYCYKu_FzbaK=0 zUqVu8{KwmC{l|o^;D8G#=A`!q>kX?8}ewNe4bZ`Pnh;)#}j`4~p9437^ zGMl~nadM>o3OX(1rBa||2KZ-ex9G?)%hUJ{#GsRz zrAr>Gdrq~JJMKpJcnP1|Pzo^nk_nK9u^oa4dl}k+?7xu6kHNnxjO-BPR5Y+Zf5n$K z`b;FNyJ)Ls4-ia9Br6H#G&33k-vmn_sHtQslGZIho%=n!54j=2fQ4es5PC_;WEQgF zrjzZJ`G_{1?D(@bpab@J?l{BYtqSBpM-=m>nG2Yvhidq>icNI=rYd6 zf9=k5UhL#4Wm{X9?6k7+tAw;NG>~Y17~#c#S7O1r<6<)-DH$Hmpv3K50{&HRmvJ>+NEF!ItodDKcd8BYN$Y+C*WO?Di zQpybbW}Ob&IUzw7JM^P+WOvI+poeWOn@C+Kv@ss;EeI&-ldb3M6*3$WP_b)-dEkc$ zYpGnS4o*P4chUzv2vrg2f?%Z4fk^ZvR0Zs;kbo(-@HqyF#=o!!>s`eW!$h#ISp&n5 zDtZ!o+fFr5YoWLt#PcW)C*rZ}pED;uN&ZqM8cgC0#1}7!gCM=$zK5W%AC|y)J0XI; zg;j*(?Tz?dMQ=oyeDrin1bsoPLO4fYuiJb&KP(`28;OAgqFg|GxGusJ zd@mnH(AN(OoT<{85vFvDUX49Q9k^EK)%Y*Ees~pGv_(@JcME4T(Kag z)-5ZaZk`6-k5SzF5sHZ=ct6}Q4%ZLz{CD3_FQml|zO(M==gxvZY(K~Z>j=2e?`;*O zg529mf2eS8D|SHV{Fs0{k=(c2P1xa%U#&cj`$p=zN5M9lMR$)Y6VdTgO*aL93EB17 z`fqXzDs*!ky+~ZK>Bfy|U-0(1D8ia_0)D6HBHMYOZbl3LPEnElEUy5MpV`IfGGJhB zf5FyxsGy@mj^!P&$Ib|?>jiGM7|OmH_aHImFzJ=xwnZCi6WpXS0*4417k6IjW-0~} zqeVFo^n&+lEwI#435EAEEs!$`RBCvx&nD2bX-AZ0o(r=;0)iS+IaXwKPpx99nxd@C zcU_8+Lj;AYZd?i^0Yjya$Kop#arRnu1+o}*5TdHsaVRn?uCvxYbNh)nL0jpWQ{HGK zr>Se~DSm>VDq7%J3n*btp4C|dW|g|G0{r3$egeK~OeY>{sr#^{0a51KmO?F#K9E5Q zlngv1Pi>=)lHLkJFKIx`bkYGsDz1bG=$r@#3Nei03MRx8{2Uk@_H;SIPw-o0FKsMQ zXL1zESvc-?wxbt_YnzFU)^*4xHcQ34?q^LgH%lOp{4pv5BYAqCguvUh4&)d#5rel` zO>b}t#L%lJ6)H zpeoZjaM={i=1o(Y61wmNDEO`A^gc>KP52@3O*eA*L5rhx%Pr5&C_>0#%=wHa>D)Ve*Paj)pBd< zjvY3bP`1)6pMLE2wa}emrdhrKuZ((uY+zB(?^|}mCod#}JEZgbCS0M;Hv}6(cp0BG zK2Uz;iStOBC7$0$SzpEZegC`R_(Af%Gux7%-?xaYDpt^JZ5D-KavadQOuy7eCkk64 zS}DUUXo8zD*-;u=!1mgIYdlKB8mnTb91A^QvmH3u8jjM?fJU*{w#5#J5X!nv*kZ@d zyZFJTWs}L+RAQs($q6`UVQC2O;7MTTT}T7JLp^>>LyO4kW;!38?V%E}TLJx;vm%n%>UROzhYP;k*k8V>PA~ z53AIDAbW>ZN}7#^VMTX%U_}QaAf`Hk8su^$4O5vBAJ!%wO>jj=marmDurozN6o=g{ zoOhuUdq%`ic8Ge0SX6p$GsZ{27-vD2yY6|&)ff*X-GYkq3aanC4e>xM6$OKLpe2yQ z0%R1P2KYpJ?Yf&u7Xq_9jqgAVItQ5?hIidF5bSUZlT&x2d%T3tjXMFxD;Y!&V><*9 z_A;~sNfnaFU*#5&5ad)eu+O{d=BUrmOWj3VHAP9}Lu+I(qaoz;E+{{Nk>p+%zNxNt z%i|B7w|qp;yO5C$HvqH$t@~*MF!9C5Z-n{Z-sds#L`L~@gV}YX3BXv?7I$}8KY0dW zCSo$4dk|*giOGRq+gB)UZC$bhF%x(CzY>UXMH5i0Yaktm?mumh6lQm77DK%r^} zGUeP0C-*dthCNv;mB$Su^5tQSdv}+EH@&x|c!G8dB^0PR`r??U1|Cr-D<(Mu^_Co5 z)d}(-%CEN{BIsS^G8%7>L?A&6H|lu%Ca&d%x-K{vDl0v`6oF)CRv?|jUs3mjluD94 z-*wm3G#AWn12X7iC!`_Z;mrtD{Js1dbzh`c;%9YX#872i^mW81u6#-7>+pFB#u@dV z1YGz1W6uACvAgAt0sMW{$m0d)mATnEW- zo=!CB?w8*2r5oP>6Gd>4{D_$db-jbj-kL8uNZh-J>8h5>@^KW#L|jx>aGU(7@M6#3 z`B51E9UT>%Dd!=Jybr^;W#d_Mu%;&0V7AV&pr&@#{Uj->9`s%XlG+Q~uj={;=%H@3h@IRmKVqZ;)rcXh$(rSh)toP^VFeCuF#jBJkzB#Sp?L>((-NG@&Kf4r)l^ zu(9E$K1NOpGKr;H0?&l$f{``8^~Bs}caMPG%`!MQ{Hg07L^?EfcOXe$qI7x(P69Da zWC-5&b|C3@5(rOQd(ym$MsDz&@{EfFV!x?Ga@g2`93U-y)!n{s6YIH+p+HWn5I^i? zR|hY=UN&_gyE0`GRAo;GFQK9>z1yR2e_I#I0A25OVn*GCS~WaLpg?CiQ0x~%EgGJXfDJb!anzV4PwGMv_dU_FFLciiNlfZt zbPp)cNeoHIU2=pWJTo>Y^&o3pkIk6W^Q}8Ci}TRK*3}_9#4u?eD_`@&>&_hh!5O3T zK!eeF?ZFveJ1%-5JZ-o%q=PdiEmNl+f(;>92WQ0BUGqtHaK=Q7{Z*WtVQ#qVN^Dva zUE%kXS*=-{2w1>^NpnE!HN77Ioh*EzB<6oZ7jR=IyQ54G*>((6ad<}EGcZ*BEI0;S zyX9B`Vm}XIr2j%N3S1^Vg{ixn+7&h8+qPp5h!9GgMRR<{_BWq7iwKEky%%(V!%`F8 ztG>XtvCD(MngcWfF#*x zidK0T{PMKO1F`U&gmPHpbrEG}VVx4=HP&yQ5u3@C?@gV& z!}Yg)Y%Y)3Y<-;)qBcMMKNGe2yE-9(jFGSsi`ras?0qSA%0_Gdz(9YcBQ_rY(x(r= z1~t9{z7ysMXv6J%jeyp3dXIr2oUef$6T-gO1vp%T?S|1ow%rF+oU9SnxsQf&vWC(v z!fSBMgcUd{Nt^#%zy!o|w(hmBe?wB4~?WZsql3VJUTcZ22-jnA&1>6!o42DgR7D3wcpUU}Lj)4waU+_;8BzCh2$fS7Z26h*x*=<-4lPm9 z8dqN+0bLycuLRQYgx$+Y5%eiKHV*+w6{qcoC()wA;;yf}slAHL=NTE{I1uFHDEeiq zpIIq^pMxj+GK9g|Fgyg$ z##xLL0UZM(dNy48h7Jy7hL1xrCZC07lxt?{tr{|m8&#|?4(e`>wJ`maBeH_N# z8-Do|*3>uwX0U_-uHw{O%}{d&NP3_$V2Io4Q#oMb0|cE0Q4YP?j@Z72n@8&3MN*K#TZ z5%yX~1+uhMh)~r6Dg-$dS5AXduDBK_Vxn>zA6@&ciBG%OOOqY;5)mkH;Rh7+l|88} zw^DB+O;b&zYD^=ZQCasvss^p8;Xw`vQ}8ny*8O-%7YHTYvJSI317ad`$jhM*7a|0{ z?zZ?KhC5uK1is(Yf&w891%bm(E=Q&_Djvb&m6muj>G|Bq#xj&1AgXPK^9UHuEM4+@ zC%!a`h=#^+&emI0(CLc;K;r1$Mspz6hVXrFgV_j{0^Y{*-zpl*0W-+cP!7Zxvl#^B zaTv)b2g?z61G$CcavLru1`Ew24KiR+^)iYBN!8^fuQK^DV0jdc;qAZqp>Cgfk98Me z)qW#>dWW&V41mDTWs}1M$U`AT2~o6ex$i@n&r2s$gkqHtI?-%L8`W^b0Z;$s<%4zM zfK3O^{66%}4hL+vE2DToc}rqAKcAas{OP6uC|JKqK!M*>A zmDG5}ZV&o6isDbu`_X^W9z`*0YD7@Effmos{4$qa_b|0^}atnoJp6ja1=4}WDRO&kG}BKxrWT5h7kPPc&-XfTSw^jO!0BF?x+B16p;-v$_=cC^=7*nBg>` zsxh5-@T2a-wu0$IRy1NC7$w7sz*ylA9fW|G$z1oE0EiAnKx;7v3c@7o6bV%$3q{Wk#vpTq zNm!3~pv3yYJ5=%`v`$=iNNo3`cMkjQ(L7YLHFd`hmuz?b|Cw;fo$7o8+!>AW92PD) z>Yd9v*%=VyK2}`SU-1x#`@ebU6WF3AP_iRi*po)wPJsxB;rb=MA)Eq1Pzf;xPG zv75Ep*Mhd!{Z*U;5!zV?$~h2f$Cx4v?N9;f-~~4{0r8!!U}bMWCB8HA1T;@L0Ev!) zYH)>hoQQH3gvvLKyI^Yf_n{`vW?`6kXpCA_4uJn!M8Dr`!+%` zss!JL3&i2NIac43*Sa|_i!FT{%n;knF(t!zab+;P5ZxSZokNcY;fIgoA*N)|ta5dJ zOv!9_)AfDa`LXqPQgDg9i>&cJAY%RKk3NhwH4cKAP6vUSNEuMtp}cBf2>_T{;TU-U z9gm3kki#v&pxQoxD$a-q=)?erlq-hbO@N8S1 z0TDu9oso>4$g;?PZa$c(Va@6+kl+Z4fnXCFaF%Dq)kPqIA{B)9dMuDwvjW3=A(pR5 zsxbKFxdIC;=T#6I-O{V>**0jhD-4?Ny5^c7*K`|Ef$YYTKkao|L>PkXwY&;s&8d>1 zs&!Qu(kd>fzH`Y3U&Kk-%A9=r!rL!JS<%=}+d1tgB2{qMKtMT%@&UpxnjQgbn&nGg_|t=2t?697Wd#isTQa=^ z9Dx`gA^>kII*_zC0fM&$eS1Xz3a>|EW>9`HFAu4#h?h!UzJa;f4;58GP(% zfNmn2=OM#iM$)#v6Pf$&MfPv-*OccO&2OsrtV($R?ZonntP5Qg46y=0$lk zJJdbr=vaHSJ+@aY8r%DXL}%19g_8EA;byDjt$!n3v&FlC^!JUUrtQc>3IA1{wxbGD z=%E=67c7XKHw}8#_7Y(#>F9@vH;J3z8wC7ShxqW6|c-nC3 z06uQ`A{3E%mOpLi|v}6`MECkCDHw;?0l22iIWn6)f;b$A;^$xE_leu(%0} zTd~*(#S{|th{#ML09m5t_LqG3Kz1(0cp^bn987UySLqgnrf~=GOSec{EA%H*1hkaX zI|k6-VyQwaTbP(u03VO0U>9!b;M$&oHq1?}d^SbhQz}%YE_e!Dy5v|IVjub86qf{} zfn=gnkgkVQP!%Pz0mW$B);SF7?g?-t5xj0E>soVGp zHW0>udZe?3Bh+3C$Uu@aRX$X?*)AN(6&I6V{a*X&I9XfamVX`m$1_o8H1^e0DcoYQ znCa_)7IyL!F9%#o!X7;A0hm-X#gL1Iuo_c}2VLquek+(#dW$5?qq0jH<1}D~vUq{K zKgFFCVQtzWe6o(Ka7PnXG>UsrL>YJ3*yYG9Mo!V3umqkl@`8~yzV*c1W_N?e3ft~x zA(;4X7nnpkgvB|Nmf#{FmOA#fxdSmx!~s%`y&cGz5E2M)Tl<)bws!EG^0c!9vENi8 zIc)5@CnfMGArnz|`?^g;=Qf6d3z0E^9(Hx`!s}&I2a+@-(!NT2I(P{cZRrb+{Ood{ zftk7swQ6`uff>=PV46Sh)NEa7Mg`Kk<*{pCKMZ3te2+&c_6wmFJ->oT8HiVpX$+df z4bQxM@J&s+bG}=id9)8^e0yid)Uz4gHw0s!u>g!Quv)hAAvd1w=de2I8Go62Hd-sL zyEvwv-GBSZ13dJyb#=&&txTOyApReStxR>8Z@?cbwgM+g3ONI78zSr0lp+Vfy13n- zsk!at{{Ei9_F~>N+Ph0ezQ=4IDD|IY=F088{du#e{ZR7b;r;oc9urEl2Zkg5Z}h0h z*rkz)z3UeY6?^iB6no6&MtK!V^>#}mZN2O1d+fJXQq}scXQ;c_M+Ck>`1xqFG+68> z;{s|!3-p`Ij9wDngx@Chu3ypLU#3od)-rr;T<`iLjltDeleW5!uy*QYY)~B+$e^<5 zMa;5tq;W2cB=SMqj)t_)s7Pxxp)9fz6=Rm#7sF3r)0B+T`sIW!<;b4>rEbOxW1!eR zKu_Jx00EU+R@{EbQ+c=><1(_87S()=Rr`fVisqj2__88nc9SUToz0bN!4J81Ca^P~zSE zfdN)&bh15$BdVDR@{&3Vvb~&Wgc$PWYe@-t$|%QkE$wiSIbinX&Awa_VwaKe^busO z^=5laUe)@yC2vPU&2nTrsVd0?g|ls?9~TW7Yt5qC3jNi3VK>bS5}U9=&C)f+vB@%OwczNOEczcW8vVTv(Wk#!_~mAWM-qHl5QJJb zdRg>o6%JlzyY$d*p_TNX=%{jpvV#1BDTgwshVAV-2luThmiqg835zD#zb`Y*yqSl+ zqt;J-U~7P`TiAnvgh6TCf5fYbM1;M(YTI3*{ml;PzRiiUPlfgzjHSa^Z4rm0#mK$2 zt?>#{Pxh=_*Y1a&hJqp}NAy$?s@Sd3ajo{jRs!XSo+Ne+sTUvC_QI}gf0&Lw?T0xx z^z_rK4}E*$s4hqL)uI#YNS)DtUaW3+hmKjbJF-eBNA$ui*RtExb6ObbZVd`mqz>uj zLa1$jTR&PPE#W2_QYE`Zs!DRJ%-rg7WJkgY@(*G3A8z!44T?4d6-(i{B@=cHs+ma* zKA`NULi>W)+s|j)-?xR+eoRL;XxZ3R&t>%qNTxHsW4`Gs2sIm=?JE7E zld7{C=?ql^&WCajEb(&mfWvmJz_3zH=KKyDZVF~MHnZwhppcJC5t%jeT;;`ju6)rN zV48*qoixH>wIfr?8b+FCIISvFVbs!ynDsSA00li&loENB7dXYJm19+13QIp`n_53{ ztETq`i@I7CPp7Yb%c@dzJuP)O>WJtb2DN!mhqXiFlkCyjG$Jq4b` zKJ5#HxYB6UR+GsrsSj;^PVg$KGSW+9+-_Cr5?vTu;%nC;{g4Kq{Y(aLnI%-^+LbtB zx91EdwQ(H)7{?X3F05s>`3RB*EkPv>A!jrCF(eH{u^B=ir#M)x$P}^+Gl4=@HBKY< z8jMO#k+RxgJy+-?X;=|BtFNb&Xq?h9A~hsER!37*oP%6yDk!Dl?(zzuv}8`YRFsJ> zsb!ZpIQ^@t%vd4Gj@Yu&IZ1ZJdQRC9pUT~kBtxvmvAfq`fF;=x+hDSw0C#0MtIuUe zQvX)VmR!0^k5xhWsH7(3rU<=sqGGiqQ%sui<%T%TD%D|B(}`T=F()lFR zNK>KkQ0{>w%|a~>+qDA2Dp@;13yl2=W;Zso>U^9@gM+p!4Kqzc`cWoLi&8^`P8#9R zjxlKsB{jooRiO%_mPW)X4=~C2kv{97*hD@VkGcP&1sLMUqZ#`Q` zolZ>htY1ZEh&>KjOo+dXRx9!6N?%|SXtibANm4CFf2)?IL!7NC$S5hC)o9QOkPQy? znlwduez{yKM=Z5bGL5q6<5>tMicu~?z;0!(WSV`jy3O)cQ{ol z)E7|+wts~;ED0iCut{3s1LtH3cq*VXJn8JlIJiM_L?m@_32rv8n*i4UxCL`R;vu3Q2? z-||vF5ppb#IPUJu<(A3KCRjcbt+_sSbnd?2sxoG7Ie4 zL?bqIVq<;RR+TzIT^tqb3$(AUHtQHQr7O10c_Q;nz-`G6_4hd2k~$+R2D=fV2NkL? z*s^%ot#GU|!$<{1fT$59p|xsAcr~4JicrN$46~+Nsu0P8UNjdpVnkLe#$?@TAJ>tbg+8(6`R{Bx?w< zvese}Do8z&*)7x(x>2bP!!GM1p&brbmOWZSkt^9^lB!6c<+)L+C%~>;iviblPL-(^ zvS3*SNy9Ah50b9SMo*7mkh6uZ^NApMY?&=pvcASLzpQ86>|kkL>hDssG#yc>!W*S4 z5$lOPk(48}xZHysjkS#ODtq_(L?O0LCQm--_}lR{YUvYwXx)iqEzaLU_Y0zQ*Ghal>JGnnl$w| z<#qHDO{&Umi4x9|xa6;iHKZ=+J}g$YKTJofwprc{I`vhmW4EW{s4$xJqd=%2bwf7_ zgu3=u=^P*q9r2~Rn5-l3Jf}=oYe#% z4y4wXI27Sid^BiSN0&e3Q@UyjFo7Am+5$eR$X(mzFzHB8>RBuk$iTm*0227Ys|YCQ zSdv@kpBCf=-&I&e7bg5w>#6d2feS(t0ssY{$|QkGwi?oKi7q+_7;QZT7S*@z)dhgU z7}vJUsU?t7sAzGD&Sc656;Q(1up1DN2<)(*^Un)}Bu^D?QS;OWpl27g8XUC*5GqKO zVZs0qX95k&=sJ{q%cZ75AG%Vk^n!p>;IK>UI?72^r6r}~vkEwYa$+L_B7t&Z4Gu#X zD%Nv_g~C{nD=1I|S(EDtV4QGOMhbE-Ookdh3Uiyjq5_W^Y=oZr`T|Trn)G!!^@PD8 z)^yHo!czs9zyP6=fJPW%LIn;%U@(2G@K2ax2X4ct&0o5c6hAlXqPXzw6WxZ6%0>TVM>lvSU*pg8FU22ws7pm|^ zsbOn9v2`F@);k_Z&C<2ISckVOJrV~eTh?1|iI1eVsqU9+@z$mO2!f+fS$HC~O$`96 zZAl{7zErj=8RPf|(}*hUnYOmu4wOvdM&ey5x!9^!EsGXXE$b1LOlVM8ZLo!jRmCC% zt76f>dPpq>{=W54X@P1lsKkXvpoZ0uB?m$s>j51Y;>$|wymx{%V!g|ICp=Q#<{hwQ z&k4?AcgeIXSzn+^7tq;Hln+?Ewra@KxoBI41B>wQY|3-Gh#LC8UKv8!C#kwq|hHb^GSlKZRIBWB7Gl5fa+8<;@RBH%d zp@x9-D~wY7Ynrw!!QfSxa0#EYs@RYiUz~LWP}IDWKq(`Ff0Nn}R#lx+;Wed3bv12} zk_70g3RtPxpaS4urDlWr*!~pLX@nm9Q$qV}(90DZ>~XZCGDngY{E&k+5{HEv0vJhJ zgend=60vQCs2f5Ov9(ogYSBf4MNMs80jxxNyE12uL^Aui{WXbXb_L-R)M$6$agf8= zlFA;5_~cs-{z$`1tReuChJ#qg0ZAgII2-7AMBOA-KV2%@bfe4l%C!Z|5^==FIj1Dz zh&AkQO2iSX2p^J&Bi3;cN7tIlF-enItvPtc=0P%gmSkC}j`V5Q z9traeTU==xwe@s4LY)^CD@mWGbFEu_-f7orqE2Bc*P7PEYSQ5xCMw7$X(9 zF4U5~Pp31@_a!N3ZiX_RHdc{)yU{}#lLjS3d0wjW#lu`5uM9xHJ9u^&=P zi#>F_OP4M9*cJi%WoiuYr;fMn=OTCP_o+I=_x1W&?7Ki-y8)^&u>pygc7+2d9ZN>v zAf9+;oqPlQ;i?CZPFT*8srySxP;I~AzAufZ{fGOuXk3&dA06)NG8M~_VfS95BHOJ1 z`Q{S!kYWd!>&TkWEFHpVW*xqx?{lShq|ri?`8+?#CAl1#tEH0TgZvHYb97gN=jUwU zFGutu;rO2Yiu6Icr@`}s;&^f6qvMm}OVUT_4hPSV3PY?MsgjSvJJKhqx$5#sE;C&B zQlrYfx-_h)QRQA)9z}G%a<8op8ZYF^7;$Il%2lOe-)c}a&hEO4o%oW}X?GrqugG0b zxDE~R9hCsp^++Lu@+r^{^Gmr^#WkiSrH5n0-=QoN4Oi7$l9(w}ac_VRe}`mO@s9LK zg*@)B+ZwqTpErLI@ef&@pINag;xH71DMB0pgG`x2CjL&gn?D2j*q!D2Tcftly0Em=gD z)Y^mu$d}v*LRgOYk{h7~2~MZnxn-~`bPf2#vxBG=iQLjiraeViR@8idFG?TJ47&|J z9V_alB5p3G4s}!AYZB(+5DY)e5vPXHSzDOP5k-P4Lbl(NFsFz6X%2cgZ_1-)!7#ol zz9|9k8h#@j`fwN}jE-_-IFc>AC;=aiWYab{ZbeR{Wgs1pGz!ISHfumCa#H1c5^7}< zsj>-sEvrb2_xrrlidL-pP5ax58BnPOK_4h{RaI|EBvaN}RW)FP9tN)^T`~+t3Gdn8 zRkUX%)V4}-XwT|ilgOp4*{W;7#;uHL&)2zp4TI05!`6$wzAS1phc>AMS$t8V+Az?I zZP@4)byNiiPPt*I731%2w6`6{6n-jgUdjDaFFVH0i`8ck8-!_a8boA$Tq z2@XRL2p~JO=J&v{tTf4k|0cLw*)gTMXA()M!&Irp**%TSxcsT0Dru0!`9x}5!6zsm zcE|*8KvXQ$v8{O|HBQ~caxD&Ac_@wp7T4f!iVvkP%$9pE3$%m!g2XteFFcdJpip08 zJv-fajnPxg!+|X;X%t9eGIc|_*N{F&V_(|JoNhakE-Q5ew$ree+jHr2JG(W-Kem&u zhA0R$%&C0Mt{{ExL#~bS?`f-u+-KQ2$`{2d(l_ZK(AVZ))zU!_2$nyjG$YiIzNzJ+ zA~+P++EP(E<_AvF?O3$ap-5{*>ja-dWZJ|_%ur4q$W+7UP? zL!txUuA@gJ)RH(Ow?)HPq%C>iD!2sjBFW{(1X@X?mfBjkj$Fh7mzY=#TWT7mK8V$j zxGz3yA(ym_IdC4i9;t0@GyHcF{J#NiT-q-u-1g#i;}Qngwf8Nx9UIxHcfIv}S_7Bv zaJSddMyUwre-9pucOj8j2<8nhjm(7V5QZ+m89jpw*3;9XhDtA`)iFRXChDN~Ms<*+f%0IC}~OeH*`1T-Xq!o(oL#UQed-(mN$I^N<#ucRY) z`Ow>^;2NJu1TXW6MAiZPU2XUa`+IsINdYv(;O;9SFm4m5lX+yOaMcEe@7nxM}~#{`YfZo&^GbGSXn+_dC`N z43#1iKS^lZUhHqj3)J@8_|T_j{4?4#Y83Ep0EjdSs!m%*XfmT5Sy@l95ic);uQa@D z7wmg=zii6>gz^`hP@q$*q!tdRX$M0_LKf~R1L1;e=mZeGlF!^6#z( zKlS?c46ytAT#-ztNP2YGX@Yxc2jJ;v0vP z7MJC&nscl2Rr(?foPmloJ+ug^EZGjtw66V4=s4aKY%zjp3^O~_?R}wjDO5CM1C=eF zHW@i}`oqL?QeUwG7~to$Gb=m~nU$!~E20?;nRFPeu>pZ(pB^RvW_Vf`^t7+*?IB>w zkxA+(a2ttzVdC|;7CThAFPQ@4G=p#`RKl>s2W(l=Knhj32kB)!HlQUPho1Hy)bFQK z{oc@Y#u08(RSb}Ln9fI{F5ZfLbvQ7*HF{mIIalU8n;zb({0^I)8u^AI~0T-dO93w_EOM6&Rm=iaL+u={I5J&gd?&JmAvfv&p&jr zo2Zxpib}pZ!#YT5wIF!w-hAM6@YcJ}SJb<~bIMca205fDr*!(Z95`#-bS>I3hq#TL zT;Q-g6m0M!>!n;z3Z4X2Dc0cS(xFtlE<7VjmFfYnZ2ZjYs#9b$ijL(JiM+D${9Rm} zB6KysgC8dfv0Z6Ea+7ZqmYM=4@cx&Y#<(7l+*2skb2RVb`t&QUqwQ(5y^3=pZ4sd}`4kyN% z5E$g9fzi_0>^6#mT;?!>cqrX4gx5>q2I(u{WT?ux4nsmkMGGNggGNaq9*R=ZFz4fs zfB8y9UTA1?N%8nEK8xaHMHBz>@wls}BS_=R0(>Nxt==j+NW)nI;;p8GkjxtpK;u%gI$K0}c1EL>uEE9M~QeTu+aBM0eKBpAF^ z@r4zw=D^wHse^;G+Zl-*$~VZUI{9cNt$T{wn8^lc#S>H>>Nap`_0qFJE_W#bs#36l zi=?Vq8!jl_e9Zfb*SX;mRJE4Z`OQ1#Z5S9JnTicx0Ppj}$h0%RP>zg>rRZDslbMle z?>`Dp;++HdsNr&KWg&`O!xfu1&X1A5t{TE$W6;nTd~gjGU%}#9EUv@idMs|h;wJjt z$g(3>x02T*8jB%FMbZm-?jx)3DT0yJ_XLBtzJF}Q^gRXWm8}=#;9?{SRo|13R?_#E zjD)@?s76rV)9-ua+Xbob83200PsKqIxJZin9yBUd>hp*uer~sCuDcYq?DJT>Knn8U z7oeQiC#eqqrIdJ&bzUZQUV%E12>d%j8+#4@HM$&WNRX%aFUVzYpei5#6@h<6ttPP* zOxlaL!r(XRIe^pIqAp z-J4`>`--fC&94Ti>t5J@br9yQSmX0ZSUHfEpeLV|d(v(6_n1YNY~JBNA3Zx%?8$e) zA?IeP*UT4TTj^j&t_RWZtpNywQjE)GaH*Usq+$8er zPxGrboQyv{M;_t2tPy3X@r5^!=(`&JuxJZC4Qg)gfkfyI7-v1WzrpUwrgJXY^WOy2 zOCsJ6?!G0B_+D1={`t9ckCE^Or4|U@l|y}np8mCFNddj<@8Vw|$X*jcADlkyRRsMT z74$7vHoYr>4$62YpbsC+DRB3_{I>H6rr(Kh|M!1eN(lG&D%>ScUNBpN8z=e&D z#WiGqqk{U`Ki{z(f%Yd6bzJ@V-9_$L{F??3+6osJ{0@uv^y7=C-qlYb}m{v|dsWzTuv!%F{= zn`nx>_Q=p~tcfP#RB7Dw`nx-S2kSL8icP%y&EwC+AIB(7jJ@pW`7OMOW{RSG$rGoM zCdP?Poc?kS4gIF^1<%Zr4CO;f}s{`uQWZp9|HCr#jP zFWSVkQO~bDn>R6?qByo?TpOu3OKf8FAs2oYo7j;&+KDyM`2Mbmr|#uVSSoSz(_b!; zdb^5EynETb-^V6)Cy(}EO*HNKv-cK~H4g5tYa%|Y#!bK9@Ugc^y?w+c9ynn~7ullM)ImG)yLkGuq+VQXVn*zZ(bz;%X(E+>_R+ucCP*-(aZ}F| zH@!mYb%{;%9CDU{P3%V=*&W&c+voN+^Ck|UC?ZcZ6VYm#CpK}y`rn+0O)MZyEQCKP zM-Dpe#9!~jn>d&@@$Ln?w3B*^#3m*zyaTuFHZ3NPmhdK)4z!&c$N!Oh zziGMH#6gesd=r~kL7G^}n>g|_PhE5`Z{jG5;<m()ak(NrFN z$Amq36GOC#W4?CmUZjb2B8peO^w%@+l~c$gp@~r+e(50I1aZ$cZu;CYSAUe$`;6E` z(>q6@Mb~r&d4#Hi%Eeh%@AVIq5-Q+lQxr?)-gF$PcaGS^o{w)tO`JDw z`?DV7O`K1g$X~hdH%Sv0iA~(HQ}+UF;$rgX65hn68`>5hz?=92ZQ{+VeoVgK^gm(~ zOAo&hM^n?~qzPe+?Araa!+8@|SSU9CoHF%lv58&YdI1g8rfWzOm%yKt7MJdR>DjmN zCcZ+Oh(GqD50QG;i%qP#?T=Axf^y_W-o#DCU(URnH*qs(0lbhkqrk`T*vvKeIl&Fpfn3t!@hP1V(xg%%f zR)NXOPuU%u6YD6z{%ZJdd#ocj1Pg^;Vki{L>-+n1CD_nEC*B^1jjM)H>c}SIsjkk> zq?t+^sZ>`ip6SZwQ=LXMm5g_0aBHpYjX^}ulWqZ;4I_dEH~2CupBoQ|>z7c>I1~zN zZ#RSaxeOqpY7fBB0=6 zi|!$#ly5JuEAw?0!clgfhQzLcp)8zoBY|nU{}Z46*waKyNDC6g0! zM1lNa%pu?YG~@JXeu!G^D-`?S^qt)LT#vb?Xs#WA+ZRiqTVUfm(I957GoLk5xoAAu z8I5O>ow-gUUP#74m84Uhg`}!M-ez#l85uaPDgLM8&HpoX%G#O_m4Ogt?V(Q$)iU2 zljxC#jl1vv!2d92D`^_lX+v}d^%(2n_$Hz|VnlZoVug4*Z{)gi1}F_P4R%K~nlTH8 zkxr#z1<2f$tdB8c83ZM(CrAix`eMvDpw5hLC=`?9(|)+@k360_Ldlv7l1^MN{9x26 z|7Ltz8y+n@bb*q(8zd!M$G@^CFHj6R+u^3hzuij)_H=Q~|KMM{-iu>?CV4cAjrlRN zo0{ixFTO890(W1@D6NM9pR|@6iF`brF66T5R5qPVrW5f(Iu}o5QW+x(%Z<*gI^fBw z2`w;Rg5=}-uA_Z79PMkJqurM#@&U|qs4Jf4>V(S&5I)ZTQI33^jdNd;?c?JfgIvis z3XBG>Bm87P`pyR(v{U-a^JABiF&q_#_x>l`wI2>|;yZ0Z?;@Gf$0RntW*))#=WBT9 zO}x$z^3B_EHGtlPLNb~%vr!`#?@H!l`OZSrOk~Z@q|ue{D#YRib$Ao!tncCNN4jAP*YtnP#X&BT zV~J!k5sf7}Q~AzhHs6&n6J4E&F2@{BcbNbRUxu-76s|-4V>r|=cMf%5t25v5JO{k5 zRhDl!eAwSQcj8%W*!!|=d_(XU{Jz{BzQMSv0AGfve;7JNaEI|Uo##I#DuO51?)+y| z1SBHYv=X%eaRD9~{po5FNA*3==HLun2rq!Mb`D>`vl%}H?msi0H1mm6KAy}a3Yn}C zPk?b>$e2kpmr!T?9Fr}79^P7zxGDr(!_T9ZcQ*el!LFSr6xeG3c_EQt`@=8E(TtE{itsdYoRPEiFL>IVPJaMe*_Z3kdl{=cyHx!##s#7*`0R-y2Q0DFC;8P0lrO z%RP4JFShEFH?C^Hm%q_3MYI~=&efOPNHhRRU}V`b^NN!&cVx_kdp48P@OX%NnThr10H_V=$Ynv0FnoHb}CSiXKU7E8v=Le4a@IistPOXRZAY_1E; zhOT(3Gp$+*mojzaYZ|T$2?4iJ~EFE{qljgZz6kM z(PCFN4OEA{8*YR%=Oo*4#eflncs32bgwAL_+F3BWqGr}eM6*UZ7Vpf1F6eR$`bU{0 z`J&vgzwSERzm3EFx6a}2OTdQ>%X6SBXMG058$QGfL%W^87~^X-Icy4e3~pc3(y&3e z4r^ZvwBdhVH<$19#WHmk{#cyLpZ)MNn7%TGWFe3F2^-L3o;{+c^*@YrzJh{Tqpy$T z2PWHNR*Es?0-EtyG~XHPj2eX)r1<2r5I)GpW9d{Z;|L1=jD6pqMjrn6T?aL86P@v% zb5Q$Q9{C`Q=dkt_^Y;OS59~J{JdA7>Kz;Aa7wO~U9z)w#Y|94>*TL;exA*~|8{XHw zvu8hD`cXHSR$6q#f+G`vVV&Wa9>^{UkF@>_}f66nPZ(p+?V^&7c|d7t{iGu z-Q4X93LoZAKHPE(W0EgNmaory40K->o-ZJ-L*19I@drUS*njlUH_s!3UE17QxO#hZ zw4qe%6l;A}10?5UxrFQOaidgEIlo?It)A3j~)fLSa zx}y1b)=0+Vxn#DGFip5DPRiXK+sL5!%F3<{irerXi>sQM)11TK*Y2j;Fna0%U-DlY zCaw_nJ-_=^#y?-NkJ@l}Xa-+CmD&)wst8{bM~zr?y5h^9JnRV66=TU(akh}Z?U_v| z@?)owM}n^S%hCJHXAG`cS1d9OxEh$``BPm1(Z4*XhEyS*h^M=f(M}_lNn~@Wm}z9P zF-O|(*qIDU&AMXvP+WBdZk3<;;Q(~S@G%CjD~6AW>x#n~KSK85;u@i5T`_zdLFhz0jzxR%{ZDd_}^r7>Y zLn;yI2uqS-M{>f-Ax;*u8Tfw^))J6T7|rC;sdT2RE8Z3DN~AiY>W<{GJO=GgSJVW> zRaf9~Dl^kiDBgd6c12AX1JV^WVdA=C58jk58(!xu?G=daWK;rV-Gp>vJb{H2K!p>XSYh&P$MX=FK+wv>Ez%Rv@Lu^?`s6&p)h=@uo@w`Y7AdFk+p)+sf-WCpGvkY zj6D`r1fDF!)W)P)tN(_-9gk|G=}{=ic`A)BO#1jg=Q6c%xtv*3+W~^>23HsRdiu%w z1omBZ=uQz7&lH?PI8LuwEDZIK6U$W3#)%B+^;;cMSCw-j(0b-EP$&k6?Y0y zab`CZii*2*WbwM`Grpwul_^<2dUC}zZsG}ifA9q(OEV8Gb^gerb5%*c4j-!@C$$M) zx82&%L6pq7STg-{-?Rn)3;!HT!b?p!vaJNK<8M#$^P_z2NbD{a@@B3d{lRvYR}Kz% ziN&+9N-GpH`E<@mW-|#hX~a@pX#=vtRb6u-(>1;_FZ@Ap)hm|(b!M)GLeVR}>}`M8 zJave#)E$3VxW0I>xcVH%Cts;M{=V;_8+><5b)MkpLvf9VP}Fpukky>IyT-Hda- z^kOY^@z4mqBDA&Oan%dHX0w`*=(NM@sVQ{XLC%I^+Tq4O{s2!p9{UYdJLLcR`ga&> zeWkvUlWNHc@Z!-inM6F6grj0Ium(wYW-}Q$k+!Q7&XF;2L1G%JN$?=U;A^*sPYkX) z0Rv?-FL&w$UzrI$!Fj3!U%Negg5jFr?ypS0oUzJRVu4Qp9!kKMf#MU2>-hJT(c>3{ zZs;F#@M}N8@jdnjShAu2sZ963@JD*itguP^u3tR-9OI?0p+7h@FwkFu17(uZ(9a~I z1qkgvK;U=^nHR0 zX6X9_!-xLtAGdJ_g0G?P6F?9{-zSv%4t>8MbVL88TiM8kfGQ$5q6-*=M}Z80jm2r)COyC<|ZC z*qTAPstsQO=Gx)t6v%$3zjY~5An#(y6v%l^J$Ti}SaMmDtw5TVZZ~raw;g;LU#u5} zlF{7@hfL5T>F62sSvWm57tO@expXXTbmj^PxYr_)$aZB?sdTo}kp{vK#;b|FzL2;o zj(?-#_?}a7_=@_}L@ZCG;me;@6C|!M{yz5~e1Bj~7M6eJxt~1a%hOR4U0fAKO{TFg z+GwK{-T4An#PI8jNw_VJ%yg+J1paQFhFY3Vti*mZw49r(%?W5mqC<(PAZ%Eg{R zQB7oG3D`@XjCaA&ba1?UE}M+Sa-G?(To#U^ie*$Aqj?g;;>)#HBNjJB(L5Cu#m}9J z!dJFfjUYW$g)jecji9))IQWN;PG>Cib!d(?cO}fi37@b{l$;$aB z6P2-xs4~9$P#S$~&AZ``wp}r1@f&AP-h=Vj7eS4_VlP}Co1e4B%)yjvwuDK`0&%~?A+N_{k;t4aCGfcQM%gm(U2wk`kCml23 zJY6#zOLykfeYDNoK&r{3PzxYe)iMuN%X?1M;wyWI&AqiC_0%jinaQ;vSKZ@F6-ZP8%p!5|WwmU#B?;tmKP&a9! zvn!J@y0Y7sRw?)R-b zdx=_DFRF#9ht9!sCYnzrYJuD!Pj2zJZ79>Z9pkI7?B3E)U%A+8l2bVnecxC7#>e+v)d1e(KI_9yHQ-C(`vB%S z{CyqF=K}~I_HXR><_?TKzQQv;KJGExeOX67V7Lx*Unxp{0LZgGh-GA6IkFRKtYVLO zkeMCowgl!#bFjR!f2fo*kyq3IhGp}`kqH;$@v&C^5P6*x__XoKwQZ3|WYU52po~Pw z)(qVItQfmW#tizxO|6w0G$c9+yigYEC z8Z@Ai2OMR|8Z;cEnD6mGq&Pu>MnpC?FYJfg+q*r0DYjG4z)FKIc-Eo3H(WJ@vL6Fk zZzxB0W`gK4i0};@4VTHj>pFKq+z&ozjfg|~dtgh`Vq=Z5!lYxwty^S_Uw=~LKi(y1 z+j;-UJdc|Rn!ka?cd^)v#jmlzyS!TPfUcH_SYYLrIautE1;$KUa65fV5sP(LoQuU} zSlo;S?k8<|0t?JgYxo;$$qa zUMqH{6~Eq!yDeMsx}4V2u{aZpv$5EK1!8N(o5fo%z~Uk-F2>>uSbPZ!MBaJ@78o0D zy#|YGvA7kTlpgz=$^_()SPQcxo)5wnF)%y zor*}it@+x^px2;*$RhfZ&8Jc1GtR@T>MUhU)bkxMsdu=J5(Y*ILIexO96Z|S83I`D zb3p5s$gdw64TK&QVGzR{l|+K=a7Mj-$FRKEC|8D)`N1wZA z!++p^C=KY+ruACixnu9!acEkm8rH=a6Z6j=-dL zc!l&A(6$nDBVr3Sj+a@eL|Wf>f1I82`akK2fD!QD(9Osq=uG4g?Arpu&wocgbKd-J z`1d$Ek_7_b^KoNdU2@sM_?Kd9Mb?!g+v6doy$}s16VOq8#WI>dSQ)1s#q(C@F(^+v zxgLZv*nw(FF~1t0{^pI}nnOU@ecJ^vPDj2@$6Wpy$mz%(=1l zgi59HW8VH%IWk_V2d%V;tzh#&x6$zW=68OLGqFv!%BL>q$R@VjA$_+4KG2bj8}U>= zmx#x@AVUf^U8Ud-j%c(qR)BCMq)K&V3(*+t+LT`fcS1sM`7Jq?a)@UrIV6ht%xO$r}KtDv_(x0+;fSq2gAIa_0ED}>Yd=zZt4eVzOzJ6dq^A1_V*485{rqR!)5 z9ye^#x7{s(dHUbVktw2jvenXbJWWljmbl|c@!i%LzE&;S=ot-_xK_|0N{YdR>N!|8 zI_ZE8A}1k~z*^9R5S>C!FiI{$&|qMRYh!TCRbXf`A|8YuR7=R21Sv=U)ETQh3f*Tf z8$aS|-sa_jStvX&Puo=kFPvKbtKQ4Az1GVET&m#UQ6d&~7Ahvr+`%JD4=N=keibYL z?$nWSv~IcQtDkxw41)+aWy2h7f+L6E8m{x^JKtHhCxS;#i_V*Y`3Jpf{|0}}`WDkA z!7k&u^9F7=wB3!=RfAzzwhGm|X9&oKo2?$X)Vcnl87FWb&DPNy!3%RMf!1(A>E>hJ zM}GieOJpJOz+J-sy=dUgJLYW|7{H&W-$s5Wf8IgrU5-DHn6|@z$YGh&->|8HTSKKrw=*nH$PDN zhf9}w`HP^bS$$CWcC26n7+RPya^3_aPt*Onql@9e%p<>Fe(@^C*emO~lJ<8%vBlyJ zmm`YDw=k?XZiQIg(mckat8&(_piqw1xMeHs#C#eZKOFWh6u<$<0}X(_?O%-gb&ZJB zNm6(U$zIPsaRCE*-Bw6pk93o3w?fFSsVUcNjbI&VEOqgu?r6Cxlv&YsTFiP5hj~R` zsn;raGep#le_zR)BzgDbMy6E_IUUISAQys)`d`1 z?;OQ9K96tI;`bcC7n-e+QwJt|`9!pYW|3QS8y{VN(JyaBo@mU+iHiBiRB^CtLRqqy z+32(wpHH>Xa~Euj7^66Kv>0nK7Dv!dMCQH-MO}0yIxR3~(9)HHj{G-%N2epXV^@iz z)>#AD&I>_Ds$zmJjFA1yCCHW`Yc{^R3Db|lXo1dM9geUf9TpDJy{m&0vd3O?PiLQPiEo+>P;jl#+VAP~4$S4Gmg#n@-@hrp58z!UVs9AAQ8 z*FrX2&+dMIoN|lh2NgVct?&Ho(EBi*$@&fcn!OiOAi=uaTs*s0_dI>Ov-d*r#k60o zTX*(eSHE>_g1dFMmaf21LlRHkik!M_nBiuzAN;UQG@j8A!MxEe)Kk$zJ@rN`Zo=YbEHE>C>aAF8 zEJyalXqJ`6&`ySu^{w`$#catatzX_V)D06_B#BvG-6hlPEA?ml%kvH8(RtNAK-y|wKz>?+Ke1|~A$1NAO*?^-6T#hX8(yfIuOWHX z*Fft2T$?&`E#wE81MqRPFINN)S!AkI!^*Q%U$lOa4@V5r!WUueKLl#W}gB=X()V0)J%AC|tU-*`o9Mysfa+d7UZ zmRI3_b1?X-cx720NYhb8#T7ULN`tvlaR3;$PZe*hT!pt40`se?Om~-+BYU{DtaMH$ zyFfY8BWXB^WS6@k4R)~_$L?N(0iNRqn2i?&xGT$9eQPnH$i9VcDJV--mZi0~yIfh) ztiah(1K+AiD5(=7>$yxzNi|t$t%{tQmFh5h>V(m1hfzrB!rty(U~h1m?x5D~?*k14 zLMo5`{=PmqRn5#x%6F#xu2p3rRWFL%S`X<^w>Kb`BMQCy28Vi0y4`Jlxm;3NTQXrc z;~{W==VGH|={*^!Siz!FIWk=YnwKUo>GS;2`osDLi`}b0vLtzD&&vxz#2BHJ7S}leVs(Cg zpU{+~c-WF%WyyS)s!;$WxpS*bRXf?8SdK^|-|dYRY++M^yzis4m+abWcHsFJFT&XZu4hbD1svhCW+ zT&t-e4OM9>(o|;JvmBAwB-gYkQjSP!SX;+#Poe-GOblC=M55qNmcEnp3I5JMD8cVF zOWlq=>uhYdi*0LbF77MBiiEn+Kp9AyL;C{A6BCrZJX_}zpkxON?OKv9jd=Sp%nvwC zloT~6=~KJ5(iKTB*tG=wl18^{aL|(FOrBdTVC0n)p;*BMxHMOa^%dxn)QR;3@XqeB zAWRh7D!ZiFvKq><-R*=a2i8Uzcgt9TX8W2d67N#sH);#`11dMe_nXvJ>MH;)t5>b@M9a%V17t&p`prtr> zabdrliuhrD;PWDvn3PQr^}$2>+2Y{v`m|=DEJqF;PJ1iY_vK&`l@ZPN-vUQ*K&3X2 zE(e+Gh~6+uj1-ccqwfX0G{2NvRa|3QO&pFUguVqmm*f^evznzoqX$R;dS+dP);_B3 z&oWp6tpW9w9Yj15kBM<2uz8;E1~^UARWw1mK<8xP;|qMgDY2w$_>FMromISxvgkmb z8TN}F-;@R?r52q~m>8BLdinQ!Q6iRJUOd~dm5jdQl^Wn3*Na*eui9Ui+z~^de#z=) zeh-*gk|oF=sk5{)J+Co(ih1yhtfac!SzDU8)|jPYVZGHKj(Z&jS*D#(j!ab2QAvb= zrX7#54zFrk+YAwcN$~$s@KR(7sX{_`JHWqZ|B40`%8^gjGe)DpvZEEV0mtab9}l?o zmInBX?seIdhDOyGb7Wr{hO;9%a5mA3iYQn17s_kFiel$=oG_SQ-NEcfevS(4NM#jp z6FnnGH`LIb8{~iu5_5xqV8i2=-FP(+5&k!t5>jn!$?`q##BA=!;pAJ( zezD8ar>N^ElbWi7L{_pDK`F=l)s`Jo z6{wT?iWLw6dv}afcwUZ#&)Jh;8mS1Wt|?K~5)o|^8x>@T)b+Hws!&+kgRMXKb_KA` z)#2ebPV2f`vMSIefohsj8vcMNnUxXMHFvi<5;1q0EngZ+g)jAk)Qe=JTJqG7P?k>4(ZnPt_lamBm;Iq;pIFb=_{En*c=KxlIG* z$T*>z+aL^OVZ~_WF)M^B@?LX8;O<6&IaM0#p~|&mo>=xw&+BiyiBaHYa*1w^@Ydsj z3p7XKt;1IbZC@}f-unCQiuyY=_Ic{=z;%E?GKbz)?ij1T4ZuF`rnAv<+Uz#Q0$*7% zbRKFtG^zGd(SbWJI6$kU^9xC z6-WKm39nwFROCU+z%4op^^sr|dn@(8jdKZ&w_*>R)gm5m<^D=V5P$k_<;RkM$ON6OP>4z%LqT(mQvt*wwy=w$_ z%Rg@!aLtSf+~cL%+^BhWk)bU0${rI`btvM4F4Qpw@Ss;Y~zX?7`GPG^_!@W^cpe7;~P==R`>Lna(q73T}I*hxrr9#PBB?e@%dm*TAOJQgpIf;{*I=taU5S6-wYgSe0c0KTAsavJd?|V>Py1?f{b0GjWD>&T%XeULCpH)nH%Q>G z-+;opF##WqB8NZ`k5%IX@3t1&BlyxG>}W31gp%0M_~%53-Iy)NoAmuJ~ z(h~IKJh>dmqN$KEX+W7S6zV*qwm9CB^9o%$Dm(d4j z6~y6m7e@5l}v#w1QT z`ISrH5Bsi2<-C0BEU=Co9<4Okp}Q+mgRDb?tb-!!$i$NI6x_C%$Q9z9Ml4mx<>H-Y zE@viEg;X}3k0-O~L?NSV0xxBQ&ha}WDTU5>D7F_+=))F$+YQ)Y*xmytk>%FI(NJ>% zUT=RNT&o#%lI6wa3l2nr>`Tak5>Lp|bk?V5z5Sp>me0#lQw3S{a5^X)xJ47-bePFl z(n#jA@k}z2G~=mUve0Q5X`oQ2nTh>OIc^dm z%1^Hu^#opYV)g89yJsieciCyAXZRG)!*twULT>ABy8nUvfh{&M2I)mdJG$y5g~XE}hCm3xGMTm)ma-w8K1`GzyCLo7ZwU^hGrIDlT#tRyTd@Tkt zrs@7iKQ-fHph(kNMcP;Fg)r()9gx4iE@1`o%zwh@w za@7=4UWs^A*<}|Xf=23yM?uBr(nc&7Goqb^R61oAa@lCw=rjtkY!_@#bt>4qD~{5t z6|4(7rfhSC&S)~0N@faO*;GCq%foflnLJ$Moz55X@j})xbMZoLuXXRAw@aSbL>YMUA(e)6F&~rwN zQXWcs!-xTMRp4ij93-7Gzw5$3ybQ{`Q>VQu$O@zAKf_#rX12A-2#-Ns)i9B6t_&TzGzNgYseHU5xOjbAWQl=9T#O1@rrgMnMyGj_j;-_PeuSJr`d9UeMdIUgWA zD!Hogvqnmy26P(yn1f&Y398(&KfsdtOFot9#+w1gKCNowyMFQTb4(j68HmFqZBo=5 znM@*Dh^C|9nCR*PKZTh#68S_SmdbU-GKHArtUz2pW*BN41jECi)m@0@StxdT8Vbb( ztZlj)9ym{Rp#&WQKl}++VJJiVrtYs9G&g(v!1Ew%ENGsYcQ@*GP?1G z6&DxYk#pv+#zg;$f*Y8vnGq?uM9G8X!Z2QaDi1Bb8a{^(T1HLVH!fMKT#I?fE^@e<_# zuHh*eUy!&0UVYmJeiLd<7OO899?I8OsIL~e>2OuNH7zxK(MD^vos-)U1JSWcN;e0| zCv%3%#hyVIwR`6oU;Q|Yi{|mF+P$Rv=RAPsD`v%LZ$l6?R7WyxBona0>&nJV@U!Ji zqqC4VI+HmgAJ3%|T{^{kb6pj$jf<(?ShipoW;~Wl=2N*;Dgk~qGo6S>(=oFvXT}pr zP`{a6p}>7?b`wI^B<1VNOIsu5Dym;)3)%40i?+X>tYiv!=h03D?91a{BYiyW;58NH z%)=+@k4APphIguF2^1NgG#1T+^K37mUvSJ@cPO?F_28-CGqG zUG#9v&W~dPVDk~G9-eaBtvfM!sDoe@1x?k_Wu&vQOe)`%k3srPyfd9QyVA)_JY_^- zwH;6El<>6`2gh)&U&@3c)4*mT+L?$#ggO~b#f=!;x|q%ux*$fKg8%0WsTlrRh{qKT zEOts#zjYWuV%y#XtEhXGO@w}Q@37Et#XH@pcxy%l=<= z#~NeBRURsjWm#$y7itUL0juDPeJ{IEZMrNh4`GYDR(vFyyZ6pzFWjAbGk11bB-MyE zhJ=P{fGV^o)}?K%X^h6kDvc7ONfUomO#ETfpvHvQhqevcim&fGkC`*)oVkxPdvDkN zIKAwAbLM-W@B7Z{PlwUbICUc9cYl9oAPYaTnXax(9|Ye{PpUhW z?S=9~T5z*uQEOPDjd2%Jp-T z4%;*!t!!`Iz82>?nvM|9ikk+=%JxM^U%%x`=ehKy;~lGuf!Jr+GJl*Q>dL~B#)0lE z)D1G}fgVWPGYxnLx=5E=;?&{snh_>P4zoYS5J3W zHk;{8Z_0KKIN845@$TNv-oA9EtCPPLQW0^YMx|{7#*}rQ*|IE($$V=^B5;~pRHtba zX4H;CWoId!GgUWD4V>ha-+w14zZzA64Y*LjIU2>}257`OMWdA^CJ01hO;AhgF1Y_1 z{X4(UmX(b@2FH7h(e0D~)piISThj^a#uGmeb(y?Q8hpAix*0E!u`~-@j}3SHg5pdE zJp~;$)xg;#;nh8Kn_|QdNfo(88n0iXQt37x?p!J?8CLWa>^T0nRW4q;cWfsi0(_Jrb4e@-bJs_qxK#{ z8}R_=A051J6+t=NluI@YHqGvN;|s%-WFv1Dvk$I{ZGE7@we3>`>9pOC&2elV@GYZQ z-5lX?yKejEau`Ln;eK#L#Aw#o7!f#q0>ArpB2Q_bcH2pObOxJ;e9Ne$XN(uQ+^+4k zZy6LTHUk|wHdHz!;yYBeyfqi(=$aLkf;U!c#PC+_7&D`IeC~nc%7F^HzpJqjD#v!ynP= z@ODII4>ouEmUN6$-GoQ=cBkQfa04k&T?Hzao<=S-&0gQsbBZdgQT7(vZOs)Ws<^e4 z=21K!zy^=uu-knr(ZVBxdYo`Z2n#yw4u*=+D4T$POqW^+bAsMSj2CPtGsEAYPjJhN043HQ`r0no2PwC%FwFw zNpnJm;F_XwJHd9siX#m{WT&J;4Fx`E6{@V>9bpQbnvfgP0paRExO4kTP;MbAl8ziSKDm z;&DXpNo>CFTSitpCpc1@_^#o&Jtrsx5m3{sGy+=o+sjW-%SbejZ?saET12fIAyAAj zVe=w3fAy_I3zy6gS1sUg44FiOz7aA^^Z%jM{MQk!H?g^Hcv2R3#YVVMjlX7?XC?Zy z=>CtNdw!HEc_Q(!1$bg1qw=ailAzYO*b(Gquf%2rHm1k%aP}FYt!TJ?E5jvWriA67 z8drUh3ZuPNr{MN&h}G@byvMNAmxN6;*0<-R>{A<4LiM)7B04$lvH8Hh^V8A@ z=NSV3+KxigOjdO@A6S0ondfK^24_ZMXZJ#5-GyaoYftgXlSBI!&`mpHff&|KtcE1C z{ZP)$v`;$i!mV}fcy>3wyo0_Ll1Q(m0h5rnBh`1x2IieRV&`j!UIIqap%)Fn$SHk1 zm7fCK^b<*lSo75-Z=7sFSy~*=hEEcadAJQZH(O82a-t-;W~lj< z#ee?yqW{8ws2o_yqj1fy?fS;_#_(_O%l( z139=A4qVN6g;fzB`Le}hzq&Mwzof+i){Jkhz_m=1aQGdWD80wc`N&_w zQLs>HCZisj5SE6i(Dlex`br1kUoefLvr7Pk?eF&aP}tA zw2LS2-T6oIE4ma1t!sJ2x;P0^Nu?f2sJE){0Bqnc8q_;PgQ~`mg7rmG;i4WiXbmYO zfpb%;*fj(bPw-6~j|NCpd_S~G%R6jhg2a+HKfJ}sU)yQ@wmR#%GpVV zKBoO#nkVLu4~}xP(eAh9O!3)&zH_%e9l1Fs9YNqUOZj24E3n zA5mnQuP*$|$R)@)tRPHjxb}rf1+|%4vy4;MKXCymAfq-kJj;0Hq38R;zrn9HK|U%? zP}PI~L6!lF`n5SlJ1qAvn@6m<0dQW0lSA4(V$BWXkH5Su$Rp+(NkXRZ5<#-+3$%dX zHk>r4Ay^x^s$nj!$ijZRu<7P^jgXH(Lp5gMQ|o^^@f=a3%f7XQT@D;P7D_k7R+cSp zdG^8}`fN>Vb2AUVM(MrgJYnE2z5%18J`5v4H6x8{A4X%hv1m-fx0<*t@Ep?C+j>|P zA2!tlN2Ey^a6w36igSAY46lkbP(Ko^^m<@p+&g^38>2}qPkp-4hOk~v`VKQbZB*0B!lzxt;lmcIItt{q)PN=Cyq%2 zq^oiT^9vm^4b8$e8HNt0w;}<98n=jw;`DrLC1>g=m8q0xe0BafLXi+ux<>mz$TU9n z;%{0k8cszfKF}{-gQiSU(a}u=yr7-@*nLuC?M4w$?|m!OLG-XR*P>W35;!Z+#4!)px*c!@cd8Rjq!31`GJ; z3GyxSZ*-++$&HU^ee2zurA&A;n^)WF6dgC?xal0sy;!%XU~HmD+XZ_z7*5f_2G`gw zNWsmw-d7$V(%HK5uspZ(tu5`J){0!n(HJ3N9XK3se4jm=UyBRj0rxU{X6h00pRndn#C({Rg>vrY4Nu0JABnyT5DZzKaO?5!4h6fMsyrM+AcB;HZ&Yhx2Be65x@=w?&jdVkq(NK~sf zB?^F$s@k#$5~WXdK_YBGR0S|jNq1RFxSdKAl~))35{uP!M#eDS4GFQj1N%#YP@)+6VnL|c0W+W2dM09I*VD7fGu zLH#vOsNlMAxu27X3?jCs7X~*(ou1At7zA;Ak?wR7a!XT_4xI)Y^nFjO8=eEV4-QY| z^Se?W8wxcPh)|51P$E<)$V7&16{X<$;hkw|Gc{(nO zbC8_rqx0EuZ_pvC;AV6C;i_mwFmbPq@_envm$=DwR{f>GdQ^c&kz=H*K0E>zp?7_G zECeDeLvqSgBZz!IAV>919FD61BS`g*5@3X+c=B1d0#Vh#aT5DLidPXBQfeB{eYn1LtI`qvo%vVQP2s};36;1>$JOOCRFzk!oawN!!=1SBJc4rwY0{g)ba{{02r9H8X0A)G30!>ApdYcFaKxR8QrnN(bSAI#T0YyKkvT;ophsa?*8y z3<5D`hG2UYB@GUe9LnQ7c?q0qpeR_$*-LF{r|UZ&xv0u_z@|#W1)htI&S94fU*FnV zbEjj6-86&`QQU?Tb`#*UrD8|OtF6uqabJ$d*&{?lWr>0}2fg$}ZrWk}?7@Ia-%S}A zM!SJA!13Hv9@qk&Zl+9^L-FK|K*BiJHo{>%2lzW&~uex zM!8-BW|UFRD&7zAP)kZv;QL8>IhcodQ;n5_=W?{63p1uu`CJC-U1M}eQD0Gq*lEYh RWe+n#16pRt6y6In{{sk#Le~HQ literal 0 HcmV?d00001 diff --git a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml similarity index 62% rename from AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml rename to AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml index bde0b05..79cec9c 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Msc_jar_unspecified_jar.xml @@ -1,5 +1,5 @@ - + diff --git a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml similarity index 63% rename from AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml rename to AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml index 7fe50db..d9de3c9 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_Sunflower_jar_unspecified_jar.xml @@ -1,5 +1,5 @@ - + diff --git a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml similarity index 64% rename from AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml rename to AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml index 8782627..2d2dc3a 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_activation_jar_unspecified_jar.xml @@ -1,5 +1,5 @@ - + diff --git a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml similarity index 64% rename from AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml rename to AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml index 0bb2e23..0bf8667 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_additionnal_jar_unspecified_jar.xml @@ -1,5 +1,5 @@ - + diff --git a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml similarity index 62% rename from AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml rename to AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml index b6f1359..a681b80 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_GaoLei_gaolei_Android_Github_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle____local_aars____Users_gaolei_gaolei_Android_GitHub_AndroidLearnProject_AndroidLearnProject_basemodule_libs_mail_jar_unspecified_jar.xml @@ -1,5 +1,5 @@ - + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml index 90af751..c31dbfc 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_core_runtime_1_1_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml index 2f8c8df..7cd144b 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_1_1_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml similarity index 65% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml index 572a9d3..5498b58 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0_aar.xml index 5f50bde..9e779ca 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml index dcb5fb9..b81f5cc 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml index d8250df..7ee5f73 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__cat_ereza_customactivityoncrash_2_2_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__cat_ereza_customactivityoncrash_2_2_0_aar.xml similarity index 50% rename from AndroidLearnProject/.idea/libraries/Gradle__cat_ereza_customactivityoncrash_2_2_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__cat_ereza_customactivityoncrash_2_2_0_aar.xml index c0f31fc..9f6cf76 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__cat_ereza_customactivityoncrash_2_2_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__cat_ereza_customactivityoncrash_2_2_0_aar.xml @@ -1,8 +1,11 @@ - + + + + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0_aar.xml similarity index 64% rename from AndroidLearnProject/.idea/libraries/Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0_aar.xml index dff440c..634b45c 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__cn_bingoogolapple_bga_swipebacklayout_1_2_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__cn_lankton_flowlayout_1_0_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__cn_lankton_flowlayout_1_0_1_aar.xml similarity index 71% rename from AndroidLearnProject/.idea/libraries/Gradle__cn_lankton_flowlayout_1_0_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__cn_lankton_flowlayout_1_0_1_aar.xml index f073908..2597338 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__cn_lankton_flowlayout_1_0_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__cn_lankton_flowlayout_1_0_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0_aar.xml similarity index 72% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0_aar.xml index 7b4a829..1b4d6f0 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml similarity index 59% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml index 77ee928..6c81ed8 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0_aar.xml similarity index 65% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0_aar.xml index 6518b6f..eaa4270 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml new file mode 100644 index 0000000..97de7c3 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml similarity index 61% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml index cc98d32..3079dd9 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_asynclayoutinflater_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml similarity index 56% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml index 0a93487..ea47195 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cardview_v7_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0_aar.xml similarity index 61% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0_aar.xml index 973447e..c9f16d3 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_constraint_constraint_layout_1_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml deleted file mode 100644 index 0d412ea..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml new file mode 100644 index 0000000..e6076f1 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_coordinatorlayout_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml similarity index 50% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml index 847c43e..5cddabb 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml similarity index 58% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml index a45bc73..5c0a11e 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_customview_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml deleted file mode 100644 index f738ff3..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml new file mode 100644 index 0000000..42ac28e --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_design_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml deleted file mode 100644 index 480bea3..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml similarity index 56% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml index 39d421e..7173b72 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_documentfile_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml new file mode 100644 index 0000000..e180ea1 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_drawerlayout_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml deleted file mode 100644 index fb0de34..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml similarity index 51% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml index 1b65eb0..2fcb127 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_cursoradapter_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_interpolator_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml similarity index 58% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml index 529c721..4b75317 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_loader_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml similarity index 61% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml index 2f80c0c..059eedd 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_localbroadcastmanager_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml deleted file mode 100644 index 61508cd..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml new file mode 100644 index 0000000..71329d4 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_print_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml deleted file mode 100644 index 31b0f5b..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml new file mode 100644 index 0000000..2ce6c49 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_recyclerview_v7_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml deleted file mode 100644 index b309125..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml new file mode 100644 index 0000000..db0f8c6 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_slidingpanelayout_28_0_0_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_26_1_0_aar.xml similarity index 65% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_26_1_0_aar.xml index 1944452..00d9644 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml deleted file mode 100644 index 1b5f868..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml new file mode 100644 index 0000000..064633e --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_compat_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0_aar.xml similarity index 65% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0_aar.xml index e7cccf7..e3ce294 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml deleted file mode 100644 index 1f2f16f..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml similarity index 50% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml index a066c41..a9a7fb0 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_appcompat_v7_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_ui_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0_aar.xml similarity index 64% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0_aar.xml index 1a47550..8ca1a8d 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml deleted file mode 100644 index 1a9ec3c..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml new file mode 100644 index 0000000..95476c9 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_core_utils_28_0_0_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0_aar.xml similarity index 64% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0_aar.xml index c73aa3b..1da7c40 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml deleted file mode 100644 index 59f9bc4..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml new file mode 100644 index 0000000..813dc1c --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_fragment_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0_aar.xml similarity index 73% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0_aar.xml index 386ea6a..ba5bd44 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_media_compat_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_v4_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_v4_26_1_0_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_v4_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_v4_26_1_0_aar.xml index 3badac7..a1b4e36 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_v4_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_v4_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0_aar.xml similarity index 72% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0_aar.xml index 10de8e6..b46cb80 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_26_1_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml similarity index 60% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml index 529161d..67ef591 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_support_vector_drawable_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml deleted file mode 100644 index c46e74a..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml new file mode 100644 index 0000000..6bce50d --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_swiperefreshlayout_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml new file mode 100644 index 0000000..29082db --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_transition_28_0_0_aar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml similarity index 61% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml index 3ca25e0..1b86914 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_versionedparcelable_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml similarity index 58% rename from AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml index 2268fd1..48a4c50 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_android_support_viewpager_28_0_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30_aar.xml similarity index 56% rename from AndroidLearnProject/.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30_aar.xml index 337cce0..9e613cd 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_github_CymChad_BaseRecyclerViewAdapterHelper_2_9_30_aar.xml @@ -1,8 +1,11 @@ - + + + + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_6_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_6_1_aar.xml similarity index 55% rename from AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_6_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_6_1_aar.xml index 6fc10e2..88c5317 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_6_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_gifdecoder_4_6_1_aar.xml @@ -1,8 +1,11 @@ - + + + + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_6_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_6_1_aar.xml similarity index 69% rename from AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_6_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_6_1_aar.xml index d196525..8151888 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_6_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_github_bumptech_glide_glide_4_6_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_devlight_infinitecycleviewpager_1_0_2.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_devlight_infinitecycleviewpager_1_0_2_aar.xml similarity index 72% rename from AndroidLearnProject/.idea/libraries/Gradle__com_github_devlight_infinitecycleviewpager_1_0_2.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_github_devlight_infinitecycleviewpager_1_0_2_aar.xml index 920b6dd..00b72ea 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_github_devlight_infinitecycleviewpager_1_0_2.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_github_devlight_infinitecycleviewpager_1_0_2_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1_aar.xml similarity index 73% rename from AndroidLearnProject/.idea/libraries/Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1_aar.xml index 91a307f..540042c 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_github_franmontiel_PersistentCookieJar_v1_0_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0.xml deleted file mode 100644 index 2e1f722..0000000 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0_aar.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0_aar.xml new file mode 100644 index 0000000..1535057 --- /dev/null +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_github_yyued_SVGAPlayer_Android_2_3_0_aar.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_jaeger_statusbarutil_library_1_4_0.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_jaeger_statusbarutil_library_1_4_0_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__com_jaeger_statusbarutil_library_1_4_0.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_jaeger_statusbarutil_library_1_4_0_aar.xml index 6f0ee44..5a51c1a 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_jaeger_statusbarutil_library_1_4_0.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_jaeger_statusbarutil_library_1_4_0_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_jakewharton_butterknife_8_8_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_jakewharton_butterknife_8_8_1_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__com_jakewharton_butterknife_8_8_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_jakewharton_butterknife_8_8_1_aar.xml index 718f520..06d044b 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_jakewharton_butterknife_8_8_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_jakewharton_butterknife_8_8_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5_aar.xml similarity index 57% rename from AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5_aar.xml index f362a70..84b8bf6 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshHeader_1_0_5_aar.xml @@ -1,8 +1,11 @@ - + + + + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5_aar.xml similarity index 73% rename from AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5_aar.xml index 9fb5f76..b7c8dff 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_scwang_smartrefresh_SmartRefreshLayout_1_0_5_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__com_youth_banner_banner_1_4_10.xml b/AndroidLearnProject/.idea/libraries/Gradle__com_youth_banner_banner_1_4_10_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__com_youth_banner_banner_1_4_10.xml rename to AndroidLearnProject/.idea/libraries/Gradle__com_youth_banner_banner_1_4_10_aar.xml index 0a1e58b..bac9305 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__com_youth_banner_banner_1_4_10.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__com_youth_banner_banner_1_4_10_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1.xml b/AndroidLearnProject/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml similarity index 70% rename from AndroidLearnProject/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1.xml rename to AndroidLearnProject/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml index 7f3dc6a..8f0ca5d 100644 --- a/AndroidLearnProject/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1.xml +++ b/AndroidLearnProject/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_1_aar.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/AndroidLearnProject/.idea/misc.xml b/AndroidLearnProject/.idea/misc.xml index 99ed2ed..51fa3e5 100644 --- a/AndroidLearnProject/.idea/misc.xml +++ b/AndroidLearnProject/.idea/misc.xml @@ -5,27 +5,37 @@ - + diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index 99a9a92..4d5706f 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -6,13 +6,99 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + - - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - + + - - - - + + + + + + @@ -119,13 +292,6 @@ - kotlin - r.layout - viewPager - ? = null - annotationProcessor - showArticleList - get getLayoutId layoutId fun onResume() @@ -149,6 +315,13 @@ webview_article setTitleText iv_back + r.layout + tv_login + baseurl + appcompatV7 + with + minSdkVersion + compileSdkVersion getString @@ -160,7 +333,7 @@ @@ -8785,10 +8958,6 @@ - + diff --git a/AndroidLearnProject/.idea/modules.xml b/AndroidLearnProject/.idea/modules.xml index 46a7816..5cf80f4 100644 --- a/AndroidLearnProject/.idea/modules.xml +++ b/AndroidLearnProject/.idea/modules.xml @@ -5,7 +5,6 @@ - \ No newline at end of file diff --git a/AndroidLearnProject/.idea/workspace.xml b/AndroidLearnProject/.idea/workspace.xml index 670d340..9959a62 100644 --- a/AndroidLearnProject/.idea/workspace.xml +++ b/AndroidLearnProject/.idea/workspace.xml @@ -11,94 +11,66 @@ - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -152,95 +129,93 @@ - + - - + + - + - - + + - - + + - - + + - - + + - - + + + - + - - - - - - + + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + @@ -256,19 +231,6 @@ - r.layout - viewPager - ? = null - annotationProcessor - showArticleList - get - getLayoutId - layoutId - fun onResume() - oncreate - initPresenter - tv_register_contract_content - fragmentManager companion context instance @@ -286,6 +248,19 @@ setTitleText iv_back activity + homeFragment + OfflineCacheInterceptor + minSdkVersion + swipebacklayout + BGASwipeBackHelper + FullScreenStyle + BGA + statusb + setStatusBar + statusbu + override fun setStatusBar() + AppTheme5 + AppBaseTheme getString @@ -297,20 +272,13 @@ @@ -399,6 +374,7 @@ + @@ -441,26 +417,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -515,32 +471,21 @@ - - - - - - - - - - - - + - + + - + @@ -500,16 +503,15 @@ + + + + + + - - - - - - - @@ -520,9 +522,11 @@ - - - + + + + + @@ -754,9 +758,10 @@ - + + - + @@ -766,18 +771,18 @@ - - - + + + - - - + + + @@ -786,7 +791,7 @@ - + @@ -826,6 +831,30 @@ + - + - - - + + + + + - - + - - + + - - - + - - + + + + + - - + + - + - + - - + + - - - - - + - - + + - - - - - - - - - - - + + - - - - - - - - + - - + + - + + - - + + - + - - + + - + + - - + + - + + - - + + - + - - + + + + + - + + - - + + - + - - + + - - - - - - - + + - - - - - - - + + + - + - - - - - - - - - - - - - - - - + + - + - - + + - + + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - + - - + + + + + - + - - + + - + - - + + + + + - + - - + + - + + - - + + + + + - + - - + + + + + - - + + - + - - + + - + - - + + - - + + - + - - + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - + + + + + - - + + - - + + - + + - - + + - - + + - + - - + + + + + diff --git a/AndroidLearnProject/app/src/main/AndroidManifest.xml b/AndroidLearnProject/app/src/main/AndroidManifest.xml index dcb1570..812621e 100644 --- a/AndroidLearnProject/app/src/main/AndroidManifest.xml +++ b/AndroidLearnProject/app/src/main/AndroidManifest.xml @@ -13,6 +13,8 @@ + + + android:networkSecurityConfig="@xml/network_security_config" + android:theme="@style/TranslucentTheme" + tools:ignore="GoogleAppIndexingWarning" + tools:targetApi="n"> + android:name=".activity.SplashActivity" + android:theme="@style/SplashTheme"> @@ -37,11 +41,6 @@ - - - - - diff --git a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt b/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt index 6c5adad..1e65b28 100644 --- a/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt +++ b/AndroidLearnProject/app/src/main/java/com/android/learn/MainActivity.kt @@ -47,6 +47,7 @@ import com.iflytek.cloud.* import com.iflytek.cloud.ui.RecognizerDialog import com.iflytek.cloud.ui.RecognizerDialogListener import com.iflytek.sunflower.FlowerCollector +import com.jaeger.library.StatusBarUtil import com.opensource.svgaplayer.* import okhttp3.OkHttpClient import okhttp3.Request @@ -85,8 +86,7 @@ class MainActivity : BaseMvpActivity if (actionId == EditorInfo.IME_ACTION_SEARCH) {//搜索按键action @@ -452,9 +447,9 @@ class MainActivity : BaseMvpActivity(), SplashLoginContract.View { @@ -28,6 +34,11 @@ class SplashActivity : BaseMvpActivity diff --git a/AndroidLearnProject/app/src/main/res/layout/activity_splash.xml b/AndroidLearnProject/app/src/main/res/layout/activity_splash.xml index a38e81e..b8abd09 100644 --- a/AndroidLearnProject/app/src/main/res/layout/activity_splash.xml +++ b/AndroidLearnProject/app/src/main/res/layout/activity_splash.xml @@ -1,8 +1,7 @@ + android:layout_height="match_parent"> - - - - - diff --git a/AndroidLearnProject/app/src/main/res/xml/network_security_config.xml b/AndroidLearnProject/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..176d19a --- /dev/null +++ b/AndroidLearnProject/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt index 82df527..7cc4e52 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/activity/BaseActivity.kt @@ -8,10 +8,8 @@ import android.view.View import butterknife.ButterKnife import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper import com.android.learn.base.application.CustomApplication -import com.android.learn.base.utils.ExitAppUtils import com.android.learn.base.utils.LogUtil import com.android.learn.base.utils.SPUtils -import com.gaolei.basemodule.R import com.jaeger.library.StatusBarUtil import com.umeng.analytics.MobclickAgent import com.wind.me.xskinloader.SkinInflaterFactory @@ -40,14 +38,13 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B // 在 super.onCreate(savedInstanceState) 之前调用该方法 initSwipeBackFinish() super.onCreate(savedInstanceState) + SkinInflaterFactory.setFactory(this) setContentView(layoutId) ButterKnife.bind(this) - ExitAppUtils.instance.addActivity(this) - - SkinManager.get().setWindowStatusBarColor(this.window, R.color.status_bar_color) + setStatusBar() - var bundle = intent.extras + val bundle = intent.extras initData(bundle) @@ -56,7 +53,7 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B open fun initData(bundle: Bundle?) {} override fun onClick(v: View) { - if (v.id == R.id.iv_back) { + if (v.id == com.gaolei.basemodule.R.id.iv_back) { finish() } } @@ -78,7 +75,6 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B override fun onDestroy() { super.onDestroy() - ExitAppUtils.instance.delActivity(this) LogUtil.d(TAG, "BaseActivity ----onDestroy:" + javaClass.name.toString()) } @@ -151,7 +147,7 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B // 设置是否是微信滑动返回样式。默认值为 true mSwipeBackHelper.setIsWeChatStyle(true) // 设置阴影资源 id。默认值为 R.drawable.bga_sbl_shadow - mSwipeBackHelper.setShadowResId(R.drawable.bga_sbl_shadow) + mSwipeBackHelper.setShadowResId(com.gaolei.basemodule.R.drawable.bga_sbl_shadow) // 设置是否显示滑动返回的阴影效果。默认值为 true mSwipeBackHelper.setIsNeedShowShadow(true) // 设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 true @@ -199,10 +195,12 @@ abstract class BaseActivity : BasePermisssionActivity(), View.OnClickListener, B } protected open fun setStatusBar() { + val isNightMode = SPUtils.getParam(this, "nightMode", false) as Boolean if (isNightMode) { - StatusBarUtil.setColorForSwipeBack(this, resources.getColor(R.color.app_color_night), 0) - } else - StatusBarUtil.setColorForSwipeBack(this, resources.getColor(R.color.app_color), 0) + StatusBarUtil.setColorForSwipeBack(this, resources.getColor(com.gaolei.basemodule.R.color.app_color_night), 0) + } else { + StatusBarUtil.setColorForSwipeBack(this, resources.getColor(com.gaolei.basemodule.R.color.app_color), 0) + } } } \ No newline at end of file diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt index 52dfa1d..4bf0645 100644 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt +++ b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/application/CustomApplication.kt @@ -32,37 +32,6 @@ import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper class CustomApplication : Application() { - // public class AppContext extends BlockCanaryContext { - // private static final String TAG = "AppContext"; - // - // @Override - // public String provideQualifier() { - // String qualifier = ""; - // try { - // PackageInfo info = getApplicationContext().getPackageManager() - // .getPackageInfo(getApplicationContext().getPackageName(), 0); - // qualifier += info.versionCode + "_" + info.versionName + "_YYB"; - // } catch (PackageManager.NameNotFoundException e) { - // Log.e(TAG, "provideQualifier exception", e); - // } - // return qualifier; - // } - // - // @Override - // public int provideBlockThreshold() { - // return 1000; - // } - // - // @Override - // public boolean displayNotification() { - // return BuildConfig.DEBUG; - // } - // - // @Override - // public boolean stopWhenDebugging() { - // return false; - // } - // } /** * @return 获取字体缩放比例 @@ -126,11 +95,5 @@ class CustomApplication : Application() { } } - // @Override - // protected void attachBaseContext(Context newBase) { - // //语言切换 - // super.attachBaseContext(LanguageUtil.setLocal(newBase)); - // } - } diff --git a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.kt b/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.kt deleted file mode 100644 index 8b00430..0000000 --- a/AndroidLearnProject/basemodule/src/main/java/com/android/learn/base/utils/ExitAppUtils.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.android.learn.base.utils - -import android.app.Activity - -import java.util.LinkedList - -class ExitAppUtils private constructor() { - - private val mActivityList = LinkedList() - - fun addActivity(activity: Activity) { - mActivityList.add(activity) - } - - fun delActivity(activity: Activity) { - mActivityList.remove(activity) - } - - fun exit() { - for (activity in mActivityList) { - activity.finish() - } - - System.exit(0) - } - - companion object { - val instance = ExitAppUtils() - } - - -} \ No newline at end of file diff --git a/AndroidLearnProject/app/src/main/res/drawable-xhdpi/customactivityoncrash_error_image.png b/AndroidLearnProject/basemodule/src/main/res/drawable-xxhdpi/customactivityoncrash_error_image.png similarity index 100% rename from AndroidLearnProject/app/src/main/res/drawable-xhdpi/customactivityoncrash_error_image.png rename to AndroidLearnProject/basemodule/src/main/res/drawable-xxhdpi/customactivityoncrash_error_image.png diff --git a/AndroidLearnProject/app/src/main/res/mipmap-xhdpi/splash4.jpg b/AndroidLearnProject/basemodule/src/main/res/drawable-xxhdpi/splash.jpg similarity index 100% rename from AndroidLearnProject/app/src/main/res/mipmap-xhdpi/splash4.jpg rename to AndroidLearnProject/basemodule/src/main/res/drawable-xxhdpi/splash.jpg diff --git a/AndroidLearnProject/basemodule/src/main/res/layout/title_view.xml b/AndroidLearnProject/basemodule/src/main/res/layout/title_view.xml index e042852..86a94ad 100644 --- a/AndroidLearnProject/basemodule/src/main/res/layout/title_view.xml +++ b/AndroidLearnProject/basemodule/src/main/res/layout/title_view.xml @@ -39,12 +39,6 @@ android:clickable="true" android:visibility="gone" /> - diff --git a/AndroidLearnProject/basemodule/src/main/res/values/styles.xml b/AndroidLearnProject/basemodule/src/main/res/values/styles.xml index 4ea857a..bdd72e0 100644 --- a/AndroidLearnProject/basemodule/src/main/res/values/styles.xml +++ b/AndroidLearnProject/basemodule/src/main/res/values/styles.xml @@ -3,10 +3,11 @@ @@ -18,9 +19,18 @@ @android:color/transparent false - + + + + -