重命名APK中的包名称

bra*_*d51 7 android rename package

我创建了一个目前市场上的AIR应用程序.要更新应用程序,显然我必须保留相同的包名称.我的第一个版本是使用带有ADT插件的Eclipse打包的.

现在使用AIR 3.0 Native Extensions(ANE)在我第一次开发应用程序时不可用,我目前必须使用AIR的命令行工具创建我的APK.不幸的是,这些命令行工具会强制您使用以"air"开头的包名.例如,我需要包名"com.example".AIR将包名称创建为"air.com.example".

所以现在,由于包名已经改变,我无法在市场上更新我的应用程序.Adobe有这篇可怕的文章来帮助你重命名和删除包中的"空气".我不是一个优秀的程序员,所以这真的让我难过. http://kb2.adobe.com/cps/875/cpsid_87562.html

显然,这些信息在某些方面已经过时或不正确.我完全绊倒了使用apkbuilder的第12 :

 apkbuilder final.apk -u -z resources.arsc -f classes.dex
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

这个工具已被弃用.有关更多信息,请参阅--help.java.io.FileNotFoundException:resources.arsc不存在

我已使用步骤10创建新的resources.arsc文件.它显然存在并且位于正确的位置.我尝试使用apkbuilder与其他resources.arsc文件从其他项目中获取.我仍然得到相同的错误消息.

这种工作有可能吗?如果有人对此感兴趣,我有一个带有示例AIR apk的zip文件,所有命令行工作的windows bat文件,以及所有需要的实用程序,因此不需要下载它们.要开始,您只需要更改我的path.bat以适合您的系统.并且您需要notepad ++(或等效的)来批量自动重命名几个文件中的包名称. bradwallacedesign.com/dktimer/renameApkProject.zip

非常感谢!

bra*_*d51 9

这是在电脑上完成的.我不知道如何在Mac上执行此操作.

我不建议使用它来删除"空气".从航空包名称.如果这样做,将不会提示用户在其设备上下载空气.用户将收到错误消息,而不知道问题的线索.当然,您可以使用空中捕获运行时来解决此问题.

http://bradwallacedesign.com/share/renameAPK.zip

下载并解压缩我的文件(renameAPK.zip)到c:\ renameAPK.

所需文件:

  1. 我的文件(renameAPK.zip)包含apkTool
  2. java jdk/jre
  3. android SDK
  4. notepad ++(或可以跨多个文件重命名的等效文本编辑器)

我做了很多蝙蝠文件,因为我不知道如何将它们组合成一个文件.您需要编辑每个更改路径名和文件名以使用您的计算机和apk文件.

我按照我使用它们的顺序编号所有蝙蝠.一旦命令行打开,我输入我想要的bat文件的编号,然后点击tab键自动完成bat文件的名称,然后按Enter键运行该bat文件.

说明:

双击`openCmd.bat打开一个命令行,指向包含所有文件的目录.

0. 运行0path.bat来设置路径.(我现在不记得是否需要这个adobe air sdk但是我已经把它放在我的路径上了.很明显,JDK是必需的,我认为是jarsigner和zip对齐的android sdk.)

1.运行1decompileAPK.bat让apkTool将你的应用程序反编译成一个名为UNZIPPEDapk的文件夹

2.按照2editManifest&PackageName - 说明(不是蝙蝠).txt中的说明使用UNZIPPEDapk中的Notepad ++编辑清单和包名称:

编辑AndroidManifest.xml:

一个.将包名称从air.oldPackageName更改为newPackageName

编辑其他所需条目:

C.重命名"smali"文件夹中的文件夹系统,以便它可以使用您的新软件包名称,例如:如果旧软件包名称为:air/oldName,则更改文件夹以匹配新软件包名称:air/newName

使用notepad ++(或任何可以在许多文件中查找和替换文本的编辑器)


d.ctrl + shift + f ---"在文件中查找"

  find:
air/oldPackageName
  replace with:
newPackageName
  where:
all files in UNZIPPEDapk/smali
Run Code Online (Sandbox Code Playgroud)

(我认为有超过200个替补)

3.运行3buildDistFolder.bat让apkTool在UNZIPPEDapk\Dist文件夹中构建新的apk

4.按照4getMissingFiles - instructions.txt中的说明恢复新版本中的2个丢失文件:

一个.在3buildDistFolder期间没有构建两个文件:

3buildDistFolder.bat在\ UNZIPPEDapk\dist文件夹中构建了新的apk,但无法复制2个文件:

(skipping hidden file 'C:\Users\computer\apkTool\UNZIPPEDapk\assets\META-INF
Run Code Online (Sandbox Code Playgroud)

\ AIR\extensions\com.adobe.mobile\META-INF\ANE\Android-ARM.classpath')(跳过隐藏文件'C:\ Users\computer\apkTool\UNZIPPEDapk\assets\META-INF\AIR\extensions\com.adobe.mobile\META-INF\ANE\Android的ARM.project')

从原始apk中获取这两个文件,然后将它们放入正确文件夹中的新apk中

将yourApp.apk从DKTimer/Dist /复制到bat文件所在的根目录.

5.运行5signAPK.bat以签署apk.

developer.android.com/guide/publishing/app-signing.html

6.运行6verifySigned.bat以验证签名是否正常工作

7.运行7zipAlign.bat以对齐apk文件.

developer.android.com/guide/developing/tools/zipalign.html


你完成了这一点.如果要在设备上进行测试,请继续.

8.运行8installAPK.bat在usb连接的设备上安装apk.

9.如果要使用远程调试,请运行9remoteDebugger.bat.


我希望这可以帮助别人.如果我忘记包含某些内容,请告诉我.另外,如果您知道更好的方法,请注释(例如如何将其组合成1个长暂停的bat文件......)


Jef*_*ard 6

您可以设置一个简单的环境变量来air.轻松禁用前缀.Adobe AIR包装程序中存在以下代码:

String optOut = System.getenv("AIR_NOANDROIDFLAIR");
if ((optOut == null) || (optOut.indexOf("true") == -1)) {
  packageName = "air." + packageName;
}
Run Code Online (Sandbox Code Playgroud)

因此,只需将AIR_NOANDROIDFLAIR环境变量设置为true,重新打包您的应用程序,它就不会有air.前缀.Google如何在WindowsMac中为您的特定操作系统版本设置环境变量.

例如,我在Mac/Linux上使用命令行编译器,所以我运行:

> export AIR_NOANDROIDFLAIR=true
> java -jar $AIR_HOME/lib/adt.jar -package -target apk-captive-runtime -storetype pkcs12 -keystore cert.p12 -storepass *** Main.apk Main-app.xml Main.swf
Run Code Online (Sandbox Code Playgroud)

警告:我不知道这有什么影响.根据上面的某个人的说明,这可能只是强制运行时的一个好主意(但这是AIR 3.8的默认值).

更新: Renaun Erickson 说不应该引起问题.

这里交叉发布(略有不同的问题,相同的答案).


ose*_*003 5

尝试了几种apkRename工具后,我发现它们对于某些应用程序都失败了,例如HTC设备上的com.android.browser。

原因是在apktool中,有时无法正确解压缩apk文件。


因此,我创建了自己的工具:https : //github.com/sjitech/ApkRename 不需要apktool,不需要aapt,只需Java和jar实用程序。该实用程序直接修改AndroidManifest.xml,因此无需通过apktool重新编译整个资源,因此很干净。

经过测试的设备:11种(都为android 4+,但2.2+不能正常运行)已测试的操作系统:Mac OS X 10.9和CentOS6。(带有bash 4+的Cygwin应该可以,但尚未经过测试)