如何为较旧的Android版本编译Cordova应用程序

时间:2018-01-12 00:19:18

标签: cordova cordova-android

我已经安装了cordova-android版本7.0.0

我的应用必须在Android 4.1.1中运行

所以我添加了平台:

<?xml version="1.0" encoding="UTF-8"?>
<UI xmlns="http://schemas.koboltentertainment.com">
    <Info>
        <Version>1.0.0.0</Version>
        <LocalCoord>640,480</LocalCoord>
    </Info>

    <Files>
        <Sprite>life.sff</Sprite>
        <Anim>life.air</Anim>
    </Files>

    <!-- HUD implementation. All positions are relative to the top-left of the screen. -->
    <HUD>
        <Containers>
            <!-- P1 LifeBar -->
            <Container name="P1LifeBar" pos="6,69" layer="201" alignment="Left" anim="0" id="11">
                <!-- Note here how we set the AnimSource element to self and the SFFSource to Player[0] (P1)'s SFF.
                     This means the animation should use P1's sprite data, but use our animation data. This is
                     similar to ChangeAnim2 in character code. -->
                <Anim name="P1Portrait" pos="12,0" layer="199" anim="9000" id="12">
                    <!-- Valid Values for AnimSource and SFFSource: self, Player[x] -->
                    <AnimSource>self</AnimSource>
                    <SFFSource>Players[0]</SFFSource>
                </Anim>

                <!-- We set the bar min and max according to P1's constants. We bind it to P1's Life property. -->
                <Bar min="0" max="Players[0].Constants.Data.Life" valueBind="Players[0].Life" pos="6,69" layer="200"
                     width="263" anim="1" recoverAnim="2" id="13">
                    <Mask anim="10"/>
                </Bar>

                <!-- Here we have our first Text. It binds to P1's Name.-->
                <Text font="Aqua Grotesque" pos="24,56" valueBind="Players[0].Name" alignment="Left"/>
            </Container>

            <!-- P2 LifeBar -->
            <Container name="P2LifeBar" pos="6,69" layer="201" alignment="Right" anim="3" id="14">
                <Anim name="P2Portrait" pos="614,0" layer="199" anim="9001" id="15">
                    <AnimSource>self</AnimSource>
                    <SFFSource>Players[1]</SFFSource>
                </Anim>
                <Bar min="0" max="Players[1].Constants.Data.Life" valueBind="Players[1].Life" pos="6,69" layer="200"
                     width="263" anim="4" recoverAnim="5" id="16">
                    <Mask anim="10"/>
                </Bar>
                <Text font="Aqua Grotesque" pos="400,56" valueBind="Players[0].Name" alignment="Right"/>
            </Container>
        </Containers>

        <!-- Timer. It's like Text with additional timer options, such as whether or not it is affected by Turbo. -->
        <Timer font="timer.xnb" pos="312,32" turboTime="false" valueBind="RoundTime">
            <!-- These are the times that are valid for this timer. These will be selectable from Options menu. -->
            <ValidTimes>
                <TimeOption>0</TimeOption>
                <TimeOption>30</TimeOption>
                <TimeOption>60</TimeOption>
                <TimeOption>90</TimeOption>
            </ValidTimes>
            <TicksPerCount>60</TicksPerCount>
        </Timer>
    </HUD>
</UI>

然后我得到:

  

使用cordova-fetch for cordova-android@4.1.1添加android   project ...无法从平台加载PlatformApi。错误:未处理   &#34;错误&#34;事件。 (似乎没有实现平台Api。)错误:   包名称必须如下所示:com.company.Name

有什么建议吗?

6 个答案:

答案 0 :(得分:6)

Cordova android平台版本与您的手机需要运行的Android版本不同。

Cordova平台版本支持一系列Android OS版本。您可以在the Codova Android platform guide page上为每个cordova android平台版本找到一系列受支持的Android版本。

Cordova android平台版本6.x支持从4.1到7.1的Android版本。

对于cordova android平台版本7.x,最低版本已设置为4.4,因此如果您需要支持比Kit-Kat更早的手机(最小sdk已更改),则无法使用平台版本7.x

所有这些都说明你需要的是一个版本6的cordova平台工具而不是4.1.1,所以使用以下行,它应该可以正常工作:

cordova platform add android@6.4.0

我还没有测试最新版本的CLI,目前我还在使用带有android平台6.2.3的cordova版本7.0.1,所以我不确定是否还有cordova android 6.4 .0将与cordova 8一起使用,或者如果您还必须降级CLI版本。

答案 1 :(得分:5)

原始问题已经过编辑,它现在要求支持Android 4.1.1(SDK 16),而不是SDK 19作为原始答案。

为了支持Android 4.1.1你可以使用cordova-android 7.0.0或更早版本,cordova-android 7.1.0将Min SDK增加到19。

原始回答:

首先,即使是最新的cordova-android版本(目前为7.1.0),仍然支持SDK 19及更新版本,所以不确定为什么要降级到4.1.1。

现在,要使cordova-android 4.1.1正常运行,您需要一个旧的Cordova CLI,因为新的CLI需要新的平台,并且与4.1.1之类的旧平台不兼容。

因此请使用

安装Cordova CLI 5.4.1
npm install -g cordova@5.4.1

执行此操作后,您应该可以添加带有

的cordova-android 4.1.1
cordova platform add android@4.1.1

答案 2 :(得分:2)

从Android SDK Manager安装Andorid平台API级别19

安装稳定的cordova:

npm install -g cordova@7.0.0

cordova platform add android

在config.xml中添加<widget>...<widget/>

<preference name="android-minSdkVersion" value="19">
<preference name="android-targetSdkVersion" value="19">

build.gradle中进行以下更改:

defaultMinSdkVersion=16
defaultTargetSdkVersion=19 
defaultCompileSdkVersion=19

project.properties中进行以下更改:

target=android-19

运行您的代码:

cordova run android

答案 3 :(得分:2)

请更新节点和cordova作为最新版本。

npm install -g cordova

并添加android 6.2.3版本。

cordova platform add android@6.2.3

此版本现在可以很好用。

答案 4 :(得分:1)

将crosswalk添加到您的项目中可以支持Android 4.1.1版

首先,ionic cordova platform remove android

然后,ionic cordova platform add android@6.2.3

最后,

cordova plugin add cordova-plugin-crosswalk-webview

答案 5 :(得分:0)

这里有很多错误的答案。

This page显示cordova-android的版本及其兼容的Android SDK API。如果要支持Jelly Bean,则需要使用cordova-android版本6.x.x –最新版本(7.x.x)仅支持低至API级别19(称为Kit Kat的v4.4)。没有理由做任何其他疯狂的事情!

只需运行cordova platform remove android && cordova platform add android@6

确保您的cordova也使用npm i -g cordova更新了,它可以正常工作而不会降级。另外请记住,您不再需要cordova-plugin-compat软件包!

还请注意,您需要下载与16不同的SDK API,但它仍然可以在较旧的设备(例如Android 4.1.1)上运行。