com.gc.android.market.api;

本文介绍了一种用于与市场服务交互的会话API实现细节,包括登录认证、请求构造及响应处理等关键流程。该API支持同步和异步调用方式,并提供了多种请求类型如应用查询、评论获取等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.gc.android.market.api;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.StringTokenizer;
import java.util.Vector;
import java.util.zip.GZIPInputStream;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import com.gc.android.market.api.model.Market.AppsRequest;
import com.gc.android.market.api.model.Market.AppsResponse;
import com.gc.android.market.api.model.Market.CategoriesRequest;
import com.gc.android.market.api.model.Market.CategoriesResponse;
import com.gc.android.market.api.model.Market.CommentsRequest;
import com.gc.android.market.api.model.Market.CommentsResponse;
import com.gc.android.market.api.model.Market.GetImageRequest;
import com.gc.android.market.api.model.Market.GetImageResponse;
import com.gc.android.market.api.model.Market.Request;
import com.gc.android.market.api.model.Market.Request.RequestGroup;
import com.gc.android.market.api.model.Market.RequestContext;
import com.gc.android.market.api.model.Market.Response;
import com.gc.android.market.api.model.Market.Response.ResponseGroup;
import com.gc.android.market.api.model.Market.ResponseContext;
import com.gc.android.market.api.model.Market.GetAssetRequest;
import com.gc.android.market.api.model.Market.GetAssetResponse;;

/**
 * MarketSession session = new MarketSession();
 * session.login(login,password, androidId);
 * For asyncronous calls use append, callback and flush
 * session.append(xxx,yyy);
 * session.append(xxx,yyy);
 * ...
 * session.flush();
 *  For syncronous call, use the specific method
 */
public class MarketSession {
        
        public static interface Callback<T> {
                
                public void onResult(ResponseContext context, T response);
        }
        /*
         * SERVICE : Service required to the market. 
         * Default value: android. This service must be used to query info to the Market
         * androidsecure: This service must be used to download apps
         * sierra (checkout): This service must be used for checkout (at moment unused)
         */

        public String SERVICE = "android";

        private static final String URL_LOGIN = "https://www.google.com/accounts/ClientLogin";
        public static final String ACCOUNT_TYPE_GOOGLE = "GOOGLE";
        public static final String ACCOUNT_TYPE_HOSTED = "HOSTED";
        public static final String ACCOUNT_TYPE_HOSTED_OR_GOOGLE = "HOSTED_OR_GOOGLE";
        public static final int PROTOCOL_VERSION = 2;
        Request.Builder request = Request.newBuilder();
        RequestContext.Builder context = RequestContext.newBuilder();
        public RequestContext.Builder getContext() {
                return context;
        }
        
        List<Callback<?>> callbacks = new Vector<Callback<?>>(); 
        String authSubToken = null;
        
        public String getAuthSubToken() {
                return authSubToken;
        }

        /*
         * Login must set isSecure to false for list and download
         */
        public MarketSession(Boolean isSecure) {
        if (isSecure)
            SERVICE = "androidsecure";
        else 
            SERVICE = "android";
        context.setIsSecure(false);
        context.setVersion(2009011);
        setLocale(Locale.getDefault());
        context.setDeviceAndSdkVersion("passion:9");
        setOperatorTMobile();
        }
        
        public void setLocale(Locale locale) {
                context.setUserLanguage(locale.getLanguage().toLowerCase());
                context.setUserCountry(locale.getCountry().toLowerCase());
        }
        
        public void setOperator(String alpha, String numeric) {
                setOperator(alpha, alpha, numeric, numeric);
        }
        
        public void setOperatorTMobile() {
                setOperator("T-Mobile", "310260");
        }
        
        public void setOperatorSFR() {
                setOperator("F SFR", "20810");
        }
        
        public void setOperatorO2() {
                setOperator("o2 - de", "26207");
        }
        
        public void setOperatorSimyo() {
                setOperator("E-Plus", "simyo", "26203", "26203");
        }
        
        public void setOperatorSunrise() {
                setOperator("sunrise", "22802");
        }
        
