重命名 APK 内的包名称

2024-04-20

我创建了一个AIR app目前市场上有这种产品。要更新应用程序,显然我必须保留相同的包名称。我的第一个版本是使用以下方式打包的Eclipse使用 ADT 插件。

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

所以现在,我无法在市场上更新我的应用程序,因为包名称已更改。 Adobe 有这篇可怕的文章可以帮助您重命名并删除包中的“空气”。我不是一个出色的程序员,所以这确实难倒了我。http://kb2.adobe.com/cps/875/cpsid_87562.html http://kb2.adobe.com/cps/875/cpsid_87562.html

显然,此信息在某些方面已过时或不正确。 我完全被第12步绊倒了,它使用了apk构建器:

 apkbuilder final.apk -u -z resources.arsc -f classes.dex

我收到此错误消息:

此工具已弃用。请参阅 --help 了解更多信息。 java.io.FileNotFoundException:资源.arsc不存在

我已经使用步骤 10 来创建新的资源.arsc文件。它显然确实存在并且位于正确的位置。我尝试将 apkbuilder 与从其他项目获取的其他 resources.arsc 文件一起使用。我仍然收到相同的错误消息。

这工作到底有机会吗?如果有人对此感兴趣,我有一个 zip 文件,其中包含示例 AIR apk、用于所有命令行工作的 Windows bat 文件以及所有所需的实用程序,因此无需下载它们。首先,您只需更改我的 path.bat 以适合您的系统。并且您需要 notepad++(或等效工具)来批量自动重命名多个文件中的包名称。bradwallacedesign.com/dktimer/renameApkProject.zip http://bradwallacedesign.com/dktimer/renameApkProject.zip

非常感谢!


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

我不建议用它来去除“空气”。来自航空包裹名称。如果您这样做,系统将不会提示用户在其设备上下载air。用户将收到一条错误消息,而不知道问题所在。当然你可以使用air captive runtime来解决这个问题。

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

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

所需文件:

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

我制作了很多bat 文件,因为我不确定如何将它们合并到一个文件中。您需要编辑每一项来更改路径名和文件名,以便与您的计算机和 apk 文件配合使用。

我按照使用的顺序对所有蝙蝠进行了编号。一旦命令行打开,我输入我想要的bat文件的编号,然后按tab键自动完成bat文件的名称,然后按回车键运行该bat文件。

指示:

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

0. run 0路径.bat设置你的路径。 (我现在不记得是否需要 adobe air sdk,但我的路径中有它。显然,我认为需要 JDK 以及 jarsigner 和 zipalign 的 android sdk。)

1. run 1反编译APK.bat让 apkTool 将您的应用程序反编译到名为 UNZIPPEDapk 的文件夹中

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

编辑AndroidManifest.xml:

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

b.编辑其他需要的条目:

c.重命名“smali”文件夹内的文件夹系统,以便它与您的新包名称一起使用 例如: 如果旧包名称为:air/oldName,则更改文件夹以匹配新包名称:air/newName

use 记事本++(或任何可以查找和替换多个文件中的文本的编辑器)


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

  find:
air/oldPackageName
  replace with:
newPackageName
  where:
all files in UNZIPPEDapk/smali

(我认为有超过200个替代品)

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

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

a.3buildDistFolder 期间未构建两个文件:

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

