[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工程中R.java文件丢失重建

在编程中或者导入别人的代码时可能会遇到R.java丢失,这时首先检查你的代码是否有错误,有错误要改正之,然后检查布局文件和其他xml文件是否有错误,有错误改正之,如果还是无法建立R.java文件,再检...
  • twlkyao
  • twlkyao
  • 2013年03月13日 21:18
  • 2761

android的R.java无法修改解决!

搞了大半天。。。照着例子也做不出来,原来是因为没有写布局 所以会各种错误,R.JAVA是无法更改的,为自动生成 在layout下,建XML,就OK...
  • wuyouhome
  • wuyouhome
  • 2015年11月26日 14:45
  • 552

使用Windows上SourceInsight工具建立分析Linux下uboot源码工程

SourceInsight软件可以说是分析查阅大型源码工程文件的神器!界面不错!功能强大! 第一步:安装好SourceInsight后打开软件 点击上面的Project--->new pr...
  • coding__madman
  • coding__madman
  • 2016年04月17日 22:25
  • 3280

Android 新建工程R.java报错解决思路

朋友刚接触Android,问了这个问题。以下对话中可以看到解决思路,希望可以帮到遇到同样问题的童鞋: 详细Log:[2016-11-21 08:46:07 - Framework Resource ...
  • zhoumushui
  • zhoumushui
  • 2016年11月21日 17:39
  • 814

android生成的工程无R.java

我是在myeclipse里面选择windows--Android SDK Manage 把没安装的版本都安装,就好了。。...
  • u012242610
  • u012242610
  • 2013年12月27日 11:04
  • 604

解决R.java无法自动生成id的问题

网上大部分的说法是删掉gen让它自动生成,但是我觉得不是很靠谱。其实大部分人遇到的问题应该是和我一样,复制了资源文件进行改造,但是忘了更改资源文件名了,重名的话R.java肯定无法自动生成id,所以只...
  • u012411003
  • u012411003
  • 2014年03月14日 22:55
  • 783

Eclipse手动生成R.java方法

1.选择菜单Project 勾选上 Bulid Automatically(自动构建部署) 。   2.选择菜单Project 点Clean后会重新构建项目,R.java文件在这个时候会重新更新生...
  • i_lovefish
  • i_lovefish
  • 2012年08月27日 18:40
  • 6830

最近研究Android,发现对于外部导入的工程,编译的时候不能够正常生成R.java文件的解决办法

最近研究Android,发现对于外部导入的工程,编译的时候不能够正常生成R.java文件的解决办法,经过多次使用验证发现可以解决d...
  • lis2012
  • lis2012
  • 2014年08月07日 22:53
  • 1819

R.java不能自动生成资源ID的问题

如果资源添加后R.java没有对应的资源ID,说明当前工程内代码有错误,这时需要修正代码成功编译次后,添加资源才能在自动在R.java内生成...
  • yoie01
  • yoie01
  • 2014年03月18日 17:05
  • 463

Android中R.java各种错误修复

1.Android R.java文件丢失的问题 R.java这个文件是会自动生成的。但是有时候你写错xml文件的时候,R.java是不会自动生成对应的值。这个时候我们会很习惯去clean一下...
  • u010350809
  • u010350809
  • 2014年02月12日 10:21
  • 5274
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Android--Tool]使用activity-lifecycle源码建立工程无R.java的问题
举报原因:
原因补充:

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