        /**
         * http://www.2030.tk/wiki/Android_market_switch
         */
        public void setOperator(String alpha, String simAlpha, String numeric, String simNumeric) {
                context.setOperatorAlpha(alpha);
                context.setSimOperatorAlpha(simAlpha);
                context.setOperatorNumeric(numeric);
                context.setSimOperatorNumeric(simNumeric);
        }
        
        public void setAuthSubToken(String authSubToken) {
                context.setAuthSubToken(authSubToken);
                this.authSubToken = authSubToken; 
        }
        
        public void setIsSecure(Boolean isSecure) {
                context.setIsSecure(isSecure);
        }
        
        public void setAndroidId(String androidId) {
                context.setAndroidId(androidId);
        }
        
        
        public void login(String email, String password, String androidId) {
                this.login(email, password, androidId, ACCOUNT_TYPE_HOSTED_OR_GOOGLE);
        }
        
        public void login(String email, String password, String androidId,
                        String accountType) {
                //Android ID must an unique identifier associated to the account 
                //used in in the login
                setAndroidId(androidId);
                Map<String,String> params = new LinkedHashMap<String,String>();
                params.put("Email", email);
                params.put("Passwd", password);
                
                params.put("service", SERVICE);
        //      params.put("source", source);
                params.put("accountType", accountType);

                // Login at Google.com
                try {
                        String data = Tools.postUrl(URL_LOGIN, params);
                        StringTokenizer st = new StringTokenizer(data, "\n\r=");
                        String authKey = null;
                        while (st.hasMoreTokens()) {
                                if (st.nextToken().equalsIgnoreCase("Auth")) {
                                        authKey = st.nextToken();
                                        break;
                                }
                        }
                        if(authKey == null)
                                throw new RuntimeException("authKey not found in "+ data);

                        setAuthSubToken(authKey);
                } catch(Tools.HttpException httpEx) {
                        if(httpEx.getErrorCode() != 403)
                                throw httpEx;
                        
                        String data = httpEx.getErrorData();
                        StringTokenizer st = new StringTokenizer(data, "\n\r=");
                        String googleErrorCode = null;
                        while (st.hasMoreTokens()) {
                                if (st.nextToken().equalsIgnoreCase("Error")) {
                                        googleErrorCode = st.nextToken();
                                        break;
                                }
                        }
                        if(googleErrorCode == null)
                                throw httpEx;
                        
                        throw new LoginException(googleErrorCode);
                } catch (IOException ex) {
                        throw new RuntimeException(ex);
                }
        }
        
        public List<Object> queryApp(AppsRequest requestGroup)
        {
                List<Object> retList = new ArrayList<Object>();
                
                request.addRequestGroup(RequestGroup.newBuilder().setAppsRequest(requestGroup));
                
                RequestContext ctxt = context.build();
                context = RequestContext.newBuilder(ctxt);
                request.setContext(ctxt);
                try {
                        Response resp = executeProtobuf(request.build());
                        for(ResponseGroup grp : resp.getResponseGroupList()) {
                                if(grp.hasAppsResponse())
                                        retList.add(grp.getAppsResponse());
                        }
                } finally {
                        request = Request.newBuilder();
                }
                return retList;
        }
        
        public CategoriesResponse queryCategories() {
                RequestContext ctxt = context.build();
                context = RequestContext.newBuilder(ctxt);
                request.setContext(ctxt);
                CategoriesResponse categoriesResponse = null;
                try {
                        Response response = executeProtobuf(request.addRequestGroup(
                                        RequestGroup.newBuilder().setCategoriesRequest(
                                                        CategoriesRequest.newBuilder().build())).setContext(ctxt).build());
                        categoriesResponse = response.getResponseGroup(0).getCategoriesResponse();
                } finally {
                        request = Request.newBuilder();;
                }
                return categoriesResponse;
        }       

