Este tópico descreve como integrar o recurso Hotpatch do mPaaS ao seu aplicativo Android.
O Hotpatch oferece dois métodos de integração: AAR nativo e baseado em componentes.
Inicializar o hotpatch (Necessário apenas para o método de integração AAR nativo)
Pré-requisitos
Se você usar o método de integração AAR nativo, adicione o mPaaS ao seu projeto.
Se você usar o método de integração baseada em componentes, conclua o procedimento de integração baseada em componentes.
Adicionar o SDK
Método de integração AAR nativo
Use o Component Management (AAR) para instale o componente Hotpatch (HOTFIX) no seu projeto. Para obter mais informações, consulte Gerenciar dependências de componentes.
Método de integração baseada em componentes
Nos projetos Portal e Bundle, use o Component Management para instale o componente Hotpatch (HOTFIX). Para obter mais informações, consulte Gerenciar dependências de componentes.
Inicializar o hotpatch
Integração AAR nativa
Para usar o recurso de hotpatch, conclua as etapas a seguir.
-
Seu objeto
Applicationdeve herdar deQuinoxlessApplicationLike. Impeça a ofuscação dessa classe. O exemplo a seguir usaMyApplication.@Keep public class MyApplication extends QuinoxlessApplicationLike implements Application.ActivityLifecycleCallbacks { private static final String TAG = "MyApplication"; @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); Log.i(TAG, "attachBaseContext"); } @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate"); registerActivityLifecycleCallbacks(this); } @Override public void onMPaaSFrameworkInitFinished() { MPHotpatch.init(); LoggerFactory.getTraceLogger().info(TAG, getProcessName()); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { Log.i(TAG, "onActivityCreated"); } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } } -
No arquivo
AndroidManifest.xml, defina o objetoApplicationcomo aquele fornecido pelo mPaaS. Adicione a classeMyApplicationque você criou à tagmeta-datacom a chavempaas.quinoxless.extern.application. O código a seguir mostra um exemplo:<application android:name="com.alipay.mobile.framework.quinoxless.QuinoxlessApplication" > <meta-data android:name="mpaas.quinoxless.extern.application" android:value="com.mpaas.demo.MyApplication" /> </application>com.mpaas.demo.MyApplicationé sua classe agente de aplicativo personalizada que herda deQuinoxlessApplicationLike.
Integração baseada em componentes
Não são necessárias alterações neste método de integração, pois o conteúdo necessário já está integrado.
Gerar um hotpatch
Para obter mais informações, consulte Gerar um pacote de hotpatch.
Publicar o hotpatch
Para obter mais informações, consulte Liberar um pacote de hotpatch.
Acionar o hotpatch
Esta seção usa o exemplo de Hotpatch na amostra de código para descrever o procedimento de hotpatch.
Nesta amostra de código, o conteúdo a ser corrigido é o texto de uma mensagem Toast.
Antes de aplicar a correção, clique em no botão Impersonate the click event to be hotpatched. Uma mensagem Toast será exibida.
Para aplicar a correção, clique em no botão Trigger hotpatch deployment detection para acionar o baixe do hotpatch. Após a conclusão do baixe, reinicie o aplicativo de demonstração.
Após a aplicação da correção, clique em no botão Impersonate the click event to be hotpatched. Uma mensagem Toast será exibida com o texto 'The current click event has been hotpatched'.
Solução de problemas
Não importe
apache-httpclientouapache-commonspor métodos não oficiais. Para obter mais informações, consulte a documentação oficial na plataforma de desenvolvedores Android.Não importe SDKs relacionados ao sistema NFC por métodos não oficiais.
Certifique-se de não herdar de nenhuma classe relacionada a
Application. UseApplicationLikeem vez disso.
Para visualize os logs do hotpatch, filtre pela tag DynamicRelease.
-
Fase de baixe: Filtre por
RPCException. Se ocorrer umaRPCException, o baixe falhou.NotaSe ocorrer uma exceção relacionada a RPC, solucione o problema com base no código de erro. Para obter mais informações, consulte Chamadas RPC.
Fase de mesclagem do patch: Filtre por
immediately=true. Uma entrada de log correspondente a esse filtro indica que o patch foi mesclado com sucesso. Após a mesclagem, reinicie o aplicativo para que o patch entre em vigor.