国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

android cocoscreator 檢測(cè)模擬器還是真機(jī)

這篇具有很好參考價(jià)值的文章主要介紹了android cocoscreator 檢測(cè)模擬器還是真機(jī)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

轉(zhuǎn)載至?一行代碼幫你檢測(cè)Android模擬器? ?

具體原理看原博主文章,這里只講cocoscreator3.6的安卓工程怎么使用

1.新建一個(gè)com.lahm.library包,和com.cocos.game同目錄,如圖示

android cocoscreator 檢測(cè)模擬器還是真機(jī),android,cocoscreator

那四個(gè)文件的代碼如下:

EmulatorCheckUtil類,檢測(cè)模擬器和真機(jī)的工具類,是入口:

package com.lahm.library;

import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.text.TextUtils;
import android.util.Log;

import com.facebook.internal.LockOnGetVariable;

import static android.content.Context.SENSOR_SERVICE;
import static com.lahm.library.CheckResult.RESULT_EMULATOR;
import static com.lahm.library.CheckResult.RESULT_MAYBE_EMULATOR;
import static com.lahm.library.CheckResult.RESULT_UNKNOWN;

/**
 * Project Name:檢查是否是模擬器
 * Package Name:com.lahm.library
 * Created by lahm on 2018/6/8 15:01 .
 */
public class EmulatorCheckUtil {
    private static String TAG = "EmulatorCheckUtil:";
    private EmulatorCheckUtil() {

    }

    private static class SingletonHolder {
        private static final EmulatorCheckUtil INSTANCE = new EmulatorCheckUtil();
    }

    public static final EmulatorCheckUtil getSingleInstance() {
        return SingletonHolder.INSTANCE;
    }

