`
niyanshi
  • 浏览: 19751 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android程序编译时更改包名

阅读更多

Android项目开发中有时候需要改动apk的包名,比如希望能同时安装测试/debug版本和正式版。比较容易的方法是在eclipse中右键点击项目,选择Android Tools->Rename Application Package。但是这样做比较麻烦,实际上我们也可以通过build脚本在打包时修改包名,方法如下。

 

  1. 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名字实现的。

0
0
分享到:
评论

相关推荐

    android程序编译打包工具

    android程序编译打包工具,可修改android程序的资源文件,并重新打包。

    Android APK反编译工具包(全)

    反编译工具包 下载后的操作步骤 Android APK反编译 未做测试全是最新工具包,另附已经做过测试的工具包,...首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk

    ANDROID apk 反编译工具包

    ANDROID apk 反编译工具包 包含 Gapktool,DoAPK_Beta1.0和Dodo_APKToolsAPK安装包自由修改工具 推荐使用 Gapktool进行反编译,反编译出来的源码相对完整,方便初学者对某些程序的功能实现过程学习参考

    开发工具:eclipse 黑色主题 + Android反编译工具包(升级)+ Postman

    Android反编译工具包是用于将已编译的Android应用程序(APK文件)转换回源代码的工具。升级后的工具包通常包含最新的反编译技术和功能,以应对新版本的Android系统和安全机制。 其中,dex2jar是一个常用的工具,...

    Android反编译及回编译工具包Apkdb 2.0最新版

     是一款,针对Android OS系统的APK程序,直接反编译修改的工具。  APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具;  正常安装后,它直接在【鼠标右键】创建快捷菜单;  非常方便汉化工作者,对APK或...

    android 反编译apktool

    apktool是一款开源的Android应用程序反编译工具,可以将Android应用程序的APK文件反编译成Smali代码和资源文件,方便开发者进行修改和定制。同时,apktool也可以将修改后的代码和资源文件重新打包成新的APK文件。

    Delphi开发Android程序调用wxSqlite3编译的so文件

    Delphi开发安卓程序,使用数据库时,调用系统自带sqlite3,是没有加密版的,必须引用三方加密库。这里包含编译好的支持加密的so库,支持128位AES,以及Delphi调用需要的文件和示例,这个源码没有充分测试,如有问题...

    Android apk反编译工具 亲测好用 ApkIDE最新3.3.5少月增强版20170130

    APK改之理(Apk IDE)是一款可视化的用于修改安卓Apk程序文件的工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk打包、Apk签名,支持语法高亮的代码编辑器,基于文件内容的关键字(支持单行...

    VS2008 编译 android 4.0 adb

    android 4.0 源码编译的adb程序,修改了一些,经过测试非常稳定,比早期我上传的要稳定很多,没有发现crash等现象。 只有一个exe文件,181K。 比原先的adb 要小二期方便

    NDK 命令编译生成Android动态so或可运行程序Demo

    NDK 命令编译生成Android动态so或可运行程序Demo,欢迎下载,本demo需要配置好NKD 环境变量,并修改Demo中NDK 指向的头文件路径后,执行cmd命令即可生成

    APKDB(Android反编译工具)v2.0

    APK+Dex文件反编译及回编译工具 简称:APKDB,是一款针对Android OS系统的APK文件编译程序,直接反编译修改的工具包。APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具;正常装后,它会在【鼠标右键】创建快捷...

    Android APK+Dex(APKDB) 安卓反编译利器包 v1.9.0 正式版.zip

    Android APK+Dex(APKDB)安卓反编译利器包是一款针对Android OS系统的APK程序直接反编译修改的工具,集合了当今最强悍,最犀利的APK及Dex文件编译工具,这款软件比上版调整幅度比较大,而这轮主要是先进行稳定性方面...

    Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版

    是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建快捷菜单; 非常方便汉化工作者,对APK或Dex文件...

    APKDB(Android反编译神器)v2.0.0 (20151122) 最新版

    APK+Dex文件反编译及回编译工具 简称:APKDB,是一款针对Android OS系统的APK文件编译程序,直接反编译修改的工具包。APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具;正常装后,它会在【鼠标右键】创建快捷...

    MQTT android 端程序包---已经成功在手机上验证

    文件名称,AndroidPushNotificationsDemo-master.rar ...这个是在eclipse下编译通过的工程,我修改了一些错误。同时也下载到手机上,进行了MQTT 服务器端与android 程序端的通信。希望可以帮助到需要的人。

    apk反编译,打包及签名工具(附详细使用说明)

    ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。 New-Contacts.apk是打包后产生的新的APK文件。 4) 签名,不签名安装时可能提示如下错误: Failure [INSTALL_PARSE_FAILED_NO_...

    android开发串口,修改串口为非阻塞模式

    最近用android_serialport_api开发了一个串口通讯程序,在使用过程中发现android_serialport_api基本构架都有 ,不过还有不少的缺陷,缺陷之一是:读取串口信息是阻塞模式,在向串口发出命令后,如果没返回的话,...

    Android反编译利器-apk改之理

    一款很不错的apk反编译工具,打开apk改之理主程序后,直接将apk拖到程序里面,它就会自动开发反编译,反编译后可修改文件,修改的是smail文件。也有class文件可以对照看,集成了jad的。

    Android Launcher 源码修改可编译

    Hotseat系统默认的是3个图标,我修改成5个,因为我不是UI,所以图片资源我是截图做的,比较丑陋,你可以自己替换。 增加了广播接收器,实现开机启动,添加了一个Service,该Service监听USB和HDMI接口,USB的监听注释...

    ANDROID apk 反编译工具大全(已升级)

    ANDROID apk 反编译工具包 包含 Gapktool,DoAPK_Beta1.0和Dodo_APKToolsAPK安装包自由修改工具 推荐使用 Gapktool进行反编译,反编译出来的源码相对完整,方便初学者对某些程序的功能实现过程学习参考

Global site tag (gtag.js) - Google Analytics