关闭

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

标签: androidR.java
427人阅读 评论(0) 收藏 举报
分类:
   问题描述: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&,就可以看到你的修改了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:241224次
    • 积分:3757
    • 等级:
    • 排名:第8541名
    • 原创:287篇
    • 转载:16篇
    • 译文:0篇
    • 评论:18条
    最新评论