    public boolean readSysProperty(Context context, EmulatorCheckCallback callback) {
        if (context == null)
            throw new IllegalArgumentException("context must not be null");

        int suspectCount = 0;

        //檢測(cè)硬件名稱
        CheckResult hardwareResult = checkFeaturesByHardware();
        switch (hardwareResult.result) {
            case RESULT_MAYBE_EMULATOR:
                ++suspectCount;
                break;
            case RESULT_EMULATOR:
                if (callback != null) callback.findEmulator("hardware = " + hardwareResult.value);
                return true;
        }

        //檢測(cè)渠道
        CheckResult flavorResult = checkFeaturesByFlavor();
        switch (flavorResult.result) {
            case RESULT_MAYBE_EMULATOR:
                ++suspectCount;
                break;
            case RESULT_EMULATOR:
                if (callback != null) callback.findEmulator("flavor = " + flavorResult.value);
                return true;
        }

        //檢測(cè)設(shè)備型號(hào)
        CheckResult modelResult = checkFeaturesByModel();
        switch (modelResult.result) {
            case RESULT_MAYBE_EMULATOR:
                ++suspectCount;
                break;
            case RESULT_EMULATOR:
                if (callback != null) callback.findEmulator("model = " + modelResult.value);
                return true;
        }

        //檢測(cè)硬件制造商
        CheckResult manufacturerResult = checkFeaturesByManufacturer();
        switch (manufacturerResult.result) {
            case RESULT_MAYBE_EMULATOR:
                ++suspectCount;
                break;
            case RESULT_EMULATOR:
                if (callback != null)
                    callback.findEmulator("manufacturer = " + manufacturerResult.value);
                return true;
        }

        //檢測(cè)主板名稱
        CheckResult boardResult = checkFeaturesByBoard();
        switch (boardResult.result) {
            case RESULT_MAYBE_EMULATOR:
                ++suspectCount;
                break;
            case RESULT_EMULATOR:
                if (callback != null) callback.findEmulator("board = " + boardResult.value);
                return true;
        }

        //檢測(cè)主板平臺(tái)
        CheckResult platformResult = checkFeaturesByPlatform();
        switch (platformResult.result) {
            case RESULT_MAYBE_EMULATOR:
                ++suspectCount;
                break;
            case RESULT_EMULATOR:
                if (callback != null) callback.findEmulator("platform = " + platformResult.value);
                return true;
        }

        //檢測(cè)基帶信息
        CheckResult baseBandResult = checkFeaturesByBaseBand();
        switch (baseBandResult.result) {
            case RESULT_MAYBE_EMULATOR:
                suspectCount += 2;//模擬器基帶信息為null的情況概率相當(dāng)大
                break;
            case RESULT_EMULATOR:
                if (callback != null) callback.findEmulator("baseBand = " + baseBandResult.value);
                return true;
        }

        //檢測(cè)傳感器數(shù)量
        int sensorNumber = getSensorNumber(context);
        if (sensorNumber <= 7) ++suspectCount;

        //檢測(cè)已安裝第三方應(yīng)用數(shù)量
        int userAppNumber = getUserAppNumber();
        if (userAppNumber <= 5) ++suspectCount;

        //檢測(cè)是否支持閃光燈
        boolean supportCameraFlash = supportCameraFlash(context);
        if (!supportCameraFlash) ++suspectCount;
        //檢測(cè)是否支持相機(jī)
        boolean supportCamera = supportCamera(context);
        if (!supportCamera) ++suspectCount;
        //檢測(cè)是否支持藍(lán)牙
        boolean supportBluetooth = supportBluetooth(context);
        if (!supportBluetooth) ++suspectCount;

        //檢測(cè)光線傳感器
        boolean hasLightSensor = hasLightSensor(context);
        if (!hasLightSensor) ++suspectCount;

        //檢測(cè)進(jìn)程組信息
        CheckResult cgroupResult = checkFeaturesByCgroup();
        if (cgroupResult.result == RESULT_MAYBE_EMULATOR) ++suspectCount;

        if (callback != null) {
            StringBuffer stringBuffer = new StringBuffer("Test start")
                    .append("\r\n").append("hardware = ").append(hardwareResult.value)
                    .append("\r\n").append("flavor = ").append(flavorResult.value)
                    .append("\r\n").append("model = ").append(modelResult.value)
                    .append("\r\n").append("manufacturer = ").append(manufacturerResult.value)
                    .append("\r\n").append("board = ").append(boardResult.value)
                    .append("\r\n").append("platform = ").append(platformResult.value)
                    .append("\r\n").append("baseBand = ").append(baseBandResult.value)
                    .append("\r\n").append("sensorNumber = ").append(sensorNumber)
                    .append("\r\n").append("userAppNumber = ").append(userAppNumber)
                    .append("\r\n").append("supportCamera = ").append(supportCamera)
                    .append("\r\n").append("supportCameraFlash = ").append(supportCameraFlash)
                    .append("\r\n").append("supportBluetooth = ").append(supportBluetooth)
                    .append("\r\n").append("hasLightSensor = ").append(hasLightSensor)
                    .append("\r\n").append("cgroupResult = ").append(cgroupResult.value)
                    .append("\r\n").append("suspectCount = ").append(suspectCount);
            callback.findEmulator(stringBuffer.toString());
        }
        Log.i(TAG, "EmulatorCheck suspectCount:" + suspectCount);
        //嫌疑值大于3,認(rèn)為是模擬器
        return suspectCount >= 3;
    }

    private int getUserAppNum(String userApps) {
        if (TextUtils.isEmpty(userApps)) return 0;
        String[] result = userApps.split("package:");
        return result.length;
    }

    private String getProperty(String propName) {
        String property = CommandUtil.getSingleInstance().getProperty(propName);
        return TextUtils.isEmpty(property) ? null : property;
    }

