[Android--Tool]使用activity-lifecycle源码建立工程无R.java的问题

原创 2015年07月11日 00:22:25
   问题描述:Andriod工程的R.java是自动生成的,当改变程序代码,XML文档内容时,都会自动添加上内容的。之前对R.java做过了解和修改,并整理了网络一些关于R.java的资料。
   先新建一个工程,然后将源码的各个部分对应添加到工程中,将工程自带的活动、布局等删除掉,发现工程原有的R.java丢失了,R.java一般不允许手动修改,我手动修改了其内容后ADT工具底下会显示许多红色字的警告,一旦将project进行clean后,R.java又没有了,于是src中的源码无法调用R类中的内容了,出现了许多红色的叉。

网上解决方法主要有这几种 :

1.有时候eclipse不自动编译,把project clean一下,让R.java重新生成

2.选择菜单 Project >> Clean,前提是勾选上 BulidAutomatically(自动构建部署) Clean后会重新构建项目,因为一般情况下,R.java文件在这个时候会重新更新生成一边,如果工程有错,就不会自动生成。

3.选择工程,右键Android Tools >> Fix ProjectProperties 这个操作有时候可以修正一些错误。

4.旧版本1.5/1.6/2.1 SDKlayout_height里面没有看到match_parent这个属性,android:layout_height="match_parent" 这个属性会导致xml编译不了不能生成R.java

这个是把高级版本的降级后可能会出现的情况,解决办法就是把match_parent换成fill_parent

导入其它源码时候,首先要保证源码的SDK版本和你eclipse默认版本是否一致

5.项目中有其他xml和类错误的时候不会自动编译,jar包引用有错误的时候也会导致不会自动编译。

另附:

查看源码版本办法:打开default.properties 文件(直接拖入ADT工具即可),看target=android-7 这后面这个数是多少。

版本对应关系:target=android-3 <---> android 1.5 ,target=android-4 <---> android 1.6,

target=android-7 <---> android 2.1 ,target=android-8<---> android 2.2 ,target=android-10 <--->android 2.3.3

target=android-14 <---> android 4.0,target=android-15 <---> android 4.0.3 ,target=android-16<---> android 4.1 ,target=android-17<---> android 4.2 其它的自己测试下。

问题解决的探索:

重建了一个工程,没有删除掉其原本带有的activity_main等布局与src中的.java文件,但是当把下载的应用程序的AndroidManifest.xml文件替换掉新建工程自带的该文件后,R.java自动不见了。因此,原因应当就是上面的源码的版本与我安装的SDK的版本不一致造成的。

下载的应用程序的AndroidManifest.xml中有以下一句:

<</span>uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />

default.proterties中的  target=android-8 

这说明下载来的应用程序是针对Android2.2的版本的,支持APIlevel715,不能支持17的。

而我在新建工程的project.properties中查看的   target=android-17

以上几种方法都试了,R.java依旧没出现,整个工程还是一大堆错误。随便点了一个有错误的布局XML文件,看到这样一个错误代码android:layout_height="match_parent" 之前我都用1.5/1.6/2.1 版本的SDKlayout_height里面没有看到match_parent这个属性,然后问群一个兄弟说这个属性是2.X版本的,想了下,是不是因为工程的SDK版本和eclipse默认的SDK版本问题呢,于是选择工程,右键 Properties >> Android然后看到右边的一块 TargetName 我的是选中Android 1.5,然后换了一个 2.1 ,点击Appply ,工程自动构建,看到错误少了一些,换到2.2,重新构建,错误没了,久未解决的问题解决了,R.java也出来了,一个字高兴啊,启动模拟器一切正常。

明天安装一个Android2.2platform试一下。R.java是由ADT自动生成的,不能手动修改。R.java丢失的问题,可能不仅是源代码的版本问题,可能在源代码修改成现有版本后,还会存在,还有可能是.xml文件没有编译的问题。

修改原有的Android应用

1. 首先新建一个android工程,加载自己的java文件和资源文件
2.
在自己的android工程初步调试成功以后,把该工程的java文件,资源文件拷贝到联系人对应的java文件和资源文件目录

3. 然后在linux下执行以下命令,编译人联系人模块,把资源文件编译到联系人目录中
       . build/envsetup.sh
       mmm packages/apps/Contacts
4.
刷新android源码工程,这个时候你就可以在Contacts包目录下看到你新加的资源文件和源文件了,并可以在源码工程下修改代码并直接调试了
5. ??
为什么不在android源码工程下直接添加源文件和xml资源文件了????
       
答:因为我们的android源码工程师以java工程导入的,如果添加androidxml文件的话,java程序无法识别资源R文件,所以我们必须先把需要的
               xml
资源文件先在linux下编译
6.
在源码工程修改后,则可在linux下再次执行联系人编译命令,并make snod加载system.img文件,并启动模拟器(emulator&,就可以看到你的修改了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

[android tool]使用TortoiseGit把源码存到开源中国的git服务器上

非常感谢OSC提供了这么好的一个国内的免费的git托管平台。这里简单说下TortoiseGit操作的流程。很傻瓜了 首先你要准备两个软件,分别是msysgit和tortoisegit,乌龟还可以...

关于建立Android工程R文件丢失的问题

今天开始学习Android了,好久没打开eclipse,建立Android工程老是报错,于是手残的把appcompat-v7给删了,然后建立工程以后重新出来的appcompat-v7有个小叉号,百度了...
  • xiaoduc
  • xiaoduc
  • 2015年07月17日 19:25
  • 264

Android中“活动(Activity)的生命周期(lifeCycle)”

Android引入“生命周期机制”的原因是什么? 最根本的原因,是“资源竞争”——内存。 智能手机通常都要求支持多任务(multi-task),比如打开音乐播放器同时,还在使用其他应用程序。“多任务”...

android Activity Lifecycle即生命周期

Activity中包含以下方法: onCreate() :第一次启动Activity时调用该方法,这这个方法中应当初始化所有的静态数据,创建views并绑定相关的数据,该方法还为您提供了一个包含该活...

android 之 Activity lifecycle

当页面加载一个新的Activity 时会调用默认实现的三个方法,依次为: onCreate();onStart();onResume(); 当这三个方法被依次运行完以后,该Activity 就可以...

Android官方文档翻译 十六 4.Managing the Activity Lifecycle

Managing the Activity Lifecycle 管理activity的生命周期
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android--Tool]使用activity-lifecycle源码建立工程无R.java的问题
举报原因:
原因补充:

(最多只允许输入30个字)