        public GetAssetResponse queryGetAssetRequest(String assetId){
            setIsSecure(true);
            RequestContext ctxt = context.build();
            context = RequestContext.newBuilder(ctxt);
            request.setContext(ctxt);
            GetAssetResponse assetResponse = null;
            try {
                Response response = executeProtobuf(request.addRequestGroup(
                            RequestGroup.newBuilder().setGetAssetRequest(
                            GetAssetRequest.newBuilder().setAssetId(
                            assetId).build())).setContext(ctxt).build());
                assetResponse = response.getResponseGroup(0).getGetAssetResponse();
            } finally {
                setIsSecure(false);
                request = Request.newBuilder(); 
            }
            return assetResponse; 
        }
        
        
        public void append(AppsRequest requestGroup, Callback<AppsResponse> responseCallback) {
                request.addRequestGroup(RequestGroup.newBuilder().setAppsRequest(requestGroup));
                callbacks.add(responseCallback);
        }
        
        public void append(GetImageRequest requestGroup, Callback<GetImageResponse> responseCallback) {
                request.addRequestGroup(RequestGroup.newBuilder().setImageRequest(requestGroup));
                callbacks.add(responseCallback);
        }
        
        public void append(CommentsRequest requestGroup, Callback<CommentsResponse> responseCallback) {
                request.addRequestGroup(RequestGroup.newBuilder().setCommentsRequest(requestGroup));
                callbacks.add(responseCallback);
        }
        
        public void append(CategoriesRequest requestGroup, Callback<CategoriesResponse> responseCallback) {
                request.addRequestGroup(RequestGroup.newBuilder().setCategoriesRequest(requestGroup));
                callbacks.add(responseCallback);
        }
        
        @SuppressWarnings("unchecked")
        public void flush() {
                RequestContext ctxt = context.build();
                context = RequestContext.newBuilder(ctxt);
                request.setContext(ctxt);
                try {
                        Response resp = executeProtobuf(request.build());
                        int i = 0;
                        for(ResponseGroup grp : resp.getResponseGroupList()) {
                                Object val = null;
                                if(grp.hasAppsResponse())
                                        val = grp.getAppsResponse();
                                if(grp.hasCategoriesResponse())
                                        val = grp.getCategoriesResponse();
                                if(grp.hasCommentsResponse())
                                        val = grp.getCommentsResponse();
                                if(grp.hasImageResponse())
                                        val = grp.getImageResponse();
                        ((Callback)callbacks.get(i)).onResult(grp.getContext(), val);
                                i++;
                        }
                } finally {
                        request = Request.newBuilder();
                        callbacks.clear();
                }
        }
        
        public ResponseGroup execute(RequestGroup requestGroup) {
                RequestContext ctxt = context.build();
                context = RequestContext.newBuilder(ctxt);
                request.setContext(ctxt);
                Response resp = executeProtobuf(request.addRequestGroup(requestGroup).setContext(ctxt).build());
                return resp.getResponseGroup(0);
        }
        
        private Response executeProtobuf(Request request) {
                byte[] requestBytes = request.toByteArray();
                byte[] responseBytes = null;            
                try {
                    if (!context.getIsSecure())
                        responseBytes = executeRawHttpQuery(requestBytes);
                    else 
                        responseBytes = executeRawHttpsQuery(requestBytes);
                        Response r = Response.parseFrom(responseBytes);
                        return r;
                } catch(Exception ex) {
                        throw new RuntimeException(ex);
                }
        }
        
