Eclipse转Androi studio的坑--总结归纳

Eclipse 转Android 的一些坑, 结合各类文章的归纳与总结.

	 从eclipse转到android studio难免会遇到一些坑爹的地方, 记录一下这几点:
	 1, 图片 .9.png 图片的报错;
	 2, 部分文件的编码表不是UTF-8的问题;
	 3, 有依赖导包不存在和V4依赖问题;
	 4, Minimum supported Gradle version is 3.3. Current version is 2.14.1错误
	 5. build的时候, 报出 More than one file was found with OS independent path 'META-INF/DEPENDENCIES' 错误
	 6, Android 5.0不能隐式启动service,必须显示启动;
	 7, Android 8.0之后,应用不能对大部分的广播进行静态注册,只能动态注册;

这几点的修改稍微做一下总结;
1, 图片.9.png 图片的报错;

  • 图片.9.png 报错一般是.9.png的图片没有画左边和上面的拉伸线,同时也可以画上右边和下面的显示区域, 有的时候就
    画了拉伸线和显示线仍然报错, 可以用as打开图片后勾选中 Show patches, 然后关闭图片,就可以正常 build 了, 具体规范
    可以参考链接: AS .9.png图的使用

2, 部分文件的编码表不是UTF-8的问题;

  • 编码表不正确的解决方式很简单, 借助工具editPlus轻松实现所有文件批量转码, 使用editPlus需要注意的是,ediPlus转码后的每个文件都会生成一个.bak文件的临时文件, 要去掉所有的.back备份文件:
    首先打开editPlus(你的可能是破解版,所以我写2钟语言) ,选择Tools(工具) —> Configure User Tools(配置自定义工具)---->File(文件)将Default encoding(默认文本编码)改为utf-8(不加Bom的)----->Create backup file when saving(在保存文件时创建备份)这个前面的√去掉---->apply(应用)在点ok,解决了编码表问题.
    在这里插入图片描述
    在这里插入图片描述

3, 有依赖导包不存在和V4依赖问题;

  • 一般典型存在的就是v4包问题, 有时即使将eclipse的v4包拷贝到AS,仍然不能解决异常, 而使用v7包的话,需要注意版本了, 我遇到的例子,我使用了 implementation ‘com.android.support:appcompat-v7:28.0.0’ 仍然报错,部分包找不到,后来使用了 implementation ‘com.android.support:appcompat-v7:22.0.0’ ,ok问题解决, 具体是啥问题忘记了.
  • 除了v4包, 还有老项目使用的网络请求问题,import org.apache.http.xxxxxx 爆红包不存在, 这是因为在android 6.0以后, Google 删除了大部分 org.apache 的大部分库, 在项目的build.gradle下加入如下图的 useLibrary ‘org.apache.http.legacy’ ,搞定这个包.
    在这里插入图片描述
  • 还有一个细节的地方, 在项目打包的时候才会提示, 一般是提示, 继续构建将会出错, 提示的内容里也写了需要添加的内容, 也是在项目的build.gradle下加入如下图的:
    lintOptions { checkReleaseBuilds false abortOnError false }
    在这里插入图片描述

4, Minimum supported Gradle version is 3.3. Current version is 2.14.1错误

  • 这个错误一般发生在eclisse和as通用的项目里或者是其他as项目, 首先修改工程的build.gradlel里在这里插入图片描述

6, android5.0不能隐式启动service,必须显示启动;

  • 隐式启动 -----android5.0之后禁止使用
<service android:name=".service"> 
<intent-filer> 
<action android:name="com.android.service"/> 
<intent-filer> 
</service> 
final Intent serviceIntent=new Intent(); 
serviceIntent.setAction("com.android.service"); 
  • 显示启动
final Intent serviceIntent=new Intent(this,service.class); 
startService(serviceIntent); 

new Intent(this,service.class)中, service.class是服务的类名.

  • 还有中说法是加服务端包名,这个方式没有试过, 我是直接写成显示启动,方式如下:

    Intent intent = new Intent();
    intent.setAction(“com.viaembedded.veonvif.RemoteService”);//Android5.0后service不能采用隐式启动,故此处加上包名
    intent.setPackage(“com.example.oscarzhou.nvrmanagerapp”);//
    bindService(intent, serConn, BIND_AUTO_CREATE);

注意,是服务端包名,而不是所谓的客户端包名getPackageName().

7, Android 8.0之后,应用不能对大部分的广播进行静态注册,只能动态注册;

  • 在Android 8.0的平台上, 应用不能对大部分的广播进行静态注册, 少部分, 如 Android 开机的广播通过静态注册还是能够正常接收的, 解决方式(偷下懒stuck_out_tongue ) ,: 直接看连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值