    /**
     * 特征參數(shù)-硬件名稱
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByHardware() {
        String hardware = getProperty("ro.hardware");
        if (null == hardware) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        String tempValue = hardware.toLowerCase();
        switch (tempValue) {
            case "ttvm"://天天模擬器
            case "nox"://夜神模擬器
            case "cancro"://網(wǎng)易MUMU模擬器
            case "intel"://逍遙模擬器
            case "vbox":
            case "vbox86"://騰訊手游助手
            case "android_x86"://雷電模擬器
                result = RESULT_EMULATOR;
                break;
            default:
                result = RESULT_UNKNOWN;
                break;
        }
        return new CheckResult(result, hardware);
    }

    /**
     * 特征參數(shù)-渠道
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByFlavor() {
        String flavor = getProperty("ro.build.flavor");
        if (null == flavor) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        String tempValue = flavor.toLowerCase();
        if (tempValue.contains("vbox")) result = RESULT_EMULATOR;
        else if (tempValue.contains("sdk_gphone")) result = RESULT_EMULATOR;
        else result = RESULT_UNKNOWN;
        return new CheckResult(result, flavor);
    }

    /**
     * 特征參數(shù)-設(shè)備型號(hào)
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByModel() {
        String model = getProperty("ro.product.model");
        if (null == model) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        String tempValue = model.toLowerCase();
        if (tempValue.contains("google_sdk")) result = RESULT_EMULATOR;
        else if (tempValue.contains("emulator")) result = RESULT_EMULATOR;
        else if (tempValue.contains("android sdk built for x86")) result = RESULT_EMULATOR;
        else result = RESULT_UNKNOWN;
        return new CheckResult(result, model);
    }

    /**
     * 特征參數(shù)-硬件制造商
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByManufacturer() {
        String manufacturer = getProperty("ro.product.manufacturer");
        if (null == manufacturer) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        String tempValue = manufacturer.toLowerCase();
        if (tempValue.contains("genymotion")) result = RESULT_EMULATOR;
        else if (tempValue.contains("netease")) result = RESULT_EMULATOR;//網(wǎng)易MUMU模擬器
        else result = RESULT_UNKNOWN;
        return new CheckResult(result, manufacturer);
    }

    /**
     * 特征參數(shù)-主板名稱
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByBoard() {
        String board = getProperty("ro.product.board");
        if (null == board) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        String tempValue = board.toLowerCase();
        if (tempValue.contains("android")) result = RESULT_EMULATOR;
        else if (tempValue.contains("goldfish")) result = RESULT_EMULATOR;
        else result = RESULT_UNKNOWN;
        return new CheckResult(result, board);
    }

    /**
     * 特征參數(shù)-主板平臺(tái)
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByPlatform() {
        String platform = getProperty("ro.board.platform");
        if (null == platform) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        String tempValue = platform.toLowerCase();
        if (tempValue.contains("android")) result = RESULT_EMULATOR;
        else result = RESULT_UNKNOWN;
        return new CheckResult(result, platform);
    }

    /**
     * 特征參數(shù)-基帶信息
     *
     * @return 0表示可能是模擬器,1表示模擬器,2表示可能是真機(jī)
     */
    private CheckResult checkFeaturesByBaseBand() {
        String baseBandVersion = getProperty("gsm.version.baseband");
        if (null == baseBandVersion) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        int result;
        if (baseBandVersion.contains("1.0.0.0")) result = RESULT_EMULATOR;
        else result = RESULT_UNKNOWN;
        return new CheckResult(result, baseBandVersion);
    }

    /**
     * 獲取傳感器數(shù)量
     */
    private int getSensorNumber(Context context) {
        SensorManager sm = (SensorManager) context.getSystemService(SENSOR_SERVICE);
        return sm.getSensorList(Sensor.TYPE_ALL).size();
    }

    /**
     * 獲取已安裝第三方應(yīng)用數(shù)量
     */
    private int getUserAppNumber() {
        String userApps = CommandUtil.getSingleInstance().exec("pm list package -3");
        return getUserAppNum(userApps);
    }

    /**
     * 是否支持相機(jī)
     */
    private boolean supportCamera(Context context) {
        return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
    }

    /**
     * 是否支持閃光燈
     */
    private boolean supportCameraFlash(Context context) {
        return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
    }

    /**
     * 是否支持藍(lán)牙
     */
    private boolean supportBluetooth(Context context) {
        return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
    }

    /**
     * 判斷是否存在光傳感器來(lái)判斷是否為模擬器
     * 部分真機(jī)也不存在溫度和壓力傳感器。其余傳感器模擬器也存在。
     *
     * @return false為模擬器
     */
    private boolean hasLightSensor(Context context) {
        SensorManager sensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE);
        Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //光線傳感器
        if (null == sensor) return false;
        else return true;
    }

    /**
     * 特征參數(shù)-進(jìn)程組信息
     */
    private CheckResult checkFeaturesByCgroup() {
        String filter = CommandUtil.getSingleInstance().exec("cat /proc/self/cgroup");
        if (null == filter) return new CheckResult(RESULT_MAYBE_EMULATOR, null);
        return new CheckResult(RESULT_UNKNOWN, filter);
    }
}

