Todos os produtos
Search
Central de documentação

Mobile Platform as a Service:Perguntas frequentes

Última atualização: Jun 28, 2026

Consulte a lista de perguntas frequentes abaixo. Clique em uma pergunta para ver a resposta.

Sem conectividade de rede durante a compilação

A ausência ou bloqueio de conexão de rede durante a compilação causa falha no build. Verifique os itens a seguir:

  1. Confirme se há uma conexão ativa com a internet.

  2. Verifique se nenhum proxy de rede está ativo, incluindo proxies de navegador e softwares de proxy de terceiros.

  3. Certifique-se de que nenhum proxy de IDE esteja configurado.

    idea 代理

  4. No arquivo gradle.properties, confirme que nenhum proxy do Gradle está definido. Especificamente, verifique se systemProp.http.proxyHost e systemProp.http.proxyPort estão ausentes. Caso alguma dessas propriedades exista, exclua-a. gradle代理

Falha na compilação do programa

Siga estas etapas em ordem para identificar e corrigir a causa raiz da falha de compilação.

  1. Execute as etapas em Sem conectividade de rede durante a compilação para descartar problemas de rede.

  2. Verifique o log de execução do Gradle para confirmar se a nova dependência é válida.

  3. Verifique se os parâmetros group, artifact e version (GAV) da dependência estão corretos.

    // Reference the debug package
    group:artifact:version:raw@jar
    bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:raw@jar"
    // Reference the release package
    group:artifact:version@jar
    bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT@jar"
    manifest "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:AndroidManifest@xml"
  4. Execute o comando abaixo na linha de comando do sistema para exportar o log de execução do Gradle:

    # Before you run the command, confirm that the productflavor property is not defined. Otherwise, the command will fail.
    # The following command exports the execution log to the log.txt file.
    gradle buildDebug --info --debug -Plog=true > log.txt
  5. Abra o arquivo de log exportado. Uma entrada como a seguinte indica que a dependência não foi encontrada. A linha principal é a URL mostrada em "Searched in the following locations":

    Caused by: org.gradle.internal.resolve.ArtifactNotFoundException: Could not find nebulacore-build-AndroidManifest.xml (com.alipay.android.phone.wallet:nebulacore-build:1.6.0.171211174825).
    Searched in the following locations:
    http://mvn.cloud.alipay.com/nexus/content/repositories/releases/com/alipay/android/phone/wallet/nebulacore-build/1.6.0.171211174825/nebulacore-build-1.6.0.171211174825-AndroidManifest.xml
         at org.gradle.internal.resolve.result.DefaultBuildableArtifactResolveResult.notFound(DefaultBuildableArtifactResolveResult.java:38)
         at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveArtifactFromCache(CachingModuleComponentRepository.java:260)
  6. Abra a URL HTTP do log em um navegador e faça login no repositório Maven para confirmar se o artefato existe.

    Nota

    Encontre o nome de usuário e a senha no arquivo build.gradle.

  7. Execute o comando a seguir para limpar o cache do gradle:

    gradle clean --refresh-dependencies
  8. Se o artefato existir no repositório Maven, exclua o cache local do Gradle e recompile:

    • No macOS, Linux ou Unix, execute:

      cd ~
      cd .gradle
      cd caches
      rm -rf modules-2
    • No Windows, acesse C:\Users\{username}\.gradle\caches e exclua a pasta modules-2.

Lentidão durante a compilação

Se a compilação levar mais de 20 minutos, siga as etapas abaixo para acelerar o processo.

  1. Siga as etapas da seção anterior para confirmar se a conexão de rede está estável.

  2. Verifique se o firewall está desativado.

  3. Confirme que nenhum proxy de rede está configurado no IntelliJ IDEA.

  4. Pré-configure o repositório Maven no script de build. O exemplo a seguir carrega primeiro o espelho Maven do Alibaba Cloud, o que reduz a latência de resolução:

     apply plugin: 'maven'
     buildscript {
         repositories {
             mavenLocal()
    
     // First, load the Maven mirror
             maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
    
             maven {
                 credentials {
                     username "Use a known user"
                     password "Use a known password"
                 }
                 url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/"
             }
         }
         dependencies {
             classpath 'com.android.tools.build:gradle:2.1.3'
             classpath 'com.alipay.android:android-gradle-plugin:2.1.3.3.3'
             classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
         }
     }
     allprojects {
         repositories {
             flatDir {
                 dirs 'libs'
             }
             mavenLocal()
             maven {
                 credentials {
                     username "xxxxxxxxx"
                     password "xxxxxxx"
                 }
                 url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/"
             }
             maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
         }
     }

Falha na compilação com NullPointerException

