You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Ionic Angular构建Ark时Bitbucket Pipeline Java编译报错求助

解决Bitbucket Pipelines中Ionic Cordova Android构建的Java编译错误

看起来你在Bitbucket Pipelines上构建Ionic Angular的Android应用时,碰到了Java编译失败的问题——那些找不到org.json、android.annotation这类包的错误,本质都是Android SDK的依赖没被正确引入到编译流程里。我帮你梳理下问题根源,再给你一套可直接复用的修复脚本。

问题回顾

你用的是node:10.14.1镜像,执行ionic cordova build android时出现如下编译错误:

/opt/atlassian/pipelines/agent/build/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java:22: error: package org.json does not exist
import org.json.JSONException;
^
/opt/atlassian/pipelines/agent/build/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java:28: error: cannot find symbol
public String exec(int bridgeSecret, String service, String action, String callbackId, String arguments) throws JSONException, IllegalAccessException;
^
symbol: class JSONException
location: interface ExposedJsApi
/opt/atlassian/pipelines/agent/build/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:25: error: package android.annotation does not exist
import android.annotation.SuppressLint;
^
/opt/atlassian/pipelines/agent/build/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java:26: error: package android.webkit does not exist
import android.webkit.ClientCertRequest;
^

问题根源

你的构建脚本存在几个关键问题:

  1. 使用了旧版Android SDK工具包,和新的Cordova Android版本不兼容
  2. Android SDK的目录结构配置不对,导致Gradle找不到依赖库
  3. Gradle版本和你项目里的Cordova Android版本不匹配
  4. 环境变量配置不全,缺少新版SDK要求的ANDROID_SDK_ROOT

修复方案

直接替换你的Pipelines脚本,下面是调整后的完整版本,我会标注关键修改点:

image: node:10.14.1

pipelines:
  default:
    - step:
        name: Build Android App
        script:
          # 安装Ionic和Cordova
          - npm install -g ionic cordova
          # 安装项目依赖
          - npm install
          # 安装系统依赖:替换成openjdk-8-jdk-headless,避免oracle-java8的安装问题
          - apt-get update && apt-get install -y --no-install-recommends zip unzip openjdk-8-jdk-headless
          # 下载新版Android命令行工具(替代旧版sdk-tools)
          - wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip -P /tmp
          - unzip -q /tmp/commandlinetools-linux-6858069_latest.zip -d android-sdk
          # 调整SDK目录结构,符合Google最新要求
          - mkdir -p android-sdk/cmdline-tools/latest
          - mv android-sdk/cmdline-tools/* android-sdk/cmdline-tools/latest/
          # 自动接受所有SDK许可协议,避免构建中断
          - yes | android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses
          # 安装对应版本的SDK组件:这里适配cordova-android@8.x,若你用其他版本请调整
          - android-sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-28" "build-tools;28.0.3"
          # 下载适配的Gradle版本:cordova-android@8.x对应gradle-4.10.3
          - wget https://services.gradle.org/distributions/gradle-4.10.3-bin.zip -P /tmp
          - unzip -q /tmp/gradle-4.10.3-bin.zip -d /opt/gradle
          # 完善环境变量配置,新增ANDROID_SDK_ROOT
          - export ANDROID_HOME=$PWD/android-sdk
          - export ANDROID_SDK_ROOT=$ANDROID_HOME
          - export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/28.0.3
          - export GRADLE_HOME=/opt/gradle/gradle-4.10.3
          - export PATH=$PATH:$GRADLE_HOME/bin
          # 验证配置是否正确
          - java -version
          - gradle --version
          - sdkmanager --list | grep -E "platforms;android-28|build-tools;28.0.3"
          # 构建应用(建议加--release --prod参数,生成正式包)
          - ionic cordova build android --release --prod

关键修改说明

  • 替换SDK工具:旧版sdk-tools已经被Google弃用,改用新版commandlinetools避免兼容性问题
  • 目录结构调整:新版SDK要求cmdline-tools放在latest子目录下,否则sdkmanager无法正常工作
  • 许可协议自动接受:新增yes | sdkmanager --licenses,避免构建时卡在手动确认步骤
  • 版本匹配:
    • 如果你项目用的是cordova-android@9.x,需要安装android-29和build-tools;29.0.2,Gradle用5.6.4
    • 如果你用cordova-android@10.x,对应android-30、build-tools;30.0.3,Gradle用6.7.1
  • 环境变量补全:添加ANDROID_SDK_ROOT,这是新版Android SDK必须的环境变量

额外检查

  1. 先在本地执行ionic cordova platform ls,查看你当前的cordova-android版本,确保脚本里的SDK和Gradle版本和它匹配
  2. 检查项目config.xml里的android-targetSdkVersion,要和你安装的android-xx版本一致
  3. 如果还是报错,试试删除本地的platforms/android和plugins目录,重新执行ionic cordova platform add android后再推送代码构建

内容的提问来源于stack exchange,提问作者Sunny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:14:53