?關(guān)鍵是 readSysProperty這個(gè)方法,返回false就不是模擬器是真機(jī),true是模擬器

此包內(nèi)的四個(gè)文件如下:
CheckResult.java
?

package com.lahm.library;

public class CheckResult {
    public static final int RESULT_MAYBE_EMULATOR = 0;//可能是模擬器
    public static final int RESULT_EMULATOR = 1;//模擬器
    public static final int RESULT_UNKNOWN = 2;//可能是真機(jī)

    public int result;
    public String value;

    public CheckResult(int result, String value) {
        this.result = result;
        this.value = value;
    }
}
CommandUtil.java

package com.lahm.library;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;

/**
 * Project Name:EasyProtector
 * Package Name:com.lahm.library
 * Created by lahm on 2018/6/8 16:23 .
 */
public class CommandUtil {
    private CommandUtil() {
    }

    private static class SingletonHolder {
        private static final CommandUtil INSTANCE = new CommandUtil();
    }

    public static final CommandUtil getSingleInstance() {
        return SingletonHolder.INSTANCE;
    }

    public String getProperty(String propName) {
        String value = null;
        Object roSecureObj;
        try {
            roSecureObj = Class.forName("android.os.SystemProperties")
                    .getMethod("get", String.class)
                    .invoke(null, propName);
            if (roSecureObj != null) value = (String) roSecureObj;
        } catch (Exception e) {
            value = null;
        } finally {
            return value;
        }
    }