空指针异常

Ao conectar-se ao Apsara Stack, o build pode falhar com uma NullPointerException após o download do arquivo de configuração e a conexão com o mPaaS. Inspecione o arquivo de configuração e verifique se todos os 13 campos obrigatórios estão presentes e se os nomes dos campos correspondem aos do arquivo baixado da nuvem pública.

Como depurar um aplicativo

Há dois métodos disponíveis para depurar o aplicativo durante o desenvolvimento:

  • Iniciar o aplicativo no modo de depuração

  • Depurar o aplicativo durante a execução

Iniciar o aplicativo no modo de depuração

  • Cenários

    Use este método para depurar código de inicialização executado na partida, como application init.

  • Procedimento

  1. Execute adb shell am start -W -S -D <application_package_name>/<first_activity_class_name>. Para o Demo do mPaaS, o nome do pacote é com.mpaas.demo e o nome da classe da primeira activity é com.alipay.mobile.quinox.LauncherActivity. Portanto, o comando completo é adb shell am start -W -S -D com.mpaas.demo/com.alipay.mobile.quinox.LauncherActivity. A figura abaixo mostra o nome da classe da primeira activity.

    img

  2. Após executar o comando, uma caixa de diálogo aparece no dispositivo.

  3. Defina um breakpoint na linha de código alvo e anexe ao processo do aplicativo conforme mostrado.

    修改2.jpg

Depurar o aplicativo durante a execução

  • Cenários

    Use este método para depurar após uma interação do usuário, como clicar em um botão ou navegar para uma página.

  • Procedimento

    Com o aplicativo em execução, clique em Attach to process (process) para iniciar a depuração.

Observações sobre o uso de MultiDex em projetos mPaaS Portal e Bundle

Evite usar MultiDex em projetos Portal e Bundle. A única exceção suportada é um único projeto portal que requer multiDexEnabled true. Se um Bundle ficar muito grande, divida-o em bundles menores em vez de ativar o MultiDex.

Como limpar o cache do Gradle

Abra as configurações do plugin do Gradle e clique em Clean Cache para excluir todos os dados em cache.

插件设置界面

Como atualizar para o plugin mais recente do Gradle

Nota

Esta seção aplica-se apenas à série de baseline 10.1.68. Para obter mais informações sobre esta versão de baseline, consulte Introdução ao baseline e Notas de versão da série de baseline 10.1.68.

O Android Gradle Plugin oficial do Google é a versão 3.5.x. O mPaaS fornece um plugin compatível na mesma versão, com suporte às APIs do Google Android Gradle Plugin 3.5.3 e ao Gradle 6,2.

Alterações no método de importação

  1. Adicione apenas a seguinte dependência para importar o plugin do mPaaS. O Android Gradle Plugin oficial é obtido automaticamente por meio de dependências transitivas, portanto, não é necessário declará-lo separadamente.

    dependencies {
    classpath 'com.alipay.android:android-gradle-plugin:3.5.18'
    }
  2. Use o Gradle Wrapper versão 5,6 ou posterior. Recomenda-se a versão 6,2.

Alterações de uso

  • Remova apply plugin:'com.android.application' e substitua pelo plugin apropriado do mPaaS:

    • Para um projeto portal, use apply plugin:'com.alipay.portal'.

    • Para um projeto bundle, exclua apply plugin:'com.android.application' e use apenas apply plugin:'com.alipay.bundle'.

    • Para um projeto library, exclua apply plugin:'com.alipay.library' e use apenas apply plugin:'com.android.library'.

  • Se usar o Android Studio 3.5 ou posterior, adicione android.buildOnlyTargetAbi=false ao arquivo gradle.properties.

  • O componente Security Guard do mPaaS não oferece suporte à assinatura V2. Desative a assinatura V2 nestes casos:

    • Ao depurar ou instalar o APK via Android Studio

    • Ao compilar pela linha de comando com minSdkVersion 24 ou superior

    Para desativar a assinatura V2, adicione o seguinte à configuração de assinatura:

    v2SigningEnabled false

Importante

Após limpar o cache, monitore e confirme se as páginas miniapp e H5 funcionam conforme esperado.

A tag input file não abre a câmera no Huawei EMUI 10

O Huawei EMUI 10 usa uma implementação de URI fora do padrão que impede a tag <input file> de abrir a câmera. Aplique todas as três correções a seguir.

1. Atualizar o baseline

  • Se estiver na série de baseline 32, atualize para 10.1.32.18 ou posterior.

  • Se estiver na série de baseline 60, atualize para 10.1.60.9 ou posterior.

  • Se estiver na série de baseline 68, atualize para 10.1.68-beta.3 ou posterior.

