Error when building the application

ComponentTranslationTable this is not present inside the components folder in the appengine.

ComponentTranslationTable is an output of the AndroidRuntime task in the components module. If you've only imported the sources into your IDE but haven't run ant at least once then it won't find some of the intermediate build products.

I did exactly as instructed in the GitHub page and the documentation. I ran ant clean and afterwards ant. It does not seem to produce this class. Following is my Java version.
image

I did the following changes to the build.xml in the components folder and it did result in creating the components

<?xml version="1.0"?>

<!-- ======================================================================
     Copyright 2011 Google Inc.  All Rights Reserved.
     Copyright 2012-2024 Massachusetts Institute of Technology, All rights reserved.

     App Inventor component libraries
     ====================================================================== -->

<project name="components" default="all">
  <description>
    App Inventor component libraries
  </description>

  <property name="android.sdk.version" value="35"/>

  <target name="all"
          depends="CommonConstants,AndroidRuntime">
  </target>

  <target name="tests"
          depends="CommonTests,AndroidRuntimeTests">
  </target>

  <!-- =====================================================================
       Import common directory, task, and target definitions.
       ===================================================================== -->
  <import file="../build-common.xml" />

  <!-- =====================================================================
       Define base package path for internal components.
       ===================================================================== -->
  <property name="components.pkg" value="com/google/appinventor/components" />
  <property name="zxing.pkg" value="com/google/zxing" />
  <property name="android.lib" value="${lib.dir}/android/android-${android.sdk.version}/android.jar"/>

  <!-- =====================================================================
       Define external components properties.
       ===================================================================== -->
  <property name="ExternalComponentGenerator-class.dir" location="${class.dir}/ExternalComponentGenerator" />
  <property name="ExternalComponent.dir" location="${local.build.dir}/externalComponents" />
  <property name="ExternalComponent-class.dir" location="${local.build.dir}/externalComponents-class" />
  <property name="Extensions.dir" location="${local.build.dir}/extensions" />
  <!-- Can be used by extension authors to use the old-style AIX package layout -->
  <property name="extensions.packagefqcn" value="false" />

  <!-- =====================================================================
       CommonConstants: library of constants used across App Inventor
       ===================================================================== -->
  <target name="CommonConstants"
          description="Generate library of constants used across App Inventor"
          depends="init">
    <property name="CommonConstants-class.dir" location="${class.dir}/CommonConstants" />
    <mkdir dir="${CommonConstants-class.dir}" />

    <ai.javac destdir="${CommonConstants-class.dir}">
      <include name="**/helpers/*.java" />
      <include name="${components.pkg}/common/*.java" />
      <exclude name="${components.pkg}/common/HtmlEntities.java" />
    </ai.javac>

    <jar destfile="${public.build.dir}/CommonConstants.jar">
      <fileset dir="${CommonConstants-class.dir}"/>
    </jar>

    <jar destfile="${public.build.dir}/CommonConstants-gwt.jar">
      <fileset dir="${CommonConstants-class.dir}"/>
      <!-- Source files needed for GWT compilation: -->
      <fileset dir="${src.dir}">
        <include name="${components.pkg}/common/*.java" />
        <exclude name="${components.pkg}/common/HtmlEntities.java" />
        <include name="${components.pkg}/CommonConstants.gwt.xml" />
      </fileset>
    </jar>
  </target>

  <!-- =====================================================================
       HtmlEntities: library containing utility class for working with
           HTML entities.
       ===================================================================== -->
  <target name="HtmlEntities"
          description="Generate library containing utility class for working with HTML entities"
          depends="init">
    <property name="HtmlEntities-class.dir" location="${class.dir}/HtmlEntities" />
    <mkdir dir="${HtmlEntities-class.dir}" />

    <ai.javac destdir="${HtmlEntities-class.dir}">
      <include name="${components.pkg}/common/HtmlEntities.java" />
    </ai.javac>

    <jar destfile="${local.build.dir}/HtmlEntities.jar">
      <fileset dir="${HtmlEntities-class.dir}"/>
    </jar>
  </target>

  <!-- =====================================================================
       CommonTests: build and run the common tests and generate the output results
       ===================================================================== -->

  <path id="libsForCommonTests.path">
    <pathelement location="${local.build.dir}/HtmlEntities.jar" />
    <pathelement location="${lib.dir}/junit/junit-4.13.2.jar" />
  </path>

  <path id="CommonTests.path">
    <path refid="libsForCommonTests.path"/>
    <pathelement location="${local.build.dir}/CommonTests.jar" />
  </path>

  <target name="CommonTests"
          depends="HtmlEntities"
          description="build and run the test suite" >
    <ai.dojunit aij-testingtarget="CommonTests"
                aij-dir="${components.pkg}/common" >
    </ai.dojunit>
  </target>

  <!-- =====================================================================
       CopyComponentLibraries
       ===================================================================== -->
  <property name="public.deps.dir" location="${public.build.dir}/deps" />
  <target name="CopyComponentLibraries"
          depends="Barcode"
          description="Copies libraries needed for components into the public build directory">
    <property name="support.dir" location="${lib.dir}/android/support" />
    <copy toFile="${public.deps.dir}/osmdroid.aar" file="${lib.dir}/osmdroid/osmdroid-5.6.6.aar" />
    <copy toFile="${public.deps.dir}/osmdroid.jar" file="${lib.dir}/osmdroid/osmdroid-5.6.6.jar" />
    <copy toFile="${public.deps.dir}/webrtc.jar"
          file="${lib.dir}/webrtc/webrtc.jar" />
    <copy toFile="${public.deps.dir}/armeabi-v7a/libjingle_peerconnection_so.so"
          file="${lib.dir}/webrtc/armeabi-v7a/libjingle_peerconnection_so.so" />
    <copy toFile="${public.deps.dir}/arm64-v8a/libjingle_peerconnection_so.so"
          file="${lib.dir}/webrtc/arm64-v8a/libjingle_peerconnection_so.so" />
    <copy toFile="${public.deps.dir}/x86_64/libjingle_peerconnection_so.so"
          file="${lib.dir}/webrtc/x86_64/libjingle_peerconnection_so.so" />
    <copy toFile="${public.deps.dir}/jts.jar" file="${lib.dir}/jts/jts-core-1.15.0-20170823.040415-301.jar" />
    <copy toFile="${public.deps.dir}/androidsvg.jar" file="${lib.dir}/androidsvg/androidsvg-d4ec6d8.jar" />
    <copy toFile="${public.deps.dir}/kawa.jar" file="${lib.dir}/kawa/kawa-1.11-modified.jar" />
    <copy toFile="${public.deps.dir}/acra-4.4.0.jar" file="${lib.dir}/acra/acra-4.4.0.jar" />
    <copy toFile="${public.deps.dir}/twitter4j.jar" file="${lib.dir}/twitter/twitter4j-core-3.0.5.jar" />
    <copy toFile="${public.deps.dir}/twitter4jmedia.jar" file="${lib.dir}/twitter/twitter4j-media-support-3.0.5.jar" />
    <copy toFile="${public.deps.dir}/httpmime.jar" file="${lib.dir}/apache-http/httpmime-4.3.4.jar" />
    <copy toFile="${public.deps.dir}/fusiontables.jar" file="${lib.dir}/fusiontables/fusiontables.jar" />
    <copy toFile="${public.deps.dir}/firebase.jar" file="${lib.dir}/firebase/firebase-client-android-2.5.0.jar" />
    <!-- Google Sheets Component -->
    <copy toFile="${public.deps.dir}/googlesheets.jar" file="${lib.dir}/googlesheets/googlesheets.jar" />
    <copy toFile="${public.deps.dir}/opencensus.jar" file="${lib.dir}/googlesheets/opencensus-api-0.26.0.jar" />
    <copy toFile="${public.deps.dir}/opencensus-contrib-http-util.jar" file="${lib.dir}/googlesheets/opencensus-contrib-http-util-0.26.0.jar" />
    <copy toFile="${public.deps.dir}/grpc-context.jar" file="${lib.dir}/googlesheets/grpc-context-1.29.0.jar" />
    <copy toFile="${public.deps.dir}/jetty.jar" file="${lib.dir}/googlesheets/jetty-6.1.26.jar" />
    <copy toFile="${public.deps.dir}/jetty-util.jar" file="${lib.dir}/googlesheets/jetty-util-6.1.26.jar" />
    <copy toFile="${public.deps.dir}/google-http-client.jar" file="${lib.dir}/oauth/google-http-client-1.35.0.jar" />
    <copy toFile="${public.deps.dir}/google-api-client.jar" file="${lib.dir}/oauth/google-api-client-1.30.2.jar" />
    <copy toFile="${public.deps.dir}/google-api-client-jackson2.jar" file="${lib.dir}/gcs/google-api-client-jackson2-1.20.0.jar" />
    <copy toFile="${public.deps.dir}/google-api-client-android2-beta.jar" file="${lib.dir}/oauth/google-api-client-android2-1.10.3-beta.jar" />
    <copy toFile="${public.deps.dir}/google-http-client-android2-beta.jar" file="${lib.dir}/oauth/google-http-client-android2-1.10.3-beta.jar" />
    <copy toFile="${public.deps.dir}/google-http-client-android3-beta.jar" file="${lib.dir}/oauth/google-http-client-android3-1.10.3-beta.jar" />
    <copy toFile="${public.deps.dir}/google-http-client-jackson2.jar" file="${lib.dir}/oauth/google-http-client-jackson2-1.33.0.jar" />
    <copy toFile="${public.deps.dir}/google-oauth-client.jar" file="${lib.dir}/oauth/google-oauth-client-1.30.4.jar" />
    <copy toFile="${public.deps.dir}/google-oauth-client-java6.jar" file="${lib.dir}/oauth/google-oauth-client-java6-1.30.4.jar" />
    <copy toFile="${public.deps.dir}/google-oauth-client-jetty.jar" file="${lib.dir}/oauth/google-oauth-client-jetty-1.30.4.jar" />
    <copy toFile="${public.deps.dir}/gson-2.1.jar" file="${lib.dir}/gson/gson-2.1.jar" />
    <copy toFile="${public.deps.dir}/json.jar" file="${lib.dir}/json/json-android.jar" />
    <copy toFile="${public.deps.dir}/jackson-core.jar" file="${lib.dir}/gcs/jackson-core-2.1.3.jar" />
    <copy toFile="${public.deps.dir}/jedis.jar" file="${lib.dir}/jedis/jedis-3.0.0-SNAPSHOT-jar-with-dependencies.jar" />
    <copy toFile="${public.deps.dir}/commons-pool.jar" file="${lib.dir}/commons-pool/commons-pool2-2.0.jar" />
    <copy toFile="${public.deps.dir}/guava.jar" file="${lib.dir}/guava/guava-27.1-android.jar" />
    <copy toFile="${public.deps.dir}/QRGenerator.jar" file="${lib.dir}/QRGenerator/core.jar" />
    <copy toFile="${public.deps.dir}/physicaloid.jar" file="${lib.dir}/physicaloid/physicaloid-library.jar" />
    <!-- Protocol Buf Support (used by the Translation Component) -->
    <copy toFile="${public.deps.dir}/protobuf-java-3.0.0.jar" file="${lib.dir}/protobuf/protobuf-java-3.0.0.jar" />    
    <copy toFile="${public.deps.dir}/mpandroidchart.jar" file="${lib.dir}/mpandroidchart/mpandroidchart.jar" />
    <!-- Commons Math used by Trendline -->
    <copy toFile="${public.deps.dir}/commons-math3.jar" file="${lib.dir}/commons-math3/commons-math3-3.6.1.jar" />
    <!-- BEGIN Android Support Libraries -->
    <copy todir="${public.deps.dir}/">
      <fileset dir="${support.dir}/" includes="*.aar,*.jar" excludes="testing-support-R-classes.jar" />
      <mapper type="regexp" from="([-a-z0-9]*)-[0-9\.]*\.(aar|jar)$$" to="\1.\2" />
    </copy>
    <copy todir="${public.deps.dir}/">
      <fileset dir="${support.dir}/" includes="*.txt" />
    </copy>
    <copy toFile="${public.deps.dir}/http-legacy.jar" file="${lib.dir}/android/legacy/org.apache.http.legacy.jar" />
    <!-- END Android Support Libraries -->
    <copy toFile="${public.deps.dir}/android.jar" file="${android.lib}" />
    <copy toFile="${public.deps.dir}/CommonVersion.jar" file="${build.dir}/common/CommonVersion.jar" />

    <!-- Add extension libraries here -->
    <!-- Example: <copy toFile="${public.deps.dir}/my-dependency.jar" file="${lib.dir}/my-dependency/my-dependency-1.0.0.jar" /> -->
    <!-- Remember to include my-dependency.jar in the @UsesLibraries annotation in the extension -->
  </target>

  <path id="AndroidRuntime.path">
    <fileset dir="${public.deps.dir}">
      <include name="*.jar" />
      <exclude name="android.jar" /> <!-- Needs to be excluded for testing classpath consistency -->
    </fileset>
    <pathelement location="${local.build.dir}/HtmlEntities.jar" />
    <pathelement location="${public.build.dir}/CommonConstants.jar" />
  </path>

  <target name="AndroidRuntime.uptodate">
    <uptodate property="AndroidRuntime.uptodate" targetfile="${public.build.dir}/AndroidRuntime.jar">
      <srcfiles dir="${src.dir}" includes="**/*.java" />
      <srcfiles dir="${public.deps.dir}" includes="*" />
    </uptodate>
  </target>

  <!-- =====================================================================
       AndroidRuntime: library providing runtime support for components
       ===================================================================== -->
  <property name="AndroidRuntime-class.dir" location="${class.dir}/AndroidRuntime" />
  <target name="AndroidRuntime"
          description="Generate runtime library implementing components"
          unless="AndroidRuntime.uptodate"
          depends="common_CommonVersion,HtmlEntities,CopyComponentLibraries,AnnotationProcessors,AndroidRuntime.uptodate">
    <mkdir dir="${AndroidRuntime-class.dir}" />

    <!-- We need to delete all the classes before running javac below. Otherwise, javac will only
    process the Java files whose classes are not up-to-date and we'll end up with only a subset
    of the results. For example, if only Label.java was modified, our annotation processor code
    will only be executed for Label.java and we'll only have results for Label.java. -->
    <delete>
      <fileset dir="${AndroidRuntime-class.dir}">
        <include name="**/*"/>
      </fileset>
    </delete>
    <mkdir dir="${AndroidRuntime-class.dir}" />

    <!-- Regular javac to use annotation processors properly -->
    <mkdir dir="${AndroidRuntime-class.dir}" />
    <javac sourcepath=""
           srcdir="${src.dir}"
           destdir="${AndroidRuntime-class.dir}"
           includeantruntime="false"
           encoding="utf-8"
           source="1.8"
           target="1.8"
           debug="true">
      <include name="**/*.java" /> <!-- include all java files -->
      <exclude name="${zxing.pkg}/**/*.java" /> <!-- exclude zxing package -->
      <exclude name="${components.pkg}/scripts/**/*.java" /> <!-- exclude components/script package -->
      <exclude name="${components.pkg}/common/**/*.java" /> <!-- exclude components/common package -->
      <exclude name="**/helpers/*.java" /> <!-- exclude helpers as they are compiled with CommonConstants -->
      <compilerarg line="-processor com.google.appinventor.components.scripts.ComponentTranslationGenerator,com.google.appinventor.components.scripts.ComponentDescriptorGenerator,com.google.appinventor.components.scripts.ComponentListGenerator" />
      <compilerarg line="-processorpath ${local.build.dir}/AnnotationProcessors.jar" />
      <classpath>
        <path refid="AndroidRuntime.path" />
        <pathelement location="${local.build.dir}/AnnotationProcessors.jar" />
        <pathelement location="${public.deps.dir}/android.jar" />
      </classpath>
    </javac>

    <jar basedir="${AndroidRuntime-class.dir}"
         destfile="${public.build.dir}/AndroidRuntime.jar">
      <zipfileset src="${local.build.dir}/HtmlEntities.jar"/>
      <zipfileset src="${public.build.dir}/CommonConstants.jar"/>
      <zipfileset src="${build.dir}/common/CommonVersion.jar" />
      <exclude name="simple_components.json"/>
      <exclude name="simple_components_build_info.json"/>
      <exclude name="simple_components.txt"/>
      <exclude name="component-doc.html"/>
      <exclude name="ComponentTranslationTable.java"/>
      <exclude name="AutogeneratedOdeMessages.java"/>
      <exclude name="*.md"/> <!-- exclude markdown files -->
    </jar>

    <!-- Move AnnotationProcessor products into place -->
    <copy todir="${public.build.dir}">
      <fileset dir="${AndroidRuntime-class.dir}">
        <include name="simple_components.txt" />
        <include name="simple_components.json" />
        <include name="simple_components_build_info.json" />
        <include name="component-doc.html" />
      </fileset>
    </copy>
    <property name="client.pkg.dir" value="${public.build.dir}/ComponentTranslation/src/com/google/appinventor/client"/>
    <mkdir dir="${client.pkg.dir}/editor/simple/components/i18n"/>
    <copy todir="${client.pkg.dir}/editor/simple/components/i18n">
      <fileset dir="${AndroidRuntime-class.dir}">
        <include name="*.java"/>
      </fileset>
    </copy>
    <copy todir="${appinventor.dir}/docs/markdown/reference/components/">
      <fileset dir="${AndroidRuntime-class.dir}">
        <include name="*.md" />
        <exclude name="internal.md" />
      </fileset>
    </copy>
  </target>

  <!-- =====================================================================
       AndroidRuntimeTests: build and run the AndroidRuntime tests and generate the output results
       ===================================================================== -->

  <path id="libsForAndroidRuntimeTests.path">
    <pathelement location="${public.build.dir}/AndroidRuntime.jar" />
    <pathelement location="${build.dir}/common/CommonTestUtils.jar" />
    <path refid="AndroidRuntime.path" />
    <pathelement location="${lib.dir}/junit/junit-4.13.2.jar" />
    <pathelement location="${lib.dir}/junit4/tl4j-junit4-1.1.3.jar" />
    <pathelement location="${lib.dir}/bouncycastle/bcprov-jdk15on-149.jar" />

    <!-- Powermock and dependencies -->
    <fileset dir="${lib.dir}/powermock" includes="*.jar" />

    <pathelement location="${lib.dir}/android/support/testing-support-R-classes.jar" />
    <!-- android.jar must go last on the classpath list
         so that its junit (or other) stubs don't override the real ones -->
    <pathelement location="${lib.dir}/robolectric/robolectric-4.0.2-alldeps.jar" />
    <pathelement location="${android.lib}" />
  </path>

  <path id="AndroidRuntimeTests.path">
    <path refid="libsForAndroidRuntimeTests.path"/>
    <pathelement location="${local.build.dir}/AndroidRuntimeTests.jar" />
  </path>

  <target name="AndroidRuntimeTests"
          depends="AndroidRuntime,common_CommonTestUtils"
          description="build and run the test suite" >
    <ai.dojunit aij-testingtarget="AndroidRuntimeTests"
                aij-forkmode="perTest"
                aij-dir="${components.pkg}/runtime" >
    </ai.dojunit>
  </target>

  <!-- =====================================================================
       AnnotationProcessors: plugins for processing component annotations
       Note that AnnotationProcessors.jar, produced here, will contain all
       of its dependencies including guava. This makes it much easier to
       specify the -processorpath option in ai.apt.
       ===================================================================== -->
  <target name="AnnotationProcessors"
          description="Create plugins for annotation processing"
          depends="common_CommonUtils,CommonConstants">

    <property name="AnnotationProcessors-class.dir"
              location="${class.dir}/AnnotationProcessors" />
    <mkdir dir="${AnnotationProcessors-class.dir}" />

    <javac destdir="${AnnotationProcessors-class.dir}"
           srcdir="${src.dir}"
           source="1.8"
           target="1.8"
           includeantruntime="false"
           encoding="utf-8"
           debug="true">
      <include name="${components.pkg}/scripts/*.java" />
      <include name="${components.pkg}/annotations/*.java" />
      <include name="${components.pkg}/annotations/androidmanifest/*.java" />
      <classpath>
        <pathelement location="${public.build.dir}/CommonConstants.jar" />
        <pathelement location="${build.dir}/common/CommonUtils.jar" />
        <pathelement location="${lib.dir}/guava/guava-27.1-android.jar" />
        <pathelement location="${lib.dir}/json/json.jar" />
      </classpath>
    </javac>

    <copy todir="${AnnotationProcessors-class.dir}">
      <fileset dir="${src.dir}">
        <include name="${components.pkg}/scripts/templates/*" />
      </fileset>
    </copy>

    <jar basedir="${AnnotationProcessors-class.dir}"
         destfile="${local.build.dir}/AnnotationProcessors.jar" >
      <zipfileset src="${public.build.dir}/CommonConstants.jar"/>
      <zipfileset src="${build.dir}/common/CommonUtils.jar" />
      <zipfileset src="${lib.dir}/guava/guava-27.1-android.jar" />
      <zipfileset src="${lib.dir}/json/json.jar" />
      <fileset dir="${src.dir}">
        <include name="META-INF/**/*"/>
      </fileset>
    </jar>

  </target>

  <!-- ======================================================================
     Internal Inclusion of ZXing 2.1
     ====================================================================== -->

  <!-- =====================================================================
       Define base package path.
       ===================================================================== -->
  <property name="barcode.pkg" value="com/google/zxing/client/android" />

  <target name="Barcode"
          depends=""
          description="Generate ZXing embedded library">
    <property name="Barcode-class.dir" location="${class.dir}/Barcode" />
    <mkdir dir="${Barcode-class.dir}" />

    <ai.javac destdir="${Barcode-class.dir}">
      <include name="${barcode.pkg}/**/*.java" />
      <classpath>
        <pathelement location="${lib.dir}/QRGenerator/core.jar" />
        <pathelement location="${android.lib}" />
      </classpath>
    </ai.javac>

    <jar basedir="${Barcode-class.dir}"
         destfile="${public.deps.dir}/Barcode.jar" />

  </target>


  <!-- =====================================================================
       ExternalComponentGenerator: create required extension files
       ===================================================================== -->
  <target name="ExternalComponentGenerator"
          description="generate extension files"
          depends="AndroidRuntime">
    <mkdir dir="${ExternalComponentGenerator-class.dir}" />
    <mkdir dir="${ExternalComponent.dir}" />
    <mkdir dir="${ExternalComponent-class.dir}" />
    <ai.javac destdir="${ExternalComponentGenerator-class.dir}">
      <include name="${components.pkg}/scripts/ExternalComponentGenerator.java" />
      <classpath>
        <pathelement location="${lib.dir}/json/json.jar" />
      </classpath>
    </ai.javac>
    <java classname="com.google.appinventor.components.scripts.ExternalComponentGenerator">
      <arg value="${public.build.dir}/simple_components.json" />
      <arg value="${public.build.dir}/simple_components_build_info.json" />
      <arg value="${ExternalComponent.dir}"/>
      <arg value="${AndroidRuntime-class.dir}" />
      <arg value="${public.deps.dir}"/>
      <arg value="${ExternalComponent-class.dir}"/>
      <arg value="${extensions.packagefqcn}"/>
      <classpath>
        <pathelement location="${ExternalComponentGenerator-class.dir}" />
        <pathelement location="${lib.dir}/json/json.jar" />
      </classpath>
    </java>
  </target>

  <!-- =====================================================================
        unjarAllExtensionLibraries : Unjarring extension's library in order for the extensions'dex to work properly.
        ===================================================================== -->
  <target name="unjarAllExtensionLibraries" depends="ExternalComponentGenerator">
    <foreach target="unjarExtensionLibraries" param="extension" inheritall="true">
      <path>
        <dirset dir="${ExternalComponent-class.dir}">
          <include name="*" />
        </dirset>
      </path>
    </foreach>
  </target>

  <target name="unjarExtensionLibraries">
    <basename property="extensionClassFolder" file="${extension}" />
    <unzip dest="${ExternalComponent-class.dir}/${extensionClassFolder}">
      <fileset dir="${ExternalComponent-class.dir}/${extensionClassFolder}">
        <include name="**/*.jar" />
      </fileset>
    </unzip>
  </target>

  <!-- =====================================================================
       jarAllExtensions: create ${extension}.jar and AndroidRuntime.jar for each extension.
       ===================================================================== -->
  <target name="jarAllExtensions" depends="unjarAllExtensionLibraries" >
    <foreach target="jarExtension" param="extension" inheritall="true">
      <path>
        <dirset dir="${ExternalComponent-class.dir}">
          <include name="*" />
        </dirset>
      </path>
    </foreach>
  </target>

  <target name="jarExtension">
    <basename property="extensionClassFolder" file="${extension}" />
    <jar destfile="${ExternalComponent-class.dir}/${extensionClassFolder}.jar"
         basedir="${ExternalComponent-class.dir}/${extensionClassFolder}"
         includes="**/*.class"
         excludes="*.jar" />
    <antcall target="ProGuard">
      <param name="extensionClassFolder" value="${extensionClassFolder}" />
    </antcall>
    <copy file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar"
          tofile="${ExternalComponent.dir}/${extensionClassFolder}/files/AndroidRuntime.jar"/>
    <echo>Generated build file AndroidRuntime.jar [${extensionClassFolder}]</echo>
  </target>

  <!-- =====================================================================
       dexAllExtensions: create classes.dex for each extension.
       ===================================================================== -->
  <target name="dexAllExtensions" depends="jarAllExtensions">
    <condition property="dextask" value="dexExtension" else="d8Extension">
      <equals arg1="${lang.version}" arg2="8" />
    </condition>
    <foreach target="${dextask}" param="extension">
      <path>
        <fileset dir="${ExternalComponent-class.dir}" >
          <include name="*.jar"/>
        </fileset>
      </path>
    </foreach>
  </target>

  <target name="dexExtension">
    <basename property="extensionType" file="${extension}" suffix=".jar"/>
    <java jar="${lib.dir}/android/tools/dx.jar"
          fork="true"
          failonerror="true">
      <arg value="--dex"/>
      <arg value="--no-strict"/>
      <arg value="--output"/>
      <arg value="${ExternalComponent.dir}/${extensionType}/classes.jar"/>
      <arg value="${ExternalComponent-class.dir}/${extensionType}.jar"/>
    </java>
    <echo>Dexing extension: ${extensionType}</echo>
  </target>

  <target name="d8Extension">
    <basename property="extensionType" file="${extension}" suffix=".jar" />
    <java classname="com.android.tools.r8.D8"
          fork="true"
          failonerror="true">
      <classpath>
        <pathelement location="${lib.dir}/android/tools/d8.jar"/>
      </classpath>
      <arg line="--lib ${lib.dir}/android/android-${android.sdk.version}/android.jar"/>
      <arg line="--classpath ${public.build.dir}/AndroidRuntime.jar"/>
      <arg line="--min-api 8"/> <!-- Extensions only available starting with SDK 8 -->
      <arg value="--output"/>
      <arg value="${ExternalComponent.dir}/${extensionType}/classes.jar"/>
      <arg value="${ExternalComponent-class.dir}/${extensionType}.jar"/>
    </java>
    <echo>D8ing extension: ${extensionType}</echo>
  </target>



  <!-- =====================================================================
      extensions: create ${extension}.aix for each external component.
       ===================================================================== -->
  <target name="packExtension">
    <basename property="extensionType" file="${extension}" />
    <zip destfile="${Extensions.dir}/${extensionType}.aix"
         basedir="${ExternalComponent.dir}"
         includes="${extensionType}/"
    />
  </target>

  <target name="extensions" depends="ExternalComponentGenerator, jarAllExtensions, dexAllExtensions">
    <mkdir dir="${Extensions.dir}" />
    <foreach target="packExtension" param="extension" inheritall="true">
      <path>
        <dirset dir="${ExternalComponent.dir}">
          <include name="*" />
        </dirset>
      </path>
    </foreach>
  </target>


  <!-- =====================================================================
      ProGuard: obfuscates and minifies the AndroidRuntime.jar file, containing
                the extensions source code. Only runs if the task has been called
                like "ant extensions -Dproguard=1".
       ===================================================================== -->

  <condition property="skipProguard">
    <not>
      <equals arg1="${proguard}" arg2="1" />
    </not>
  </condition>

  <target name="ProGuard" unless="skipProguard">
    <taskdef resource="proguard/ant/task.properties"
             classpath="${lib.dir}/proguard/proguard.jar" />
    <proguard printmapping="${public.build.dir}/proguard.map"
              overloadaggressively="on"
              configuration="${lib.dir}/proguard/proguard.cfg"
              ignorewarnings="false">

      <injar  file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
      <outjar file="${ExternalComponent-class.dir}/${extensionClassFolder}_p.jar" />

      <libraryjar>
        <fileset dir="${public.deps.dir}">
          <include name="**/*.jar" />
          <include name="**/*.aar"/>
          <exclude name="*/dx.jar"/>
          <exclude name="*/apksigner.jar"/>
        </fileset>
      </libraryjar>

      <!-- Android Runtime -->
      <libraryjar file="${public.build.dir}/AndroidRuntime.jar" />

      <!-- FOR DEVELOPER: Add the needed libraries for your extension right here
                          like the ones above, just after copying them to the deps
                          directory.
      <libraryjar file="${public.deps.dir}/my-awesome-library.jar" /> -->

      <dontnote filter="proguard.configuration.ConfigurationLogger" />
      <adaptresourcefilecontents filter="proguard/ant/task.properties" />
    </proguard>

    <delete file="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
    <move file="${ExternalComponent-class.dir}/${extensionClassFolder}_p.jar"
          tofile="${ExternalComponent-class.dir}/${extensionClassFolder}.jar" />
  </target>
</project>

This build is successful :sob:. I had to include the App Inventor folder in the exclusion list in Windows Security and also changed the JAVA Home to JAVA 11 JDK.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.