    public String exec(String command) {
        BufferedOutputStream bufferedOutputStream = null;
        BufferedInputStream bufferedInputStream = null;
        Process process = null;
        try {
            process = Runtime.getRuntime().exec("sh");
            bufferedOutputStream = new BufferedOutputStream(process.getOutputStream());

            bufferedInputStream = new BufferedInputStream(process.getInputStream());
            bufferedOutputStream.write(command.getBytes());
            bufferedOutputStream.write('\n');
            bufferedOutputStream.flush();
            bufferedOutputStream.close();

            process.waitFor();

            String outputStr = getStrFromBufferInputSteam(bufferedInputStream);
            return outputStr;
        } catch (Exception e) {
            return null;
        } finally {
            if (bufferedOutputStream != null) {
                try {
                    bufferedOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bufferedInputStream != null) {
                try {
                    bufferedInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (process != null) {
                process.destroy();
            }
        }
    }

    private static String getStrFromBufferInputSteam(BufferedInputStream bufferedInputStream) {
        if (null == bufferedInputStream) {
            return "";
        }
        int BUFFER_SIZE = 512;
        byte[] buffer = new byte[BUFFER_SIZE];
        StringBuilder result = new StringBuilder();
        try {
            while (true) {
                int read = bufferedInputStream.read(buffer);
                if (read > 0) {
                    result.append(new String(buffer, 0, read));
                }
                if (read < BUFFER_SIZE) {
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }
}
EmulatorCheckCallback接口

package com.lahm.library;

/**
 * Project Name:EasyProtector
 * Package Name:com.lahm.library
 * Created by lahm on 2018/7/25 15:19 .
 */
public interface EmulatorCheckCallback {
    void findEmulator(String emulatorInfo);
}

在cocos.game.AppActivity這個(gè)類里,先聲明一個(gè)靜態(tài)變量:
public static boolean isEnumator = false;

在onCreate(Bundle savedInstanceState)方法里這樣調(diào)用:
this.isEnumator = EmulatorCheckUtil.getSingleInstance().readSysProperty(this, null);
這樣就能檢測(cè)出模擬器還是真機(jī)了,為true就是模擬器,false為真機(jī)。

再寫個(gè)方法給typescript層調(diào)用:

public static boolean isRunningOnEmulator() {
        return isEnumator;
    }

typescript層這樣調(diào)用即可:
?

getEmulator() { //檢查是否是模擬器
        if(native.reflection) {
            global.bEmulator =  native.reflection.callStaticMethod("com/cocos/game/AppActivity", "isRunningOnEmulator","()Z");
        }
        else
            global.bEmulator = false;
    }

大功告成,實(shí)測(cè)夜神模擬器,藍(lán)疊模擬器能檢測(cè)出來(lái)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-662799.html

到了這里,關(guān)于android cocoscreator 檢測(cè)模擬器還是真機(jī)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android 模擬器檢測(cè)

    Android 模擬器檢測(cè)

    最近看到某客戶端有一個(gè)檢測(cè)模擬器的方法,我正常手機(jī)結(jié)果被判斷是模擬器了,很好奇,于是找了一下原因。 這個(gè)代碼檢測(cè)模擬器有兩個(gè)問(wèn)題: 1、撥號(hào)檢測(cè),Android10.0及以上均為false 2、Build.SERIAL,Android8.0以上均為unknown 這導(dǎo)致8.0以上系統(tǒng)均會(huì)被誤判 設(shè)備信息檢測(cè)代碼:

    2024年02月03日
    瀏覽(25)
  • adb-連接模擬器和真機(jī)操作

    adb-連接模擬器和真機(jī)操作

    目錄 1. 連接模擬器(夜神模擬器示例) 1.1 啟動(dòng)并連接模擬器 1.2 開(kāi)啟調(diào)試模式 2. USB連接真機(jī)調(diào)試 2.1 usb數(shù)據(jù)線連接好電腦,手機(jī)打開(kāi)調(diào)試模式 2.2 輸入adb devices檢測(cè)手機(jī) 3. Wifi連接真機(jī)調(diào)試 3.1 USB連接手機(jī)和電腦 3.2 運(yùn)行 adb devices,測(cè)試是否連接成功,能出現(xiàn)設(shè)備列表即可 3.

    2024年02月22日
    瀏覽(35)
  • Uniapp 運(yùn)行到 iOS 真機(jī)或模擬器

    Uniapp 運(yùn)行到 iOS 真機(jī)或模擬器

    手機(jī)連接到電腦,找到 HBuilderX 菜單欄中的 運(yùn)行 : 打開(kāi)后,兩種運(yùn)行方式都需要證書(shū)進(jìn)行云打包安裝,證書(shū)細(xì)節(jié)注意下: 復(fù)制一下上面的 iPhone UDID ,如果沒(méi)有顯示 UDID ,可以通過(guò) 蒲公英、 愛(ài)思助手 、 Xcode 都可以看到。 復(fù)制的這個(gè)設(shè)備 UDID 需要到 Apple 開(kāi)發(fā)者中心,設(shè)備管

    2024年02月20日
    瀏覽(20)
  • 【Unity】使用ADB連接真機(jī)、模擬器測(cè)試

    【Unity】使用ADB連接真機(jī)、模擬器測(cè)試

    ①連接安卓手機(jī),需要開(kāi)啟開(kāi)發(fā)者模式, 不同的手機(jī)開(kāi)啟方式有所不同,比如華為的手機(jī)需要在:設(shè)置-關(guān)于手機(jī)-版本號(hào),連續(xù)點(diǎn)擊7次版本號(hào) ②打開(kāi)USB調(diào)試 ③同意調(diào)試,出現(xiàn)如下界面,點(diǎn)擊同意即可鏈接成功 cmd框輸入:adb connect 127.0.0.1:5555 不同模擬器的端口不一樣 夜神模

    2024年04月15日
    瀏覽(25)
  • Android:【1】一文教你使用Camille+夜神模擬器實(shí)現(xiàn)安卓應(yīng)用隱私合規(guī)輔助檢測(cè)

    Android:【1】一文教你使用Camille+夜神模擬器實(shí)現(xiàn)安卓應(yīng)用隱私合規(guī)輔助檢測(cè)

    碎碎念: 不好意思最近課業(yè)上比較繁忙,一直忙于一些測(cè)試,沒(méi)有按時(shí)來(lái)填坑。今天帶來(lái)的是基于課程項(xiàng)目要求,需要完成的安卓應(yīng)用行為檢測(cè)Demo。 因?yàn)榄h(huán)境的配置花費(fèi)了一些時(shí)間,做一個(gè)簡(jiǎn)單的記錄,方便后續(xù)進(jìn)行優(yōu)化。 目錄 1 工具的介紹和準(zhǔn)備 1.1 Camille 1.2 夜神模擬器

    2024年02月01日
    瀏覽(44)
  • [游戲開(kāi)發(fā)][Unity] 打包Xcode工程模擬器+真機(jī)調(diào)試

    [游戲開(kāi)發(fā)][Unity] 打包Xcode工程模擬器+真機(jī)調(diào)試

    Xcode版本:Xcode14 蘋果開(kāi)發(fā)者賬號(hào)、相關(guān)設(shè)備cer證書(shū)、開(kāi)發(fā)者證書(shū)、發(fā)布證書(shū) 賬號(hào)分三類,個(gè)人,公司,企業(yè),價(jià)格99/99/299美金 新注冊(cè)賬號(hào)的基本設(shè)置按網(wǎng)上的教程來(lái)就行 我們公司是企業(yè)賬號(hào),我的蘋果開(kāi)發(fā)者賬號(hào)是公司一個(gè)User,這個(gè)和個(gè)人開(kāi)發(fā)者不同。 賬號(hào)還是非常重要

    2024年02月15日
    瀏覽(27)
  • 創(chuàng)建并啟動(dòng)華為HarmonyOS本地與遠(yuǎn)程模擬器及遠(yuǎn)程真機(jī)

    創(chuàng)建并啟動(dòng)華為HarmonyOS本地與遠(yuǎn)程模擬器及遠(yuǎn)程真機(jī)

    1.打開(kāi)設(shè)備管理器? 2.選擇要添加的手機(jī)設(shè)備,然后點(diǎn)擊安裝 3.正在下載華為手機(jī)模擬器 ?4.下載完成 5.創(chuàng)建新模擬器 ? 下載系統(tǒng)鏡像 ?點(diǎn)擊下一步,創(chuàng)建模擬器 創(chuàng)建成功 啟動(dòng)模擬器 ?華為模擬器啟動(dòng)成功 6.登陸華為賬號(hào)并使用遠(yuǎn)程模擬器 ? 7.使用遠(yuǎn)程真機(jī) ?

    2024年02月08日
    瀏覽(27)
  • flutter版本升級(jí)后,解決真機(jī)和模擬器運(yùn)行錯(cuò)誤問(wèn)題

    flutter版本升級(jí)后,解決真機(jī)和模擬器運(yùn)行錯(cuò)誤問(wèn)題

    flutter從3.3.2升級(jí)到3.16.0,項(xiàng)目運(yùn)行到真機(jī)和模擬器報(bào)同樣的錯(cuò),錯(cuò)誤如下: 解決辦法:在android目錄下的build.gradle加入下面這行,如下圖: 重新運(yùn)行,正常把a(bǔ)pk安裝到真機(jī)上或者運(yùn)行到模擬器上

    2024年01月22日
    瀏覽(27)
  • python+Appium實(shí)現(xiàn)手機(jī)移動(dòng)端自動(dòng)化 - 模擬器  或  真機(jī)【有線】

    python+Appium實(shí)現(xiàn)手機(jī)移動(dòng)端自動(dòng)化 - 模擬器 或 真機(jī)【有線】

    有線連接真機(jī),實(shí)現(xiàn)真機(jī)自動(dòng)化?實(shí)現(xiàn)模擬器自動(dòng)化?在這里,都能滿足你的需求! 什么都不說(shuō)了,直接上干貨吧,親測(cè)可用哦?? 首先,先介紹下所需的環(huán)境,如下: JDK1.8 Appium Python3.x Android-sdk 夜深模擬器/mumu模擬器(PS: 自動(dòng)化真機(jī)時(shí)可以選擇不安裝) 1)下載 方式1:官

    2024年02月16日
    瀏覽(20)
  • adb連接安卓模擬器或真機(jī)hook參數(shù)加密詳細(xì)過(guò)程(frida)

    adb連接安卓模擬器或真機(jī)hook參數(shù)加密詳細(xì)過(guò)程(frida)

    app逆向時(shí),參數(shù)與函數(shù)的確定很關(guān)鍵,找到可疑的函數(shù),不確定是否由該函數(shù)生成,該怎么解決?hook就應(yīng)允而生了,首先是要求本地電腦和安卓模擬器(網(wǎng)易mumu模擬器支持多系統(tǒng),該模擬器作為主流)或真機(jī)的連接,無(wú)論是網(wǎng)易mumu模擬器還是真機(jī)都要取得超級(jí)權(quán)限(root),

    2024年02月13日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包