2. Configurar o FileProvider

Reutilize um FileProvider existente ou crie um novo.

  1. Crie uma classe Java que estenda o FileProvider:

    import android.support.v4.content.FileProvider;
    public class NebulaDemoFileProvider extends FileProvider {
    }
  2. Em res/xml, crie um arquivo chamado nebula_fileprovider_path.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <paths xmlns:android="http://schemas.android.com/apk/res/android">
     <external-path name="external" path="."/>
    </paths>
  3. Registre o provider no AndroidManifest.xml:

    <provider
     android:name="com.mpaas.demo.nebula.NebulaDemoFileProvider"
     android:authorities="com.mpaas.demo.nebula.provider"
     android:exported="false"
     android:grantUriPermissions="true">
     <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/nebula_fileprovider_path" />
    </provider>
    Nota

    O valor de android:authorities, com.mpaas.demo.nebula.provider, foi retirado do demo do mPaaS. Defina um valor exclusivo para o seu aplicativo. Não use com.mpaas.demo.nebula.provider, pois entrará em conflito com outros aplicativos mPaaS.

3. Implementar o H5NebulaFileProvider

  1. Crie uma classe Java que implemente H5NebulaFileProvider e sobrescreva o método getUriForFile. No corpo do método, delegue ao FileProvider criado acima para gerar a URI:

    public class H5NebulaFileProviderImpl implements H5NebulaFileProvider {
     private static final String TAG = "H5FileProviderImpl";
    
     @Override
     public Uri getUriForFile(File file) {
         try {
             return getUriForFileImpl(file);
         } catch (Exception e) {
             H5Log.e(TAG, e);
         }
         return null;
     }
    
     private static Uri getUriForFileImpl(File file) {
         Uri fileUri = null;
         if (Build.VERSION.SDK_INT >= 24) {
             fileUri = NebulaDemoFileProvider.getUriForFile(LauncherApplicationAgent.getInstance().getApplicationContext(), "com.mpaas.demo.nebula.provider", file);
         } else {
             fileUri = Uri.fromFile(file);
         }
         return fileUri;
     }
    }
  2. Registre o H5NebulaFileProvider. Após a conclusão da inicialização do mPaaS e antes de iniciar o pacote offline, registre o H5NebulaFileProvider. Este registro é global e precisa ser feito apenas uma vez:

    H5Utils.setProvider(H5NebulaFileProvider.class.getName(), new H5NebulaFileProviderImpl());

Como usar ou depender do mPaaS em uma Library

Para reutilizar um componente do mPaaS entre módulos, adicione-o como uma dependência de biblioteca. Este procedimento usa o componente Scan do mPaaS como exemplo.

Pré-requisitos

O projeto deve estar conectado ao mPaaS usando o método AAR nativo.

Procedimento

  1. No projeto Android, crie um módulo Android Library chamado scan.

  2. No arquivo build.gradle do novo módulo scan, adicione api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline"):

     dependencies {
         ……
         // This must be added when using mPaaS component features in a module.
         api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline")
    
         ……
      }
  3. Use o plugin do mPaaS no Android Studio para instalar o componente Scan no módulo scan: acesse mPaaS > Native AAR Connection > Configure/Update Component > Start Configuration. O componente Scan é carregado automaticamente após a instalação.

  4. No build.gradle do aplicativo principal, adicione o plugin de configuração de baseline:

     plugins {
         id 'com.android.application'
    
         ......    
         // You must add baseline.config (baseline) to the build.gradle file under app.
         id 'com.alipay.apollo.baseline.config'
     }
  5. No módulo onde o componente Scan é necessário, adicione o módulo scan como dependência:

     dependencies {
         api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline")
    
         ....
         api project(':scan')// Scan component
     }

Como resolver o erro de runtime 608 ou erros nativos da libsgmain

Pesquise por SecException no log do Android Studio. Se encontrar o código de erro 608 ou um erro nativo da libsgmain, realize as verificações a seguir.

  1. Verifique se o arquivo res/drawable/yw_1222.jpg existe e é válido:

    • Confirme se o arquivo de configuração contém dados codificados em Base64.

    • Certifique-se de que o plugin do Gradle baseline.update ou baseline.config esteja aplicado.2

  2. Verifique se a pasta META-INF contém todos os três arquivos de assinatura: CERT.SF, MANIFEST.MF e CERT.RSA:

    • Em app/build.gradle, ative v1SignEnabled.

    • Confirme se o build.gradle raiz do projeto contém apply plugin: 'com.alipay.apollo.optimize'.3

Se todas as verificações forem aprovadas, o problema provavelmente é um erro de assinatura no APK enviado ao console. Envie o pacote APK novamente.