win7下安装VM虚拟机,VM中安装Linux系统,Linux系统编译Android ijkplayer so

来源:互联网 发布:mac层和物理层 知乎 编辑:程序博客网 时间:2024/06/05 07:17

前提:windows系统无法编译ijkplayer下的so包;尝试Windows下的Linux系统,先装VM虚拟机,再安装Linux系统;


> Ubuntu下载:64bit/32bit

https://www.ubuntu.com/download/desktop/thank-you?country=CN&version=16.04.3&architecture=amd64

https://www.ubuntu.com/download/alternative-downloads


> 注意:

分出独立的一个盘(G)给VM下的Linux,至少给个20G(如果整体硬盘1T的存储大的话,可以给个40G)。


> WIndows下安装VM

win7安装virtualbox遇到的问题- http://blog.csdn.net/cuidiwhere/article/details/41893733

[Linux]三种方案在Windows系统下安装ubuntu双系统- http://blog.csdn.net/pleasecallmewhy/article/details/8783657

1.下载VMware workstation

2.安装VMware workstation(或virtualbox);

3.发现只能安装Linux Ubuntu 32Bit

(4.进入电脑的 BIOS模式下,在Advanced下, cpu startup下Intel VT(虚拟技术) 打开,若想安装Linux Ubuntu 64bit)

VMware workstation12的许可秘钥:5A02H-AU243-TZJ49-GTC7K-3C61N


> VM下安装Ubuntu 17.4
1.添加虚拟机,选择一个单独的盘(30G左右)
2.安装Linux:点击VM中虚拟机选项-设置-CD/DVD-使用ISO映像文件(*/ubuntu-17.04-desktop-amd64.iso)-确定


> Ubuntu 17.4下安装VMwareTools

Ubuntu 17.4下如何安装VMwareTools- http://www.cnblogs.com/RzCong/p/6847902.html
VM虚拟机中安装VMware tools及设置Ubuntu的桌面太小- http://blog.csdn.net/dcrmg/article/details/74090307
1.安装VM workstation,VMWare对流行的Ubuntu支持比较好。
2.虚拟机下安装Ubuntu系统,
3.安装VMware tools,
4.将C:\Program Files (x86)\VMware\VMware Workstation\linux.iso直接把WMwareTools拷贝出来到桌面吧
5.切换到Linux桌面,并解压桌面上的文件
cd /home ;  cd deng ;  cd 桌面;

解压文件命令:tar -xzvf  VMwareTools-10.0.6-3595377.tar.gz

