Android项目开发中有时候需要改动apk的包名,比如希望能同时安装测试/debug版本和正式版。比较容易的方法是在eclipse中右键点击项目,选择Android Tools->Rename Application Package。但是这样做比较麻烦,实际上我们也可以通过build脚本在打包时修改包名,方法如下。
- ant, 在build.xml中加入下面一段。
<target name="-package-resources" depends="-crunch"> <!-- only package resources if *not* a library project --> <do-only-if-not-library elseText="Library project: do not package resources..." > <aapt executable="${aapt}" command="package" manifestpackage="your pakcage name" versioncode="${version.code}" versionname="${version.name}" debug="${build.is.packaging.debug}" manifest="${out.manifest.abs.file}" assets="${asset.absolute.dir}" androidjar="${project.target.android.jar}" apkfolder="${out.absolute.dir}" nocrunch="${build.packaging.nocrunch}" resourcefilename="${resource.package.file.name}" resourcefilter="${aapt.resource.filter}" libraryResFolderPathRefid="project.library.res.folder.path" libraryPackagesRefid="project.library.packages" libraryRFileRefid="project.library.bin.r.file.path" previousBuildType="${build.last.target}" buildType="${build.target}" ignoreAssets="${aapt.ignore.assets}"> <res path="${out.res.absolute.dir}" /> <res path="${resource.absolute.dir}" /> <!-- <nocompress /> forces no compression on any files in assets or res/raw --> <!-- <nocompress extension="xml" /> forces no compression on specific file extensions in assets and res/raw --> </aapt> </do-only-if-not-library> </target>
2. maven,在maven的build插件中加入下面一句
<plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.6.0</version> ... <configuration> ... <renameManifestPackage>com.napa.bluelion.reading.xzhz</renameManifestPackage> .... </configuration> ... </plugin>
3. gradle, gradle已经考虑了我们这点需求,可以直接为测试和正式版打出两个不同包名的Apk
可以直接在android default config中指定包名
android { compileSdkVersion 15 defaultConfig { ... packageName: your package name testPackageName: your test package name } }
也可以指定不同的productFlavors
android { ... defaultConfig { minSdkVersion 8 versionCode 3001 } productFlavors { flavor1 { versionCode 3001 packageName: your packageName0 } flavor2 { minSdkVersion 2500 packageName: your package name1 } } }
注意事项。有时我们会在代码中通过如下方式动态获取资源文件的id来加载资源文件。
int resId = getResources().getIdentifier(resName, "drawable", getPackageName());
这里的getPackageName会在编辑java代码时被编辑成Manifest文件中指定的package名字,导致我们在打包是改了包名以后出现运行时错误,找不到对应的资源文件。这时我们需要通过下面的方式在运行时动态获取pacakge name。
String packageName = getResources().getResourcePackageName(R.string.app_name);//这里的R.string.app_name是一个已经存在的资源。 int resId = getResources().getIdentifier(resName, "drawable", packageName);
原理:应用的包名其实不同于java代码的package名字。他实际上是appt工具在把资源文件编译成二进制时候用来生成资源的唯一标识用的。aapt在打包资源的时候会读取manifest文件中的包名来生成资源标识。所以以上的修改方式也就是通过在编译打包时指定package名字实现的。
相关推荐
android程序编译打包工具,可修改android程序的资源文件,并重新打包。
反编译工具包 下载后的操作步骤 Android APK反编译 未做测试全是最新工具包,另附已经做过测试的工具包,...首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk
ANDROID apk 反编译工具包 包含 Gapktool,DoAPK_Beta1.0和Dodo_APKToolsAPK安装包自由修改工具 推荐使用 Gapktool进行反编译,反编译出来的源码相对完整,方便初学者对某些程序的功能实现过程学习参考
Android反编译工具包是用于将已编译的Android应用程序(APK文件)转换回源代码的工具。升级后的工具包通常包含最新的反编译技术和功能,以应对新版本的Android系统和安全机制。 其中,dex2jar是一个常用的工具,...
是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建快捷菜单; 非常方便汉化工作者,对APK或...
apktool是一款开源的Android应用程序反编译工具,可以将Android应用程序的APK文件反编译成Smali代码和资源文件,方便开发者进行修改和定制。同时,apktool也可以将修改后的代码和资源文件重新打包成新的APK文件。
Delphi开发安卓程序,使用数据库时,调用系统自带sqlite3,是没有加密版的,必须引用三方加密库。这里包含编译好的支持加密的so库,支持128位AES,以及Delphi调用需要的文件和示例,这个源码没有充分测试,如有问题...
APK改之理(Apk IDE)是一款可视化的用于修改安卓Apk程序文件的工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk打包、Apk签名,支持语法高亮的代码编辑器,基于文件内容的关键字(支持单行...
android 4.0 源码编译的adb程序,修改了一些,经过测试非常稳定,比早期我上传的要稳定很多,没有发现crash等现象。 只有一个exe文件,181K。 比原先的adb 要小二期方便
NDK 命令编译生成Android动态so或可运行程序Demo,欢迎下载,本demo需要配置好NKD 环境变量,并修改Demo中NDK 指向的头文件路径后,执行cmd命令即可生成
APK+Dex文件反编译及回编译工具 简称:APKDB,是一款针对Android OS系统的APK文件编译程序,直接反编译修改的工具包。APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具;正常装后,它会在【鼠标右键】创建快捷...
Android APK+Dex(APKDB)安卓反编译利器包是一款针对Android OS系统的APK程序直接反编译修改的工具,集合了当今最强悍,最犀利的APK及Dex文件编译工具,这款软件比上版调整幅度比较大,而这轮主要是先进行稳定性方面...
是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建快捷菜单; 非常方便汉化工作者,对APK或Dex文件...
APK+Dex文件反编译及回编译工具 简称:APKDB,是一款针对Android OS系统的APK文件编译程序,直接反编译修改的工具包。APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具;正常装后,它会在【鼠标右键】创建快捷...
文件名称,AndroidPushNotificationsDemo-master.rar ...这个是在eclipse下编译通过的工程,我修改了一些错误。同时也下载到手机上,进行了MQTT 服务器端与android 程序端的通信。希望可以帮助到需要的人。
ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。 New-Contacts.apk是打包后产生的新的APK文件。 4) 签名,不签名安装时可能提示如下错误: Failure [INSTALL_PARSE_FAILED_NO_...
最近用android_serialport_api开发了一个串口通讯程序,在使用过程中发现android_serialport_api基本构架都有 ,不过还有不少的缺陷,缺陷之一是:读取串口信息是阻塞模式,在向串口发出命令后,如果没返回的话,...
一款很不错的apk反编译工具,打开apk改之理主程序后,直接将apk拖到程序里面,它就会自动开发反编译,反编译后可修改文件,修改的是smail文件。也有class文件可以对照看,集成了jad的。
Hotseat系统默认的是3个图标,我修改成5个,因为我不是UI,所以图片资源我是截图做的,比较丑陋,你可以自己替换。 增加了广播接收器,实现开机启动,添加了一个Service,该Service监听USB和HDMI接口,USB的监听注释...
ANDROID apk 反编译工具包 包含 Gapktool,DoAPK_Beta1.0和Dodo_APKToolsAPK安装包自由修改工具 推荐使用 Gapktool进行反编译,反编译出来的源码相对完整,方便初学者对某些程序的功能实现过程学习参考