如何从Android应用程序中以编程方式生成apk文件



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

我读到在Java中使用ant可以实现这一点。我想知道,这是可能的一个运行的android应用程序。

谢谢。

您可以使用ANT Jarsant.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>

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

安卓系统提供了一切可以从命令行工作的功能。只需将它们以脚本的形式合并,就可以生成.apk文件。

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

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

步骤1:

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

步骤2:

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

步骤3:

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

put.apk文件,你想解码

下载apktool v1.x和apktool安装窗口(两者都可以在同一位置下载)并放入同一文件夹

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

打开命令窗口

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

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

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

步骤4:

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

现在享受源代码。。。

我认为这是不可能的。

因为安卓系统本身并不包含"编译器"。好吧,我想如果你真的想这么做,你可以让一个服务器生成apk文件,并让你的应用程序与所述服务器连接。

希望对你有所帮助:)。

相关内容

最新更新