        private byte[] executeRawHttpQuery(byte[] request) {
                try {
                        
                        URL url = new URL("http://android.clients.google.com/market/api/ApiRequest");
                        HttpURLConnection cnx = (HttpURLConnection)url.openConnection();
                        cnx.setDoOutput(true);
                        cnx.setRequestMethod("POST");
                        cnx.setRequestProperty("Cookie","ANDROID="+authSubToken);
                        cnx.setRequestProperty("User-Agent", "Android-Market/2 (sapphire PLAT-RC33); gzip");
                        cnx.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                        cnx.setRequestProperty("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
                        
                        String request64 = Base64.encodeBytes(request,Base64.URL_SAFE);
                        
                        String requestData = "version="+PROTOCOL_VERSION+"&request="+request64;
                        
                        
                        cnx.setFixedLengthStreamingMode(requestData.getBytes("UTF-8").length);
                        OutputStream os = cnx.getOutputStream();
                        os.write(requestData.getBytes());
                        os.close();
                        
                        if(cnx.getResponseCode() >= 400) {
                                throw new RuntimeException("Response code = " + cnx.getResponseCode() + 
                                                ", msg = " + cnx.getResponseMessage());
                        }
                        
                        InputStream is = cnx.getInputStream();
                        GZIPInputStream gzIs = new GZIPInputStream(is);
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] buff = new byte[1024];
                        while(true) {
                                int nb = gzIs.read(buff);
                                if(nb < 0)
                                        break;
                                bos.write(buff,0,nb);
                        }
                        is.close();
                        cnx.disconnect();

                        return bos.toByteArray();
                } catch(Exception ex) {
                        throw new RuntimeException(ex);
                }
        }
    private Boolean trustAll() {
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
                    public void checkClientTrusted(
                        java.security.cert.X509Certificate[] certs, String authType) {
                    }
                    public void checkServerTrusted(
                        java.security.cert.X509Certificate[] certs, String authType) {
                    }
                }
            };
        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier()
            {
                public boolean verify(String arg0, SSLSession arg1) {
                    return true;
                }
            }
            ); 
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    private byte[] executeRawHttpsQuery(byte[] request){
        if (request == null)
            return null;        
        if (!trustAll())
            return null;
        try {
            URL url = new URL("https://android.clients.google.com/market/api/ApiRequest");
            HttpsURLConnection cnx = (HttpsURLConnection)url.openConnection();
            cnx.setDoOutput(true);
            cnx.setRequestMethod("POST");
            cnx.setRequestProperty("Cookie","ANDROIDSECURE=" + this.getAuthSubToken());
            cnx.setRequestProperty("User-Agent", "Android-Market/2 (sapphire PLAT-RC33); gzip");
            cnx.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            cnx.setRequestProperty("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7");
            String request64 = Base64.encodeBytes(request,Base64.URL_SAFE);
            String requestData = "version="+PROTOCOL_VERSION+"&request="+request64;
            cnx.setFixedLengthStreamingMode(requestData.getBytes("UTF-8").length);
            OutputStream os = cnx.getOutputStream();
            os.write(requestData.getBytes());
            os.close();
            if(cnx.getResponseCode() >= 400) {
                cnx.disconnect();
                throw new IOException("Response code = " + cnx.getResponseCode() + 
                        ", msg = " + cnx.getResponseMessage());
            }
            InputStream is = cnx.getInputStream();
            GZIPInputStream gzIs = new GZIPInputStream(is);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buff = new byte[1024];
            while(true) {
                int nb = gzIs.read(buff);
                if(nb < 0)
                    break;
                bos.write(buff,0,nb);
            }
            is.close();
            cnx.disconnect();
            return bos.toByteArray();
      } catch(Exception ex) {
            throw new RuntimeException(ex);
        }
    }           
}

 