(skipping hidden file 'C:\Users\computer\apkTool\UNZIPPEDapk\assets\META-INF

\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 中获取这 2 个文件,并将它们放入新 apk 的正确文件夹中

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

5. run 5signAPK.bat对 apk 进行签名。

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

6. run 6验证签名.bat验证签名是否正常工作

7. run 7zip对齐.bat对齐 apk 文件。

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


至此你已经完成了。如果您想在设备上测试它,请继续。

8. run 8安装APK.bat在 USB 连接的设备上安装 apk。

9. run 9远程调试器.bat如果你想使用远程调试。


我希望这可以帮助别人。如果我忘记添加某些内容,请告诉我。 另外,如果您知道更好的方法来执行此操作,请发表评论(例如如何将其合并到1个长时间暂停的bat文件中......)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重命名 APK 内的包名称 的相关文章

  • 如何在android中实现触摸平滑图像橡皮擦?

    我已经从 API 演示中看到了finturePaint java 我想实现触摸平滑橡皮擦 通过在android中触摸移动来擦除部分图像 FingerPaint 告诉我要实现这个 mPaint setXfermode new PorterDu
  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • Xamarin Android Webview Javascript

    我正在尝试通过 Xamarin for Android 创建一个移动应用程序 它有一个显示网站的 WebView 问题是正常按钮会触发 但 javascript 事件不会触发 我已经启用了 Javascript 但没有运气 如何在 Andr
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • 如何更改终端的默认目录?

    我想更改 Android Studio v2 2 2 终端的默认目录 当我打开终端时 它基于项目的目录 C 项目路径 我经常需要使用adb shell 所以我必须导航到 SDK 路径 平台工具 才能使用 adb 命令 是否可以更改终端的默认
  • Dialog.setTitle 不显示标题

    我正在尝试向我的对话框添加自定义标题 但是每当我运行我的应用程序时 它都不会显示标题 我创建对话框的代码是 final Dialog passwordDialog new Dialog this passwordDialog setCont
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 当它的父级是 ConstraintLayout 时设计 CardView 吗?

    我在编辑包含Relativelayout的Cardview内的RelativeLayout时搞砸了 ConstraintLayout会将相对布局的wrap content更改为0并添加工具 layout editor absoluteX 1
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • WorkManager 或 AlarmManager 用于日常请求然后通知工作?

    这是用例 用户设置具有特定时间的每日通知 在指定时间 发出网络请求以获取一些数据 然后使用检索到的数据显示通知 我不确定是否应该使用 AlarmManager 还是 WorkManager 来实现这个用例 据我了解 AlarmManager
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • Android - 以编程方式选择菜单选项

    有没有办法以编程方式选择菜单选项 基本上 我希望视图中的按钮能够执行与按特定菜单选项相同的操作 我正在考虑尝试调用 onOptionsItemSelected MenuItem item 但我不知道要为菜单项添加什么 是的 有一种方法可以选
  • 没有用于警告的设置器/字段 Firebase 数据库检索数据填充列表视图

    我只是想将 Firebase 数据库中的数据填充到我的列表视图中 日志显示正在检索数据 但适配器不会将值设置为列表中单个列表项中的文本 它只说 没有二传手 场地插入值 这让我觉得我的设置器没有正确制作 但 Android Studio 自动
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 通过电子邮件发送文本文件附件

    我正在尝试附加一个文本文件以便通过电子邮件发送 但每当我打开电子邮件应用程序时 它都会说该文件不存在 请帮助 Intent i new Intent Intent ACTION SEND i setType text plain i put
  • 如何使用 AccessibilityService 在 Android 中模拟按键

    我正在编写一个辅助服务 我一直在尝试在应用程序上进行一些自动搜索 我使用accessibilityservice action paste来填充EditText 然后我需要模拟软键盘上的按键 但我不知道如何做 你们能帮我一下吗 你可以尝试A
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne

随机推荐

  • 辅助功能:仅限 sr 或 aria-label

    From MDN https developer mozilla org en US docs Web Accessibility ARIA ARIA Techniques Using the aria label attribute 在下
  • Laravel phpunit 异常处理

    我正在使用 Laravel 5 5 和 Vue js 编写一个 Web 应用程序 PHPUnit 版本是 6 3 1 当用户使用表单请求注册时 我正在测试验证错误 Route web php Route post register Auth
  • Rails::Railtie:创建 Rails 3 gem 时遇到问题

    我真的可以用另一双眼睛来看待这个问题 所以我想我会把它发布在这里 不久前 我出于自己的教育目的编写了一个基本的 ActiveRecord 扩展 我最近一直在阅读有关 Railties 的内容 并想尝试让它与 Rails 3 一起工作 我想我
  • Swift 与 Objective C 指针操作问题

    我在 Objective C 中有这段代码 运行良好 list controller gt audioBufferList list gt mBuffers 0 mDataByteSize inNumberFrames kSampleWor
  • 导入Stanford nlp Intellij

    我在使用斯坦福词形还原器时遇到问题 当我使用 Intellij IDE 时 我尝试通过依赖项 Windows 导入它 但我无法通过这种方式访问 所有类 有没有办法在 Intellij 上正确导入 stanford english coren
  • 使用随机数生成引擎

    我正在尝试使用兰德 字节 https www openssl org docs crypto rand htmlOpenSSL 的 API 但我想尝试使用各种随机数生成引擎 在 OpenSSL 中是否有推荐的生成随机字节并添加熵的方法 我在
  • 模型无法通过烧瓶迁移检测到

    我的烧瓶应用程序中有这棵树 api migrations model init py Persons py Comments py other classes py resources init py app py util py This
  • 如何更新实体?

    我之前有一个更详细的问题 但我没有答案 我将以更简单的方式提出同样的问题 I have an EF database with foreign key to another table 我想UPDATE an ENTITY 但我需要这样 我
  • 如何定期更新WebView中的HTML5位置(使用FINE_ACCURACY)

    我正在开发一个应用程序来跟踪我的手机定期 不仅是第一次 with navigator geolocation getCurrentPosition 运行在 HTML5 页面中 运行在 webkit webview 中 运行在 android
  • SpringFramework:预期有一个匹配的 bean,但发现了 2 个

    我正在构建一个使用 SpringFramework 从 MongoDB 读取数据的项目 其结构为存储库 and Service如下 Repository Interfaces I
  • 将安装文件打包为单个可执行安装程序

    我有一个用 C 编写的旧程序的旧设置 其中包含多个安装文件 SETUP 1 SETUP DLL INST32I EX ISDEL EXE SETUP EXE DISK1 ID SETUP INI SETUP INS SETUP LIB SE
  • UITableView 的本地化索引

    我正在尝试为我的 UITableView 使用本地化索引 就像 iPhone 的联系人应用程序一样 这是我返回字符数组的方法 NSArray sectionIndexTitlesForTableView UITableView tableV
  • 如何停止对辅助隐式加载 DLL 的 DLL 劫持

    例如 COMDLG32 DLL 隐式链接到以下系统 DLL 以及其他 xmllite dll dll srvcli dll wkscli dll 链接信息库 netutils dll 微星 dll 由于这些是由操作系统隐式加载的 而不是使用
  • 如何重定向 Visual Studio 调试器的输出?

    在 Visual Studio 2008 中 我可以指定命中断点时要打印的消息 通过右键单击断点并选择 命中时 当程序运行时 这些消息出现在输出窗口中 我想知道有什么办法可以将它们重定向到文件吗 指定 gt file txt作为程序的命令参
  • 休眠批量插入

    这是我在数据库中插入批次的代码 Override public void addMultiple session get session tx session beginTransaction for int i 0 i lt 100 i
  • 错误:ValueFactory 尝试访问此实例的 Value 属性

    Error 源文件 c Projects WaterfrontSeattle org src Orchard Logging OrchardLog4netLogger cs Line 63 来源错误 Line 61 Load the log
  • 升级到Numpy 1.8.2后,ImportError:无法导入名称多数组

    我刚刚使用 Anaconda 的 Spyder 在 64 位 Windows 机器上升级到 Numpy 1 8 2 我使用了命令 conda update numpy 它安装了它 在此之前我有numpy 1 7 1 并且我在另一个路径中也有
  • 帮助--LibSVM 的准确率达到 100%?

    名义上这是一个好问题 但我很确定这是因为发生了一些有趣的事情 作为上下文 我正在研究面部表情 识别空间中的一个问题 因此获得 100 的准确度似乎令人难以置信 并不是说在大多数应用程序中这是合理的 我猜测数据集中存在一些一致的偏差 这使得
  • 删除行以及引用已删除行的其他行

    我正在使用 PostgreSQL 并且我有一张表family像这样 id name parent id 1 adam 0 2 eva 0 3 peter 2 4 pan 3 现在 当我删除这个人时 我也希望孩子们也被删除 例如删除WHERE
  • 重命名 APK 内的包名称

    我创建了一个AIR app目前市场上有这种产品 要更新应用程序 显然我必须保留相同的包名称 我的第一个版本是使用以下方式打包的Eclipse使用 ADT 插件 现在可以使用AIR 3 0 本机扩展 ANE 当我第一次开发该应用程序时不可用