前提: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=amd64https://www.ubuntu.com/download/alternative-downloads
> 注意:
分出独立的一个盘(G)给VM下的Linux,至少给个20G(如果整体硬盘1T的存储大的话,可以给个40G)。
> WIndows下安装VM
win7安装virtualbox遇到的问题- http://blog.csdn.net/cuidiwhere/article/details/41893733
默认情况下,VirtualBox为虚拟网卡提供了四种网络环境:Network AddressTranslation(NAT)、Bridged networking、Internal networking和Host-only networking。
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.htmlVM虚拟机中安装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 桌面;
在VMware菜单栏上选择虚拟机->设置->CD/DVD(SATA),更改连接里ISO文件的路径,修改为VMware的安装路径下的一个名称为linux.iso的文件,我的路径是“C:\Program Files (x86)\VMware\VMware Workstation”:
在VMware菜单栏上选择 虚拟机->安装 VMware Tools,点击ubuntu左侧列表里的DVD图标,就会出现VMware Tools的安装文件VMwareTools-10.1.6-5214329.tar.gz
若没有VMwareTools,则重启Linux,reboot
解压文件命令:tar -xzvf VMwareTools-10.0.6-3595377.tar.gz
出现错误Unable to locate package net-tools,VMware DHCP Service和VMware NAT Service开启,连接上网络后:
sudo apt-get update
apt install net-tools
./vmware-install.pl
( 6.ifconfig程序未安装
安装ifconfig命令:apt install net-tools //ifconfig在net-tools工具集中)
运行命令:./vmware-install.pl (一直按回车或yes)
8. 到最后提示成功,reboot就可以了。
> VM Linux 设置jdk/ndk/sdk的路径
jdk_ndk_sdk当前的路径:/home/deng/文档/android_jdk_ndk_sdk
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。
接着输入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的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命令。