( 6.ifconfig程序未安装
安装ifconfig命令:apt install net-tools  //ifconfig在net-tools工具集中)

7.  cd vmware-tools-distrib   
运行命令:./vmware-install.pl (一直按回车或yes)

8. 到最后提示成功,reboot就可以了。


> VM Linux 设置jdk/ndk/sdk的路径

jdk_ndk_sdk当前的路径:/home/deng/文档/android_jdk_ndk_sdk

Linux/Ubuntu下配置JDK/SDK/NDK环境- http://blog.csdn.net/supluo/article/details/8071666
jdk_ndk_sdk当前的路径:/home/deng/文档/android_jdk_ndk_sdk
 1.sudo gedit /etc/environment
export JAVA_HOME=/home/deng/文档/android_jdk_ndk_sdk/jdk1.8.0_144
export JRE_HOME=/home/deng/文档/android_jdk_ndk_sdk/jdk1.8.0_144/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

 2.sudo sudo gedit /etc/profile
export JAVA_HOME=/home/deng/文档/android_jdk_ndk_sdk/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export ANDROID_NDK=/home/deng/文档/android_jdk_ndk_sdk/android-ndk-r13
export ANDROID_SDK=/home/deng/文档/android_jdk_ndk_sdk/android-sdk-linux
export PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_NDK

 3.输入source /etc/profile使配置文件生效(以防配置环境之后没有更新)
 4.验证环境是否添加成功

 输入命令java -version,如果出现JDK的版本信息,这JDK环境配置成功

NDK出现版本号就是配置成功:ndk-build -version ; 
JDK出现版本号就是配置成功:java -version。

 进入SDK下面的platform-tools文件下,命令cd /home/super_luo/developkit/android-sdk-linux/platform-tools,
接着输入adb,如果出现了一堆信息,则表示成功,只要不是提示的adb:command is not fond就行。
 进入NDK目录下面的samples/hello-jni,执行ndk-build,命令cd /home/super_luo/bin/android-ndk-r8b/samples/hello-jni
再输入ndk-build,如果出现类似以下信息,则表示ndk环境搭配成功。
Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Install        : libhello-jni.so => libs/armeabi/libhello-jni.so


> 下载和编译IJKPlayer,openSSL,ffmpeg
Windows下VM的Linux系统,IJKPlayer编译实践- http://www.jianshu.com/p/7f8ea155a0c8
Windows下VM,在Ubuntu下编译IjkPlayer-android- http://www.jianshu.com/p/f2ae594942d9

 1.在Linux终端,安装git和yasm,在终端中分别键入:输入命令
sudo apt-get install git
sudo apt-get install yasm

 2.clone ijkplayer 代码
sudo git clone https://github.com/Bilibili/ijkplayer ijkplayer

 3.初始化
cd ijkplayer

#下载openSSL
【如果编译带HTTPS的so执行 ./init-android-openssl.sh

#下载FFmpeg
./init-android.sh

 4.配置并编译
cd config
rm module.sh
ln -s module-default.sh module.sh


 5.编译openssl与ffmpeg
cd android/contrib
./compile-openssl.sh clean//清除
./compile-ffmpeg.sh clean//清除
./compile-openssl.sh all//编译
./compile-ffmpeg.sh all//编译


 6.编译ijkPlayer

cd ..
./compile-ijk.sh all


 最后,如果只单独编译某个平台下的SO包

【 ./compile-openssl.sh armv7a
./compile-openssl.sh armv5a
./compile-openssl.sh arm64
./compile-openssl.sh x86
./compile-openssl.sh x86_64 】

【./compile-ffmpeg.sh armv7a
./compile-ffmpeg.sh armv5a
./compile-ffmpeg.sh arm64
./compile-ffmpeg.sh x86
./compile-ffmpeg.sh x86_64】

【./compile-ijkplayer.sh armv7a
./compile-ijkplayer.sh armv5a
./compile-ijkplayer.sh arm64
./compile-ijkplayer.sh x86
./compile-ijkplayer.sh x86_64】

 7. 编译ijkplayer,生成的SO文件在哪
 */ijkplayer/android/ijkplayer/player-armv7a/src/main/libs/armeabi-v7a
ijkmediaplayer/libs/armeabi-v7a/libffmpeg.so

----------------------------------------------

> 问题

1.linux gedit:Set document metadata failed: 不支持设置属性 metadata::gedit-position(待验证)
 解决方法:sudo apt-get install lib32stdc++6(好像不行,明天试下)

2.Linux系统下You must define ANDROID_NDK before starting
 配置的ANDROID_NDK路径不对,需要重新配置


>  vmware下的Linux虚拟系统占硬盘越来越大,瘦身(坑的自己又得重装一次Linux)
vmware的vmdk文件的瘦身- http://xjsunjie.blog.51cto.com/999372/413278
VMWARE 占用硬盘空间只增大不减少的清理办法 - http://blog.chinaunix.net/uid-13875633-id-4599466.html
vmware-vdiskmanager清理虚拟机磁盘,解决虚拟机磁盘只增不减问题-http://www.xuebuyuan.com/525854.html
(推荐)VMware的.vmdk文件只赠不减的处理方法- http://blog.csdn.net/paladinosment/article/details/38499153
  Linux虚拟系统瘦身步骤,打开虚拟机 如果是ubuntu:
  一 、sudo apt-get clean 清除残留的安装包 (可以不执行此步) 
  二 、sudo dd if=/dev/zero of=/0bits bs=20M(将碎片空间填充上0,结束的时候会提示磁盘空间不足,忽略即可)
  三、sudo rm  /0bits(删除第二步的填充,如果用df -h 会发现可用的虚拟空间增加许多,但是实际的磁盘空间没有缩减) 
  四 、这步会真正的缩减 它占用的磁盘空间,首先关闭虚拟机,然后打开cmd ,用cd命令进入到你的vmware安装文件夹,如C:\Program Files\VMware\VMware 然后执行vmware-vdiskmanager -k  (你的虚拟机磁盘名称) 比如 E:\LINUX\Ubuntu12.04\Ubuntu12.04.vmdk,
  cmd终端 cd c ; cd C:\Program Files (x86)\VMware\VMware Workstation
  vmware-vdiskmanager -k "G:\Ubuntu64\Ubuntu 64 位.vmdk"
  说明:H:\UbuntuVMware\Ubuntu 64-bit\Ubuntu 64-bit.vmdk是你指定需要shrink的.vmdk文件;另外,由于我的路径中有空格,所以路径用双引号包含,若路径无空格则可以忽略双引号。


>  虚拟机Ubuntu连不上网

虚拟机Ubuntu 17.4里网络电缆被拔出的解决办法或虚拟机Ubuntu 17.4连不上网解决思路可能是:
PC机的两个服务被关闭了,需要手动开启,VMware DHCP Service和VMware NAT Service需要开启。

> 报编译环境不存在的错误 
过了一段时间没编译ijkplayer,可能会报编译环境不存在,需要重试看一下和走一遍配置环境的流程。
虚拟机Ubuntu 17.4开始已经配置好了NDK SDK环境,好久没使用VM了,出现You must define ANDROID_NDK before starting错误,需要重新配置下环境:
并执行sudo sudo gedit /etc/profile和source /etc/profile命令,然后开始切路径及执行编译IJKPlayer命令。