如何通过编程方式从Android应用程序生成apk文件?

问题描述 投票:0回答:4

这是一个奇怪的问题。我想知道有没有办法从Android应用程序生成一个apk。让我解释一下 - 运行cmd命令的android应用程序,可以为另一个应用程序生成apk。有什么办法吗?

我已经读过这可以使用Java中的ant来完成。我想知道在运行的Android应用程序上这是可能的。

谢谢。

java android apk adb
4个回答
4
投票

你可以使用ANT Jars ant.jar and ant-launcher.jar,在这种情况下应该完全指定build.xml的路径,并以这种方式从java类调用它:

public class AntTest {
public static void main(String[] args) {
String build = "D:/xampp/htdocs/aud/TempProject/build.xml";
generateApkThroughAnt(build);
}
/*
 * Generate APK through ANT API Method
*/
public static void generateApkThroughAnt(String buildPath) {
File antBuildFile = new File(buildPath);
Project p = new Project();
p.setUserProperty("ant.file", antBuildFile.getAbsolutePath());
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
p.addBuildListener(consoleLogger);
BuildException ex = null;
try {
    p.fireBuildStarted();
    p.init();
    ProjectHelper helper = ProjectHelper.getProjectHelper();
    p.addReference("ant.projectHelper", helper);
    helper.parse(p, antBuildFile);
    p.executeTarget("clean");
    p.executeTarget("release");
  } catch (BuildException e) {
    ex = e;
  } finally {
    p.fireBuildFinished(ex);
  }
}
}

要创建build.xml文件,请转到Eclipse => Your Project =>右键单击=> Export => General => Ant Buildfiles,之后您将需要运行:

android update project --name <project_name> --target <target_ID> --path <path_to_your_project>

3
投票

脚本可以帮助您。制作一个简单的脚本,运行所有android命令,从编译,打包,创建密钥库,使用该密钥库签名到发布模式。

Android已经提供了可以从命令行工作的所有内容。只需以脚本的形式合并它们,您就可以生成.apk文件。

您可以制作简单的PHP脚本或ant脚本。


2
投票

可能这是可能的,但你可以通过逆向工程方法来做到这一点,所以在获得该apk文件的源代码后,使用Android IDE进行编译。用于apk解码的逆向工程Strp by Step方法:

步骤1:

创建一个新文件夹并将.apk文件放入其中(您要解码)。现在将此.apk文件的扩展名重命名为.zip(例如:从filename.apk重命名为filename.zip)并保存。现在你得到classes.dex文件等。在这个阶段你可以看到drawable而不是xml和java文件,所以继续。

第2步:

现在解压缩此apk文件夹在同一个文件夹(或新文件夹)中。现在从这个链接http://code.google.com/p/dex2jar/下载dex2jar并将其解压缩到同一个文件夹(或NEW FOLDER)。现在打开命令提示符并将目录更改为该文件夹(或NEW FOLDER)。然后编写dex2jar classes.dex并按Enter键。现在,您在同一文件夹中获得classes.dex.dex2jar文件。然后从http://varaneckas.com/jad下载java反编译器,现在双击jd-gui并单击打开文件。然后从该文件夹中打开classes.dex.dex2jar文件。现在您获取类文件并保存所有这些类文件(单击文件,然后单击src名称中的“保存所有源”在jd-gui中)。在这个阶段你得到java源代码,但xml文件仍然不可读,所以继续。

第3步:

现在打开另一个新文件夹并放入这些文件

把你要解码的.apk文件

下载apktool v1.xapktool install window(两者都可以在同一个位置下载)并放在同一个文件夹中

download framework-res.apk文件并放在同一文件夹中(并非所有apk文件都需要framework-res.apk文件)

打开命令窗口

导航到APKtool的根目录并键入以下命令:apktool if framework-res.apk

apktool d“fname”.apk(“fname”表示要解码的文件名)

现在您在该文件夹中获得了一个文件夹,现在您也可以轻松读取xml文件。

第4步:

这不是任何步骤只是将两个文件夹的内容(在这种情况下都是新文件夹)复制到单个文件夹

现在享受源代码......


0
投票

我不认为这是可能的。

因为Android内部不包含“编译器”。好吧,我想如果你真的想这样做,你可以随时让服务器生成apk文件,并使你的应用程序与所述服务器连接。

希望能帮到你:)。

© www.soinside.com 2019 - 2024. All rights reserved.