先看代码:
Class c = Class.forName("android.text.style.ImageSpan");
Field[] declaredFields = c.getDeclaredFields();
Log.i(TAG, "Field: " + declaredFields.length);
安卓7.0 能获取到下面五个:
安卓9.0只能获取到:
查阅文档后发现:
总结:
大清亡了!
先看代码:
Class c = Class.forName("android.text.style.ImageSpan");
Field[] declaredFields = c.getDeclaredFields();
Log.i(TAG, "Field: " + declaredFields.length);安卓7.0 能获取到下面五个:
安卓9.0只能获取到:
查阅文档后发现:
总结:
大清亡了!
转载于:https://www.cnblogs.com/loyal888/p/10887038.html
原来的编译服务器编译7.1和8.1 的都没有问题,下载9.0的代码,编译的时候报错;报错这个提示真是看的我一脸懵逼;
cat /home1/luoyalong/workspace/MT8788-P/mt8788/out/target/product/tb8788p1_64_bsp/obj/BOOTLOADER_OBJ/../../appsboothd.mbn /home1/luoyalong/workspace/MT8788-P/mt8788/out/target/product/tb8788p1_64_bsp/obj/BOOTLOADER_OBJ/build-tb8788p1_64_bsp/lk.img > /home1/luoyalong/workspace/MT8788-P/mt8788/out/target/product/tb8788p1_64_bsp/obj/BOOTLOADER_OBJ/../../appsboot.mbn
rm -f /home1/luoyalong/workspace/MT8788-P/mt8788/out/target/product/tb8788p1_64_bsp/obj/BOOTLOADER_OBJ/../../appsboothd.mbn
make[1]: Leaving directory `/home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/lk'
make: Leaving directory `/home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/lk'
ninja: build stopped: subcommand failed.
13:42:20 ninja failed with: exit status 1[0;31m#### failed to build some targets (28 seconds) ####[00m
猜想应该是JDK版本的问题吧,就安装JDK9,;安装好后还是报同样是错;网上搜了一大堆都方法都没有用;其实问题也很简单,我编译的时候没有打印全部的log,所以编译软件缓存的日志没那么多,error被覆盖掉了,查找的时候找不到;以前都有打印编译log的习惯,后面换公司后就不用了,编译的问题都比较明显;但是这次很早就报error了,但是还是在一直编;也是坑了自己一把。
实际的报错是这个
an't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/../Spreadsheet /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/../ /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771 /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/../common /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/../common/emigen_v1.pm line 1348.
BEGIN failed--compilation aborted at /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/../common/emigen_v1.pm line 1348.
Compilation failed in require at /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/emigen.pl line 104.
BEGIN failed--compilation aborted at /home1/luoyalong/workspace/MT8788-P/mt8788/vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6771/emigen.pl line 104.
make: *** [/home1/luoyalong/workspace/MT8788-P/mt8788/out/target/product/tb8788p1_64_bsp/obj/PRELOADER_OBJ/MTK_Loader_Info.tag] Error 2
解决方法是安装perl的switch库:sudo apt-get install libswitch-perl
一条命令解决
绕了这么多弯路!!!!!!
public String GetDeviceMAC() {String strMacAddr = null;try {// 获得IpD地址InetAddress ip = getLocalInetAddress();byte[] b = NetworkInterface.getByInetAddress(ip).getHardwareAddress();StringBuffer buffer = new StringBuffer();for (int i = 0; i < b.length; i++) {if (i != 0) {buffer.append(':');}String str = Integer.toHexString(b[i] & 0xFF);buffer.append(str.length() == 1 ? 0 + str : str);}strMacAddr = buffer.toString().toUpperCase();} catch (Exception e) {}Log.d("MAC2" , "getCPUSerial the result is = " );return strMacAddr;}private InetAddress getLocalInetAddress() {InetAddress ip = null;try {// 列举Enumeration<NetworkInterface> en_netInterface = NetworkInterface.getNetworkInterfaces();while (en_netInterface.hasMoreElements()) {// 是否还有元素NetworkInterface ni = (NetworkInterface) en_netInterface.nextElement();// 得到下一个元素Enumeration<InetAddress> en_ip = ni.getInetAddresses();// 得到一个ip地址的列举while (en_ip.hasMoreElements()) {ip = en_ip.nextElement();if (!ip.isLoopbackAddress()&& ip.getHostAddress().indexOf(":") == -1)break;elseip = null;}if (ip != null) {break;}}} catch (SocketException e) {e.printStackTrace();}return ip;}private String getLocalIpAddress() {try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress()) {return inetAddress.getHostAddress().toString();}}}} catch (SocketException ex) {ex.printStackTrace();}return null;}转载于:https://www.cnblogs.com/LCLBook/p/11352633.html