1、Plugin with id ‘com.android.application’ not found. Open File
问题描述:
我们在导入一个外部android 工程时有时会遇到这样的错误:“Plugin with id ‘com.android.application’ not found. Open File”
解决方法:
1)、找到工程根目录的build.gradle文件
2)、在该文件中添加以下代码
1 2 3 4 5 6 7 8 |
buildscript { repositories { mavenCentral() // or jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' //last version Jan 2016 } } |
原因:工程的build.gradle文件里面没有配置buildscript
2、dex2oat oat location is not valid
错误日志:
1 |
03-22 14:50:01.192 3137-3137/? E/dex2oat: <SS>: oat location is not valid /data/user/0/com.test.android/tinker/patch-62714b6b/odex/test.dex.dex |
问题描述以及原因:
之前混淆使用的是proguard4.7
版本,发现patch后MultiDex的install
方法一直crash,使用Tinker 1.7.5
却没有这个问题。替换混淆版本proguard5.1
测试成功。因为1.7.5版本ART
环境只合成增量dex
,所以MultiDex
是不会进入Patch Dex
中的,而1.7.7去掉了这个逻辑,所以才会产生这个问题,所以建议使用proguard5.1
版本。
解决方法:
查明因为proguard 4.7版本导致,建议使用proguard 5.1版本
3、onPageSelected 第一个页面首次展示不调用
你可以在设置OnPageChangeListener
后手动调用一次onPageSelected(0)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
OnPageChangeListener pageChangeListener = new OnPageChangeListener() { @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { switch (position) { case 0: QuizStart.next.setText(getmycurrentpage()+""); break; default: QuizStart.next.setText(getmycurrentpage()+""); break; } } }); mPager.setOnPageChangeListener(pageChangeListener); // do this in a runnable to make sure the viewPager's views are already instantiated before triggering the onPageSelected call mPager.post(new Runnable() { @Override public void run() { pageChangeListener .onPageSelected(viewPager.getCurrentItem()); } }); |