运行命令“ ionic cordova run android”时找不到apk架构

时间:2019-02-12 04:45:42

标签: android cordova ionic-framework

当我运行命令

ionic cordova run android

构建成功,但应用程序无法在我的android设备上运行。

错误日志为:

BUILD SUCCESSFUL in 4m 7s
47 actionable tasks: 45 executed, 2 up-to-date
Built the following apk(s):

ANDROID_HOME=C:\Users\AppData\Local\Android\sdk
JAVA_HOME=C:\Program Files\java\jdk1.8.0_121
No target specified, deploying to device 'UGM0217321003049'.
Skipping build...
Built the following apk(s):

Error: Could not find apk architecture: arm build-type: debug
[ERROR] An error occurred while running subprocess cordova.

    cordova run android exited with exit code 1.

    Re-running this command with the --verbose flag may provide more information.

在目录platforms/android/build/outputs/apk下,只有一个名为debug的文件夹,在该文件夹下有两个文件android-debug.apkoutput.json

 apk
  |---debug
        |---android-debug.apk
        |---output.json

我怀疑apk目录中应该有一些arm体系结构文件,但是我不知道如何生成它。

您能帮我解决此运行android错误吗?

1 个答案:

答案 0 :(得分:1)

为避免在评论中进行进一步的讨论,让我总结一下解决方法,如下所示:

  1. 尝试首先运行以下命令来构建apk。

    cordova build android
    
  2. platforms\android中查找apk并手动安装。
  

如何在应用文件夹中自动构建android-debug.apk

.json文件是自动生成的,通常不需要触摸它。

默认情况下,apk路径位于app/build/outputs/apk下,您可以根据需要将其复制到自定义位置,对于您的情况,它可能是app/根目录。您可以通过多种方式执行此操作,例如bash脚本。在gradle代码片段下面是我如何执行此任务的方法,只需将下面的代码复制到app/build.gradle的末尾:

def capitalizeFirstLetter(s) { s[0].toUpperCase() + s[1..-1] }

def publish = project.tasks.create("copyApks")
publish.description "Copies apks to custom directory"

android.applicationVariants.all { variant ->

    def customPath

    variant.outputs.all {

        customPath = "$projectDir"

        def capitalizedVariantName = capitalizeFirstLetter(variant.name)
        def task = project.tasks.create("copy${capitalizedVariantName}Apk", Copy)

        task.from(outputFile)
        task.into(customPath)

        task.dependsOn variant.assemble
        publish.dependsOn task
    }
}

从命令行分别在macOS或Windows上运行./gradlew copyApksgradlew copyApks

然后,您会发现自己的APK在app\目录下。