ubuntu和windows下几种不同的修改Launcher的方法

来源:互联网 发布:淘宝上说ins是什么意思 编辑:程序博客网 时间:2024/06/08 13:15
总共有三大类:#################第一类,改签名:#################前面几个步骤ubuntu和windows通用:=====================================================================================================  1 eclipse中新建android project,选择create project from existing source,去android源码目录下的packages/apps下找到相应的文件夹。(直接修改的是源码,所以需要先打包备份一下)然后选择build target之后finish,可能会等待一段时间。  2 导入完成后,src全是错误,由于在Android源码中,很多方法、成员、类、包都被打上@hide标签,这些成员在SDK中没有公开,以至于在编译Launcher源码时最常遇到的类android.view.View的成员mScrollX无法访问。。以Launcher2为例,我们用到的有:(生成的包的路径为out/target/common/obj/JAVA_LIBRARIES)        1)framework_intermediates/classes.jar :这个主要是android的框架类        2)android-common_intermediates/classes.jar :这个包含com.android.common.Search这个类        3)core_intermediates/classes.jar :这个包包含dalvik.system.VMRuntime这个类        右键工程名称然后选择Build Path->Configure Build Path...->Libraries->Add Library->User Library->User Libraries...->New...然后将上面3个依赖的包一个个的加入进来,分别命名为android_framework,android_common,android_core.将3个包加入进来后,然后还需要将它们放到android2.3.3这个包的前面,可以在Build Path配置中选择Order and Export这时候就会发现Launcher2工程以及没有错误了,也可以编译了。(其他的模块可能需要别的jar包,都在out/target/common/obj/JAVA_LIBRARIES下能找到).=====================================================================================================然后:===================================================================================================windows环境下:工程现在是不能直接运行的,因为eclipse默认的debug签名跟模拟器中的系统签名不相符合。因此,因此,需要手动签名。  3 用eclipse导出没有签名的版本,右键工程,android tools->export unsigned application package,得到未签名的apk包。  4 在build\target\product\security下都是一些公钥和密钥,system版本的公钥和密钥是platform.pk8和platform.x509.pem两个文件,shared版本的公钥和密钥是shared.pk8和shared.x509.pem两个文件。模块应用是什么版本的可以查看AndroidManifest.xml文件,android:sharedUserId="android.uid.system" 表示是system版android:sharedUserId="android.uid.shared"是shared版。除了公钥密钥之外,还需要签名的包即signapk.jar,它在out/host/linux-x86/framework下。  5 将这些工具准备好后,就能打出签名包了。比如我的为签名apk是Launcher.apk并且是shared版本。因此java -jar signapk.jar share.x509.pem shared.pk8 Launcher.apk Launcher-signed.apk(system版本就用platform.pk8和platform.x509.pem相应的替换一下)  6 得到了签名包之后,adb install -r Lancher-signed.apk就行了,直接替换掉原来的Launcher。=====================================================================================================ubuntu环境下:利用android源码提供的工具自动签名  3 编译源码  4 gedit .bashrc   最后面添加        export PATH=$PATH:/home/xxx/android/out/host/linux-x86/bin        export ANDROID_PRODUCT_OUT=/home/xxx/android/out/target/product/generic其中的/home/xxx/android是源码目录  5 然后启动模拟器,命令为emulator  6 在eclipse中修改好源码模块比如Launcher2之后,将工程放到android源码目录下的packages/apps下,删除掉自动生成的一些文件,比如bin,assets,gen等等。跟其他模块文件保持一致。  7 android源码目录下执行 . build/envsetup.sh  这个时候多出mm,mmm等命令,进入修改过后的那个模块目录下,比如packages/apps/Launcher2/下,执行mm,会自动生成已经签名过的apk文件,放在out/target/product/generic/system/app下。    8直接adb install -r out/target/product/generic/system/app/Launcher2.apk即可。=====================================================================================================注意:以上的签名跟源码相关,如果源码只是generic的也就是模拟器版,那么编译出来的也只能在模拟器上跑,若要在真机上跑,则需要真机的签名库,可惜没有- -,所以需要:##################第二类,改包名。##################照常理说,应该很简单,直接在src下的包上F2,然后修改。但是我的机器这个eclipse很奇怪,总有各种问题,现在总结下:1.导入工程,备份一下AndroidManifest.xml,原因下面有。F2修改包名,修改的时候下面四个选项都选上。2.修改AndroidManifest.xml将备份的AndroidManifest.xml换回来,然后ctrl+f,替换全部的原来包名为你现在的,比如之前是com.android.launcher2,现在换成com.pqrs.launcherEx。然后将android:sharedUserId="XXX"这句话删掉。(这么做的原因是,在第一步中可能已经自动的替换了一些这个xml文件的东西,但是我这eclipse乱七八糟的,缺字或者其他什么的,此时文件已经损坏了。所以第一步之前,需要备份一下AndroidManifest.xml,在这个步骤中替换回来,然后ctrl+f进行替换。)3.保存后会有提示,说这个文件变化了,是否作出其他变更,点击yes。然后res下可能会有一些错误,打开那些xml文件,一般都是有些资源引用还是之前的com.android.launcher2,相应的都该成com.pqrs.launcherEx.比如<favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2">改为<favorites xmlns:launcher="http://schemas.android.com/apk/res/com.pqrs.launcherEx">4.由于AndroidManifest.xml中的包名改了,gen目录下的自动生成文件也会跟着变化,但是src下的java文件引用的R文件路径还没便过来,还需要更正过来。方法:包名上ctrl+h,选择file search,在Containing text下输入之前的import语句,比如是import com.android.launcher2.R;在File name patterns:中填入*.java(表示搜索java文件)scope下选择Selected resources,然后点击Replace进行全局替换。5.如果都顺利的话,现在这就是一个新的工程了,直接在eclipse中修改运行即可,而且不限操作系统。====================================================================================================#############################################第三类,网上流传的,最传统的方法,只限于ubuntu下。##############################################1、建立基本的Android开发环境请参考官方文档或<<Android模拟器在Ubuntu8.10的安装>>2、编译Android源码Android源码根目录下通过make进行编译,请注意一些配置,具体可参考<<android源码的编译>>3、把eclipse工程配置文件复制到Android源码根目录下cp development/ide/eclipse/.classpath ./chmod u+w .classpath # Make the copy writable4、修改eclipse程序的配置1)、增大eclipse内存设置把eclipse.ini(在eclipse软件的安装目录下)的3个值改为下面的值:-Xms128m-Xmx512m-XX:MaxPermSize=256m2)、把Android-formatting.xml和android.importorder导入eclipse(可选)Android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下Android-formatting.xml用来配置eclipse编辑器的代码风格;android.importorder用来配置eclipse的import的顺序和结构。在window->preferences->java->Code style->Formatter中导入Android-formatting.xml在window->preferences->java->Code style->Organize Imports中导入Android.importorder3)、安装anyedit插件(可选)在http://andrei.gmxhome.de/anyedit/下载并导入eclipse中5、把Android源码作为一个工程导入eclipse导入前先检查.classpath里的文件在Android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹),.classpath里多余的路径可删除新建Java Project(不是Android project,否则会破坏android源码),www.linuxidc.com选择从已存在的工程导入,工程名任意,完成。导入时,eclipse要build工程,比较慢。导完后,一般都没有错误。这里也就回答了第4个问题6、eclipse上调试Android里的程序。为了不让其它版本的Android工具和android文件系统影响下面的编译和调试,需要从环境变量中去除android工具和android文件系统的路径:vim ~/.bashrc看看有没有在PATH变量中加入Android工具和android文件系统的路径,如果加有,则注释它。通过下面的方法,我们是不需要在.bashrc中添加android工具和android文件系统的路径的执行:cd Android源码目录. build/envsetup.sh #设了环境变量之后,会多出mmm等命令,可以通过输入help来查看lunch 1   # 把emulator等工具和ramdisk.img等文件的路径对应起来,就可以直接调用emulator等工具,也解决了第3个问题emulator &ddms &注意,先启动ddms,再启动eclipse,这样eclipse中就不会说端口冲突然后在eclipse中配置调试类型和端口:在Run->Debug Configurations->Remote java application上双击,然后,”Host:”设为localhost,”Port:”设为8800,”Connection Type”为Standard(Socket Attach)然后“Apply”注意,上面设置的端口要与DDMS中设置的端口一致,ADT插件使用了8700端口,因此上面设置的端口是8800。如果出现连不到VM的错误时,请注意,要先在DDMS中选中某一进程(对应某一应用程序),才能在eclipse执行 Debug。在eclipse调试时,可以设断点、单步调试。估计google团队也是这样开发、调试Android应用程序的7、编译Android源码执行:cd Android源码目录. build/envsetup.sh那 么就会多出mm/mmm等命令,mm/mmm用来编译模块(包括C、C++、JAVA程序)。我们也可以直接在 Android源码根目录下执行“make 模块名”来编译模块(模块名可以在.mk文件中找到)。模块编译后会在out/target/product/generic/system/app下生 成对应的.apk包。但是,用mm/mmm来编译生成的.apk并不会打包到system.img中,需要我们手动通过make snod把 system文件夹打包为system.img,不过这就得重新运行模拟器了,这也是很麻烦了。对于我们开发者来说,我们可以这样做:1)把需要修改、调试的模块(比如AlarmClock.apk)从/system/app下移除,然后make snod,这样system.img就没有AlarmClock.apk了。2)运行模拟器,就看不到AlarmClock了3)修改AlarmClock源码并用mm/mmm来编译,在/system/app下生成AlarmClock.apk4)通过adb把AlarmClock.apk安装到Android文件系统中,安装方法有两个:    A、通过adb install xxx/AlarmClock.apk    B、通过adb push xxx/AlarmClock.apk /data/app两 种方法都可以把 AlarmClock安装到/data/app下,Android会自动把它显示在主菜单中(只要AlarmClock.apk中有一Activity包 含android.intent.category.LAUNCHER属性),不过A方法在/data/app生成 com.android.alarmclock.apk,B方法则是 AlarmClock.apk。用A方法时,如果原来已经安装了 AlarmClock,你还得先adb uninstall 它,而B方法则不用。推荐使用B方法。同样,卸载可以通过adb uninstall或adb shell rm xxx/xxx.apk来,也推荐用删除的方法来卸载

0 0
原创粉丝点击