6、Hardcoded string,should use @string resource警告 && eclipse中一次性导入用到的所有类 && 重命名多处调用的文本对象 && 重命名包名
在使用eclipse的在布局文件时,有时编辑一些控件的字符串名字中,有时会提示诸如“Hardcoded string "下一步", should use @string resource”的警告,这是什么原因呢?
- <Button
- android:id="@+id/button1"
- android:layout_width="118dp"
- android:layout_height="wrap_content"
- android:text="下一步" />"
虽然上述的做法可以正常运行,但是这不是一个好习惯,应该在res/values/strings.xml中设置:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="message">下一步</string>
- </resources>
引用的时候使用:Android:text="@string/message"就行了。这样做可以做到一改全改,在支持多语言时也是很有用的。如果不想编辑strings.xml文件,则用layout框中,点击控件的textview项,new一个新的string名字,再在strings.xml对应的编辑框中完善这个字符串对应的内容就行了。
=====================================================================================================
使用组合键:ctrl+shift+o可以一次性导入所有需要import的类。
=======================================================================================================
一个特定对象名字可能在一个Java文件中多次被调用,如果要修改这个对象的名字,可以在eclipse中双击激活这个对象,会显示所有调用到的地方。然后右键选择refactor->rename即可。
=======================================================================================================
APK应用工程文件夹的第一层名字,可以直接修改名字,右击工程,选择refactor->rename即可
运行Android程序的时候提示:ActivityManager: Warning: Activity not started, its current task has been brought to the front
但是在模拟器上显示出了程序界面,后来google了一下,
有一组提问和回答引起了我的注意:
- Hi,
- I have a very simple android project. I got the following error message when I try to run it. The emulator is running but the application doesn't come up. I couldn't find any useful information online. Can anyone help me?
- Thanks,
- arning: Activity not started, its current task has been brought to the front public class Profile extends Activity { /Button button1; CheckBox check1, check2; EditText text1;/
Answer
- Hi Lewis!
- It is not an error message, it is a warning. What the system is trying to tell you: The application on the device is the same as your application in Eclipse. And because the application is already running on the device, the system tells you that it is not going to kill and restart it, but bring the activity of your already running app into the foreground. This is pretty normal. ;-)
- The warning will not continue if you edit your code and run it (because the app is then killed, reinstalled and started) or if you kill your process on the phone, e.g. via the DDMS.
解释:
这个不是Android平台的Bug,而是Android本身就是这样一种处理机制。
我们在Android平台下,通过返回按钮,或者程序本身的退出操作,去结束一个进程的时候,实际上Android虚拟机未必会将这个进程真正的结束掉,在内存允许的情况下,这个程序会以缓存的形式存在Android虚拟机中。只有在内存不足的情况下时,Android系统会清理长时间不被激活的任务,以为其他程序提供内存。
Android这样做,是为了你下一次更加快速的启动这个程序。
所以,出现楼主这种情况,是在你的程序没有发生任何变化,并且内存足够的情况下,会将上一次执行的程序,从缓存Cached状态直接放置到任务栈的顶端,则你的程序又可以继续执行了。
消除警告解决办法:
退出虚拟机的程序从新运行一遍。
8、unable to access android sdk add-on list
最近重装了Android Studio,但再次打开时却提示 unable to access android sdk add-on list,看了网上好些方法才成功打开,于是记录下来。
-
打开时提示如下错误
-
在安装路径下找到idea.properties文件,用记事本打开,添加disable.android.first.run=true,保存即可。
-
3
再次打开Android Studio即可。
9、android studio编译报错Gradle build finished with 100 error(s) in 14s 629ms
Gradle build finished with 100 error(s) in 14s 629ms。无法编译生成apk,最后查找资料,发现是build-tool版本低了,比sdk版本低。于是升级了build-tool工具。
那么如何升级了,打开sdkManager.exe工具,找到tool项下的build-tool,对其进行升级
10 、java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver
Java.lang.UnsupportedClassVersionError: com/Android/dx/command/Main : Unsupported major.minor ver
解决办法:
把compile sdk version与Build tool version改成对应的。
之后在clean ,rebuild。
11、SurfaceFlinger:hwcomposer module not found 问题解决
用android studio运行模拟器时,一直卡在开机页面不动,日志不断打印:
07-15 05:16:50.790 1286-1286/? E/SurfaceFlinger﹕ hwcomposer module not found
07-15 05:16:50.790 1286-1286/? E/SurfaceFlinger﹕ ERROR: failed to open framebuffer (No such file or directory), aborting
07-15 05:16:50.790 1286-1286/? A/libc﹕ Fatal signal 6 (SIGABRT) at 0x00000506 (code=-6), thread 1286 (surfaceflinger)
解决方案:
模拟器勾选” Use Host GPU”,如下图:
即,使用电脑GPU渲染模拟器,保存,重启即可。
12、解决Eclipse,MyEclipse出现An error has occurred,See error log for more details的错误
解决myeclipse则变为:
在命令行下执行 Myeclipse.exe -clean 对缓存进行清理
其他错误解决:
执行以后,问题依然没有得到解决。
后在进行破解时,发现只要是输入了中文名字,执行破解程序就失败,但如果是输入的是英文名字,则能正确返回 License No,仔细回忆,在系统安装时,由于我的用户名是中文的,且不是系统管理员用户组的用户,是否会是这个问题呢?
再次删除,在 User 目录下建立一个英文的目录,并将该目录赋予当前使用用户的完整读写权限,然后再次安装系统,在安装时选择将 MyEclipse 8.5 安装在这个新建立的目录之下。
在系统启动时,默认有一个 WorkSpaces 目录,将该目录也指向一个不含中文字的目录下,这次启动以后,再也没有报出
An error has occurred. See error log for more details.107
错误提示,问题得以解决。
附:MyEclipse 8.5 启动过程优化
前言:MyEclipse5.5 大小 139M;MyEclipse6.5 大小 451M;MyEclipse7.0 大小 649M;MyEclipse8.0 大小 772.3MB(速度方面比7.1和7.5都快了许多但还是很费内存)
下 载服务器又是国外的,下载速度累人也就罢了,只要你工作性能一流。不幸的是,MyEclipse 属于狂吃内存的主,特别是 MyEclipse7.0 运行起来,基本上不用干其他工作了,它是一会Quick update,一会 updating indexes ,你耐着性子等它 update 完,它老人家又开始自动 validation 了!
实在忍无可忍,收集了一些关于解决 MyEclipse 的耗内存的办法,经测试非常有效,整理出来,希望可以方便更多的朋友。
1、老是弹出Quick update error 、关闭myeclipse的Quick Update自动更新功能
这个问题的解决办法是关闭自动更新
Windows > Preferences > MyEclipse Enterprise Workbench > Community Essentials,
把选项 ”Search for new features on startup”的前勾去掉即可。
2 、关闭updating indexes
Window > Preferences > Myeclipse Enterprise Workbench > Maven4Myeclipse > Maven>
禁用Download repository index updates on startup 。
3 、关闭MyEclipse的自动validation
validation有一堆,什么xml、jsp、jsf、js等等,我们没有必要全部都去自动校验一下,
只是需要的时候才会手工校验一 下,速度立马提升好几个档次
windows > perferences > myeclipse > validation
将Build下全部勾取消
如果你需要验证某个文件的时候,我们可以单独去验证它。方法是:
在需要验证的文件上( 右键 -> MyEclipse -> Run Validation 。
4、 启动优化,关闭不需要使用的模块
一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的系统功能,
所以可以将一些不使用的模块禁止 加载启动。
Window > Preferences > General > Startup andy Shutdown 在这里列出的是MyEclipse启动时加载的模块
我这里只让它加载tomcat5 勾选 MyEclipse EASIE Tomcat 5 。
怎样才能知道哪些启动项有用呢?我现在把我知道的启动项用处说一下,还有很多不懂的,
希望大家懂的回复在下面 啊:
WTP :一个跟myeclipse差不多的东西,主要差别是 WTP 是免费的,如果使用myeclipse,这个可以取消
Mylyn:组队任务管理工具,类似于 CVS ,以任务为单位管理项目进度,没用到的可以取消
Derby:一种保存成 jar 形式的数据库,我没用到,取消
一大排以 MyEclipse EASIE 打头的启动项:myeclipse 支持的服务器,只选自己用的,其他取消,
比如我只选了 tomcat 。
5 、去掉MyEclipse的拼写检查(如果你觉的有用可以不去)
拼写检查会给我们带来不少的麻烦,我们的方法命名都会是单词的缩写,他也会提示有错,
所以最好去掉,没有多大的用处
Window > perferences > General > Editors > Text Editors > Spelling > 将Enable spell checking复选框的勾选去掉。
6 、去掉MyEclipse繁杂的自带插件自动加载项
Window > perferences > General > Startup and Shutdown > 将Plug-ins activated on startup
中的复选框有选择性的勾 选去掉。
7 、修改MyEclipse编辑JSP页面时的编辑工具
Window > perferences > General > Editors > File Associations >
在File types 中选择 *.jsp > 在Associated editors 中将”MyEclipse JSP Editor”设置为默认。
8 、修改MyEclipse安装目录的eclipse.ini文件,加大JVM的非堆内存
具体内容如下:
-clean
-showsplash
com.genuitec.myeclipse.product.ide
--launcher.XXMaxPermSize
256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en
-XX:PermSize=128M
-XX:MaxPermSize=256M
把下面的那个 -XX:MaxPermSize 调大,比如 -XX:MaxPermSize=512M,再把 -XX:PermSize 调成跟
-XX:MaxPermSize一样大。
今天更新了一下AndroidStudio, 结果编译程序时报错, 错误如下:
Error:The SDK Build Tools revision (19.0.3) is too low for project ':app'. Minimum required is 19.1.0
该错误提示使用的SDK Build Tools版本低了,
打开对应模块的配置文件,build.gradle, 设定buildToolsVersion为“19.1.0”
另外需要安装Android SDK Build-tools 19.1.0的版本,打开SDK Manager进行安装。
安装过程中出现如下错误:
修改https为http,在Android SDK Manager->Tools-Options...选项界面,
将“Force https://… sources to be fetched using http://…”勾选!
另外需要在文件(C:\Windows\System32\drivers\etc\hosts)中,添加如下一行:
203.208.46.146 dl-ssl.google.com (注意IP地址可能不同,按各自情况而定)
安装完后,从新sync一下项目即可。
14、现在编译器不能用httpclient
把编译版本换到6.0以下应该就能用了,在6.0的时候删除httpclient了,在5.1他就过时了,官方不推荐使用了。
如果在刚够构建Android Studio项目的时候,运行发现,出现没找到资源的错误!找不到com.android.support/appcompat-v7/23.0.1/res/values-v23/values-v23.xml
- /路径/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/res/values-v23/values-v23.xml
- Error:Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
- Error:Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
这是API 23(Android 6.0)中的资源文件,而查看build.gradle,编译的SDK只是为21,我们可以 尝试将compileSdkVersion设为23 (如果sdk里面没有下载API 23的,则需要下载),问题解决!
如果不想下载API 23怎么解决呢?降低appcompat的版本:将build.gradle里面的dependencies对应的appcompat版本降低:
将compile 'com.android.support:appcompat-v7:23.0.1'的版本改为:'com.android.support:appcompat-v7:22.2.1'