D:\Users\Downloads\Log\youtube\bugreport-RMX5313IN-AP3A.240905.015.A2-2025-06-19-11-34-32\bugreport-RMX5313IN-AP3A.240905.015.A2-2025-06-19-11-34-32.txt (155 hits) Line 15125: WINDOW MANAGER LAST ANR (dumpsys window lastanr) Line 116973: ------ VM TRACES AT LAST ANR (/data/anr/anr_2025-06-19-11-19-10-783: 2025-06-19 11:19:18) ------ Line 116973: ------ VM TRACES AT LAST ANR (/data/anr/anr_2025-06-19-11-19-10-783: 2025-06-19 11:19:18) ------ Line 116986: anr < Line 116996: anr < Line 117006: anr < Line 117016: anr < Line 199851: "anrV33-1" prio=5 tid=16 TimedWaiting Line 201580: at anrp.run(PG:35) Line 201676: at anrp.run(PG:35) Line 201731: at anrp.run(PG:35) Line 201752: at anrp.run(PG:35) Line 221720: ------ ANR FILES (ls -lt /data/anr/) ------ Line 221722: -rw------- 1 system system 4661511 2025-06-19 11:19 anr_2025-06-19-11-19-10-783 Line 221723: -rw------- 1 system system 5125123 2025-06-19 11:18 anr_2025-06-19-11-18-28-676 Line 221724: -rw------- 1 system system 5110113 2025-06-19 11:18 anr_2025-06-19-11-17-59-943 Line 221725: -rw------- 1 system system 5170843 2025-06-19 11:15 anr_2025-06-19-11-15-30-180 Line 221726: -rw------- 1 system system 5211710 2025-06-19 11:15 anr_2025-06-19-11-14-59-431 Line 221727: -rw------- 1 system system 5249604 2025-06-19 11:13 anr_2025-06-19-11-13-33-120 Line 221728: -rw------- 1 system system 2550071 2025-06-18 12:01 anr_2025-06-18-12-01-29-071 Line 221729: -rw------- 1 system system 2661757 2025-06-18 12:01 temp_anr_204762592841438826.txt Line 221730: -rw------- 1 system system 4501038 2025-06-18 12:01 anr_2025-06-18-12-00-54-648 Line 221731: -rw------- 1 system system 2790621 2025-06-18 12:00 temp_anr_6131620412329269920.txt Line 221732: -rw------- 1 system system 4774064 2025-06-18 12:00 anr_2025-06-18-12-00-30-005 Line 221733: -rw------- 1 system system 2962603 2025-06-18 12:00 temp_anr_4436968846206332345.txt Line 221734: -rw------- 1 system system 4909259 2025-06-18 12:00 anr_2025-06-18-12-00-06-676 Line 221735: -rw------- 1 system system 5561152 2025-06-18 11:59 anr_2025-06-18-11-59-15-525 Line 221736: -rw------- 1 system system 2486347 2025-06-18 11:58 anr_2025-06-18-11-58-50-107 Line 221737: -rw------- 1 system system 2513502 2025-06-18 11:58 temp_anr_7627520979123128223.txt Line 221738: -rw------- 1 system system 2547664 2025-06-18 11:58 temp_anr_7306873162887901303.txt Line 221739: -rw------- 1 system system 4468182 2025-06-18 11:58 anr_2025-06-18-11-58-19-450 Line 221740: -rw------- 1 system system 5457289 2025-06-18 11:56 anr_2025-06-18-11-56-37-891 Line 221741: -rw------- 1 system system 1325229 2025-06-18 11:54 anr_2025-06-18-11-53-47-163 Line 221742: -rw------- 1 system system 5504454 2025-06-18 11:52 anr_2025-06-18-11-52-01-409 Line 239615: backstage_power/android.app.gate_fgs_timeout_anr_behavior: READ_ONLY + DISABLED (system), DISABLED (device_config) Line 240829: system_performance/com.android.server.utils.anr_timer_freezer: READ_ONLY + DISABLED (system), DISABLED (device_config) Line 240830: system_performance/com.android.server.utils.anr_timer_service: READ_ONLY + DISABLED (system), DISABLED (device_config) Line 259422: service_start_foreground_anr_delay_ms=10000 Line 259437: short_fgs_anr_extra_wait_duration=10000 Line 288694: ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr) Line 300808: importance=400 pss=0.00 rss=0.00 description=bg anr: Input dispatching timed out (Application does not have a focused window). state=empty trace=/data/system/procexitstore/anr_2025-06-18-11-53-47-163.gz Line 300808: importance=400 pss=0.00 rss=0.00 description=bg anr: Input dispatching timed out (Application does not have a focused window). state=empty trace=/data/system/procexitstore/anr_2025-06-18-11-53-47-163.gz Line 307584: importance=230 pss=0.00 rss=347MB description=user request after error: No response to onStartJob state=empty trace=/data/system/procexitstore/anr_2025-06-19-11-19-10-783.gz Line 307588: importance=230 pss=0.00 rss=483MB description=remove task state=empty trace=/data/system/procexitstore/anr_2025-06-19-11-17-59-943.gz Line 307604: importance=230 pss=0.00 rss=452MB description=user request after error: Input dispatching timed out (8b6aa1e com.google.android.youtube/com.google.android.youtube.app.honeycomb.Shell$HomeActivity (server) is not responding. Waited 5001ms for FocusEvent(hasFocus=true)). state=empty trace=/data/system/procexitstore/anr_2025-06-19-11-15-30-180.gz Line 307608: importance=100 pss=0.00 rss=0.00 description=user request after error: Input dispatching timed out (96080e6 com.google.android.youtube/com.google.android.youtube.app.honeycomb.Shell$HomeActivity (server) is not responding. Waited 5000ms for FocusEvent(hasFocus=true)). state=empty trace=/data/system/procexitstore/anr_2025-06-19-11-14-59-431.gz Line 437707: Job Completions com.coloros.gallery3d/com.oplus.gallery.framework.abilities.scan.manager.GalleryScanService: successful_finish(7x) anr(1x) Line 437719: 11 starts, 1 anrs Line 439978: Job Completions @androidx.work.systemjobscheduler@com.google.android.youtube/androidx.work.impl.background.systemjob.SystemJobService: unknown:-1(1x) canceled(14x) successful_finish(24x) anr(1x) Line 439989: 15 starts, 6 anrs Line 441158: Job Completions in.mohalla.sharechat/androidx.work.impl.background.systemjob.SystemJobService: canceled(5x) successful_finish(6x) anr(9x) Line 441159: Job Completions in.mohalla.sharechat/com.google.android.datatransport.runtime.scheduling.jobscheduling.JobInfoSchedulerService: successful_finish(3x) anr(6x) Line 473593: backstage_power/android.app.gate_fgs_timeout_anr_behavior=false Line 475571: system_performance/com.android.server.utils.anr_timer_freezer=false Line 475572: system_performance/com.android.server.utils.anr_timer_service=false Line 476935: 2025-06-17 11:36:45 system_app_anr (compressed text, 232873 bytes) Line 476936: 2025-06-17 11:37:09 system_app_anr (compressed text, 201571 bytes) Line 476937: 2025-06-17 11:40:22 system_app_anr (compressed text, 222123 bytes) Line 476938: 2025-06-17 11:41:13 system_app_anr (compressed text, 185557 bytes) Line 476939: 2025-06-17 11:41:38 system_app_anr (compressed text, 241609 bytes) Line 476940: 2025-06-17 11:42:13 system_app_anr (compressed text, 248915 bytes) Line 476941: 2025-06-17 11:54:53 system_app_anr (compressed text, 167694 bytes) Line 476942: 2025-06-17 11:55:43 system_app_anr (compressed text, 190039 bytes) Line 476943: 2025-06-17 11:58:39 system_app_anr (compressed text, 245539 bytes) Line 476944: 2025-06-17 12:17:04 system_app_anr (compressed text, 214445 bytes) Line 476945: 2025-06-17 12:22:01 system_app_anr (compressed text, 241492 bytes) Line 476947: 2025-06-18 11:52:20 system_app_anr (compressed text, 260400 bytes) Line 476948: 2025-06-18 11:54:13 system_app_anr (compressed text, 196046 bytes) Line 476949: 2025-06-18 11:57:01 system_app_anr (compressed text, 245540 bytes) Line 476950: 2025-06-18 11:58:36 system_app_anr (compressed text, 256724 bytes) Line 476951: 2025-06-18 11:58:53 system_app_anr (compressed text, 83697 bytes) Line 476952: 2025-06-18 11:59:29 system_app_anr (compressed text, 255379 bytes) Line 476953: 2025-06-18 12:00:19 system_app_anr (compressed text, 248849 bytes) Line 476959: 2025-06-19 11:13:43 system_app_anr (compressed text, 238808 bytes) Line 476960: 2025-06-19 11:15:08 system_app_anr (compressed text, 236177 bytes) Line 476961: 2025-06-19 11:15:37 system_app_anr (compressed text, 220894 bytes) Line 476962: 2025-06-19 11:18:08 system_app_anr (compressed text, 223886 bytes) Line 476963: 2025-06-19 11:18:36 system_app_anr (compressed text, 218263 bytes) Line 476964: 2025-06-19 11:19:19 system_app_anr (compressed text, 236600 bytes) Line 483662: es_u_anr_count=3 Line 483663: es_u_anr_window_ms=21600000 Line 483780: <0>com.google.android.youtube::anr: Line 483792: <0>in.mohalla.sharechat::anr: Line 483836: <0>com.google.android.apps.subscriptions.red::anr: Line 483844: <0>com.google.android.youtube::anr: Line 483852: <0>com.google.android.googlequicksearchbox::anr: Line 483858: <0>com.android.providers.calendar::anr: Line 483868: <0>com.android.providers.downloads::anr: Line 483876: <0>com.google.android.apps.messaging::anr: Line 483884: <0>com.oplus.sau::anr: Line 483892: <0>com.heytap.market::anr: Line 483900: <0>com.google.android.configupdater::anr: Line 483908: <0>com.google.android.providers.media.module::anr: Line 483916: <0>com.google.android.apps.safetyhub::anr: Line 483924: <0>in.mohalla.sharechat::anr: Line 483932: <0>com.android.vending::anr: Line 483942: <0>com.google.android.adservices.api::anr: Line 483950: <0>android::anr: Line 483958: <0>com.android.launcher3::anr: Line 483966: <0>com.instagram.android::anr: Line 483974: <0>com.google.android.deskclock::anr: Line 483982: <0>com.google.android.as::anr: Line 483990: <0>com.google.android.gm::anr: Line 484000: <0>com.google.android.apps.tachyon::anr: Line 484008: <0>com.google.android.permissioncontroller::anr: Line 484014: <0>com.google.android.setupwizard::anr: Line 484022: <0>com.android.providers.settings::anr: Line 484030: <0>com.facebook.services::anr: Line 484038: <0>com.google.android.as.oss::anr: Line 484046: <0>com.google.android.apps.wellbeing::anr: Line 484054: <0>com.google.android.dialer::anr: Line 484062: <0>com.google.android.apps.nbu.files::anr: Line 484070: <0>com.google.android.apps.docs::anr: Line 484078: <0>com.google.android.apps.maps::anr: Line 484086: <0>com.google.android.webview::anr: Line 484094: <0>com.coloros.weather2::anr: Line 484102: <0>com.google.android.networkstack::anr: Line 484110: <0>com.google.android.rkpdapp::anr: Line 484118: <0>com.google.android.contacts::anr: Line 484126: <0>com.android.chrome::anr: Line 484134: <0>com.nearme.gamecenter::anr: Line 484142: <0>com.nearme.statistics.rom::anr: Line 484150: <0>com.google.android.gms::anr: Line 484158: <0>com.google.android.tts::anr: Line 484166: <0>com.google.android.apps.walletnfcrel::anr: Line 484174: <0>com.google.android.partnersetup::anr: Line 484182: <0>com.google.android.videos::anr: Line 484190: <0>com.coloros.lockassistant::anr: Line 484200: <0>com.google.android.apps.photos::anr: Line 484208: <0>com.google.android.calendar::anr: Line 484218: <0>com.facebook.katana::anr: Line 484226: <0>com.coloros.phonemanager::anr: Line 484234: <0>com.android.imsserviceentitlement::anr: Line 484242: <0>com.android.settings::anr: Line 484250: <0>com.fitbit.FitbitMobile::anr: Line 484258: <0>com.grofers.customerapp::anr: Line 484266: <0>com.myntra.android::anr: Line 484274: <0>com.google.android.apps.turbo::anr: Line 484282: <0>com.oplus.lfeh::anr: Line 484288: <0>com.google.android.apps.carrier.carrierwifi::anr: Line 484298: <0>com.oppo.quicksearchbox::anr: Line 484306: <0>com.google.android.apps.youtube.music::anr: Line 484314: <0>com.facebook.appmanager::anr: Line 484322: <0>com.coloros.gallery3d::anr: Line 484330: <0>com.snapchat.android::anr: Line 484340: <0>com.google.android.inputmethod.latin::anr: Line 484348: <0>com.glance.internet::anr: Line 484354: <0>com.google.android.apps.restore::anr: Line 484363: Category{anr}: 3 events in +6h0m0s0ms Line 506990: 4x unknown:-1, 38x canceled, 82x successful_finish, 1x anr Line 544392: com.unisoc.traceur.anrstartdumpperfetto: Line 546673: com.unisoc.traceur.anrsavedumpperfetto: Line 708996: _id:585 name:anr_show_background pkg:com.android.settings value:0 default:0 defaultSystemSet:true Line 709073: _id:275 name:dropbox:data_app_anr pkg:com.google.android.gms value:disabled Line 709643: setting: anr_show_background generation:2
07-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值