最近,我被要求为新的4.0版本编译一些基于2.3的Android项目。因此,在没有太多关于如何做到这一点的知识的情况下,我只是尝试通过在清单文件中进行一些更改来实现,例如min SDK
和targeted SDK
。我将min SDK
设置为 10 ,将targeted SDK
设置为 15 。希望这会以某种方式工作,我测试运行我的代码只是为了看到它没有按照我希望的方式工作。当然,它在2.3上都很有效,无论是在模拟器还是设备上。
有没有办法升级/转换此项目以使用最新版本进行编译和构建,以便重做它?有人可以帮忙吗?
编辑1: 经过数小时的故障排除,并搜索在线线索。我决定把它看得更深一些。我发现这一行:
DefaultHttpClient client = new MyHttpClient(getApplicationContext());
HttpGet get = new HttpGet(url11);
HttpResponse getResponse = client.execute(get); // 4.0.3 crashes here....
是问题的原因。现在我从2.3.3和4.0.3运行了AVD Manager来测试这个问题,结果发现这条线路运行顺畅,2.3.3没有错误。可能会在新的4.0.3中出现弃用或其他问题吗?
答案 0 :(得分:1)
最有可能的原因是在主线程上执行网络操作。
当AndroidManifest.xml上的targetSdkVersion为11或更高时,它会导致NetworkOnMainThreadException。
使用AsyncTask或AsyncTaskLoader将其移至后台线程。