美文网首页
【原创】从命令行创建比亚迪模拟器到使用官方sdk+as的模拟器界

【原创】从命令行创建比亚迪模拟器到使用官方sdk+as的模拟器界

作者: 吉凶以情迁 | 来源:发表于2018-11-08 11:45 被阅读0次

    吐槽

    开发比亚迪车载就必须使用比亚迪的android sdk,导致频繁切换,导致模拟器啥的出现了很多问题。
    于是打算改成官方系统,然后提取出比亚迪android.jar中的sdk api出来,然后还能在自己的sdk模拟器上运行,经过一步一步探索,终于成功了。

    开始撸

    首先去比亚迪官方下载sdk工具包,然后切换到tools目录

    android create avd -n bydavd12345 -c 200M -p d:/avd -k system-images;android-25;default;x86_64
    emulator -avd bydavd12345

    avd.ini.encoding=UTF-8
    path=d:\avd
    target=android-25
    
    image.png

    找到config.ini 修改参数,因为默认创建的分辨率太小了,不是横屏的。

    AvdId=BYD1
    PlayStore.enabled=false
    abi.type=x86_64
    avd.ini.displayname=BYD1
    avd.ini.encoding=UTF-8
    disk.dataPartition.size=800M
    fastboot.forceColdBoot=no
    hw.accelerometer=yes
    hw.arc=false
    hw.audioInput=yes
    hw.battery=yes
    hw.camera.back=virtualscene
    hw.camera.front=emulated
    hw.cpu.arch=x86_64
    hw.cpu.ncore=4
    hw.dPad=no
    hw.device.hash2=MD5:296668016462ad7706360105af76ae00
    hw.device.manufacturer=User
    hw.device.name=BYD1
    hw.gps=yes
    hw.gpu.enabled=yes
    hw.gpu.mode=auto
    hw.initialOrientation=landscape
    hw.keyboard=yes
    hw.lcd.density=320
    hw.lcd.height=1920
    hw.lcd.width=1080
    hw.mainKeys=no
    hw.ramSize=1536
    hw.sdCard=yes
    hw.sensors.orientation=yes
    hw.sensors.proximity=yes
    hw.trackBall=no
    image.sysdir.1=D:\luozheng\MyProject\dingzhi\chezai\doc\byd-auto_sdk_windows\system-images\android-25\x86_64\
    runtime.network.latency=none
    runtime.network.speed=full
    sdcard.size=100M
    showDeviceFrame=no
    skin.dynamic=yes
    skin.name=1920x1080
    skin.path=_no_skin
    skin.path.backup=_no_skin
    tag.display=Default
    tag.id=default
    vm.heapSize=192
    
    

    image.sysdir.1=是关键的地方,这个路径方便以后操作

    android list targets查看支持创建的设备列表 是识别当前目录优先

    emulator -list-avds识别环境变量优先,哪怕到某个固定的sdk下输入此命令。

    
    
    

    得切换到适合的路径里面执行,这里得切换emulator文件所在目录执行才行,光设置环境变量执行是没用的。

    D:\avd>emulator @BYDAVD_LZ
    [4912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ..\emulator\lib64\qt
    
    \lib
    Could not launch 'D:\avd\..\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe': No such file or 
    
    directory
    
    D:\avd>
    

    保持原有sdk不变,在自己的官方模拟器管理器ui界面直接运行

    实现方式是修改config.ini,我发现直接修改里面的路径是不行的。还是只能固定放到这个目录下。

    把比亚迪sdk/system-images/android-25/x86_64文件夹移动到自己的sdk/system-images/android-25/default/x86_64/下,然后复制下面完整的config.ini替换你自己的。

    AvdId=BYD1
    PlayStore.enabled=false
    abi.type=x86_64
    avd.ini.displayname=BYD1
    avd.ini.encoding=UTF-8
    disk.dataPartition.size=800M
    fastboot.forceColdBoot=no
    hw.accelerometer=yes
    hw.arc=false
    hw.audioInput=yes
    hw.battery=yes
    hw.camera.back=virtualscene
    hw.camera.front=emulated
    hw.cpu.arch=x86_64
    hw.cpu.ncore=4
    hw.dPad=no
    hw.device.hash2=MD5:939e2e20a04a4c645e5130616c6ff5b5
    hw.device.manufacturer=Google
    hw.device.name=Nexus 9
    hw.gps=yes
    hw.gpu.enabled=yes
    hw.gpu.mode=auto
    hw.initialOrientation=landscape
    hw.keyboard=yes
    hw.lcd.density=320
    hw.lcd.height=1536
    hw.lcd.width=2048
    hw.mainKeys=no
    hw.ramSize=1536
    hw.sdCard=no
    hw.sensors.orientation=yes
    hw.sensors.proximity=no
    hw.trackBall=no
    #image.sysdir.1=D:\luozheng\MyProject\dingzhi\chezai\doc\byd-auto_sdk_windows\system-images\android-25\x86_64\
    image.sysdir.1=system-images\android-25\default\x86_64\
    runtime.network.latency=none
    runtime.network.speed=full
    sdcard.path=d:\avd\sdcard.img
    sdcard.size=200 MB
    showDeviceFrame=no
    skin.dynamic=yes
    skin.name=1920x1080
    skin.path=_no_skin
    skin.path.backup=_no_skin
    tag.display=
    tag.id=default
    vm.heapSize=192
    
    
    image.png

    路径为什么不能修改,否则无法通过ui界面运行的原因无从得知,但是目前通过界面启动而不是命令行或者批处理启动的话是我探索的最好的方式了

    image.png

    总结

    android list targets 查看支持创建的设备列表 是识别当前目录优先

    emulator -list-avds 识别环境变量优先,哪怕到某个固定的sdk下输入此命令。

    23:23 Emulator: [7912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at C:\Program Files\Android\android-sdk\emulator\lib64\qt\lib
    23:23 Emulator: Could not launch 'C:\Program Files\Android\android-sdk\emulator/qemu/windows-x86_64/qemu-system-i386.exe': No such file or directory
    23:23 Emulator: Process finished with exit code 2


    得切换到适合的路径里面执行,这里得切换emulator文件所在目录执行才行,光设置环境变量执行是没用的。

    D:\avd>emulator @BYDAVD_LZ
    [4912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ..\emulator\lib64\qt\lib
    Could not launch 'D:\avd..\emulator\qemu\windows-x86_64\qemu-system-x86_64.exe': No such file or directory

    D:\avd>

    avd识别的的优先级

    首先是识别ANDROID_AVD_HOME
    如果这个变量没有创建或者这个变量值指定的变量不存在则找ANDROID_SDK_HOME/.android/avd下面找
    如果依然不存在,则从系统用户目录.android/avd目录寻找,
    另外as启动的设备管理器默认也会在系统用户目录创建。

    执行脚本

    echo by qssq666 
    set /p name=请输入模拟器名称:
    echo 在d判创建%name%....
    echo 执行创建
    android create avd -n %name% -c 200M -p d:/avd/%name%.avd -k system-images;android-25;default;x86_64
    echo 查询模拟器列表
    emulator emulator -list-avds
    echo 启动比亚迪模拟器中....
    emulator -avd %name%
    pause
    
    ::Abstracted LCD density: A value used to rou
    ::hw.lcd.density [160]:
    
    ::LCD color depth: Color bit depth of emulate
    ::hw.lcd.depth [16]:
    
    ::LCD pixel height:
    ::hw.lcd.height [640]:
    
    ::LCD pixel width:
    ::hw.lcd.width [320]:
    
    

    一个东西被虐待就了就会产生进化(逆境变异),我就是这样的,我讨厌这种频繁的操作,于是产生了有一步进化,这一步进化可以避免修改sdk导致电脑某些问题不生效或者其它打开项目总是切换sdk提示的问题,这一次进化实现了可以在任何电脑拷贝一个模拟器文件和一个jar sdk几十kb,从之前的几个g瞬间效率提升百倍,呵呵。

    最简单的配置方式

    使用从android sdk提取出来的东西重新整理一个只包含比亚迪的api的jar,然后把比亚迪模拟器镜像替换一下 system-images,替换虽然会影响原来模拟器某个系统版本的测试,但是总的来说,不用切换sdk了,可喜可贺了。

    相关文章

      网友评论

          本文标题:【原创】从命令行创建比亚迪模拟器到使用官方sdk+as的模拟器界

          本文链接:https://www.haomeiwen.com/subject/gtzixqtx.html