系列文章目录
第一章 安卓aosp源码编译环境搭建
第二章 手机硬件参数介绍和校验算法
第三章 修改安卓aosp代码更改硬件参数
第四章 编译定制rom并刷机实现硬改(一)
第五章 编译定制rom并刷机实现硬改(二)
第六章 不root不magisk不xposed lsposed frida原生修改定位
第七章 安卓手机环境检测软件分享
第八章 硬改之设备画像
第九章 修改Art虚拟机对指定app的指定函数进行拦截(一)
第十章 修改Art虚拟机对指定app的指定函数进行拦截(二)
文章目录
- 系列文章目录
- 前言
- 需要修改的文件
- Build.java
- TelephonyManager.java
- Settings.java
- WifiInfo.java
- InterfaceConfiguration.java
- BluetoothAdapter.java
- BluetoothAdapter.java
- 补充
- 视频教程
前言
傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓aosp源码定制自己的系统
需要修改的文件
aosp代码版本:android-8.1.0_r1 OPM1.171019.011
1: frameworks/base/core/java/android/os/Build.java
2: frameworks/base/telephony/java/android/telephony/TelephonyManager.java
3: frameworks/base/core/java/android/provider/Settings.java
4: frameworks/base/wifi/java/android/net/wifi/WifiInfo.java
5: frameworks/base/core/java/android/net/InterfaceConfiguration.java
6: libcore/ojluni/src/main/java/java/net/NetworkInterface.java
7: frameworks/base/core/java/android/bluetooth/BluetoothAdapter.iava
8: build/core/Makefile
9: build/make/tools/buildinfo.sh
//分别修改其中的函数。
Build.java
先看第一个文件,主要是手机品牌型号等。
//gedit frameworks/base/core/java/android/os/Build.java
public static String getSerial() {return new String("填你的值");
}// android.os.Build 所涉及的全部值
private static String getString(String property) {String result = SystemProperties.getlproperty, UNKNOWN);if (property.equals("ro.product.brand") || property.equals("ro.product.manufacturer")) {result = new Strina("填你的值");} else if (property.equals("ro.product.model")) {result = new String("填你的值");} else if (poroperty.equalsl("ro.product name") || property.equals( "ro.product.board") || property.equals("ro,product device")||property.equals( "ro.build.product")){result = new String("填你的值");} else if (property.equals("ro.build.id")) {result = new String("填你的值");} else if (property.equals("ro.build.version.incremental")) {result = new String("填你的值");} else if (propertyequals("ro.serialno")) (result = new String("填你的值");
。。。。。}return result;}
TelephonyManager.java
这个类提供了一系列获取手机与通讯相关的状态和信息的方法,包括手机的信息、手机卡的状态、电信网络的状态等。
//gedit frameworks/base/telephony/java/android/telephony/TelephonyManager.javapublic String getDeviceld() {return new String("填你的值");}public String getDeviceld(int slotlndex) {if (slotlndex == 0) {return new String("填你的值");} else{ return new String("填你的值");}
}public String getlmei(int slotlndex) {if (slotlndex == 0) {return new String("填你的值"); } else {return new String("填你的值");}
}public String getMeid(int slotlndex) {if (slotlndex == 0) {return new String("填你的值");} else {return new String("填你的值");}
}public String getSubscriberld(int subld) {if (subld == 0) {return new String("填你的值");} else {return new String("填你的值");}
}
Settings.java
android id
//gedit frameworks/base/core/java/android/provider/Settings.java
public static String getString(ContentResolver resolver, String name) {String result = getStringForUser(resolver, name, UserHandle.myUserld());if (name.equals("android id")) {result = new String("填你的值");}return result;
}
WifiInfo.java
wifi地址和蓝牙地址
//gedit frameworks/base/wifi/java/android/net/wifi/WifiInfo.java
public String getMacAddress() {this.mMacAddress ="填你的值";return this.mMacAddress;
}
InterfaceConfiguration.java
wifi地址和蓝牙地址
//gedit frameworks/base/core/java/android/net/InterfaceConfiguration.java
public String getHardwareAddress() {return new String("填你的值");
}
public void setHardwareAddress(String hwAddr) {mHwAddr = new String("填你的值");
}
BluetoothAdapter.java
wifi地址和蓝牙地址
//gedit frameworks/base/core/java/android/bluetooth/BluetoothAdapter.java
public String getAddress() {return new String("填你的值");
}
BluetoothAdapter.java
网络接口,字节数组方式返回地址
//gedit libcore/ojluni/src/main/java/java/net/NetworkInterface.java
public byte[] getHardwareAddress() throws SocketExceptionNetworkInterface ni = getByName(name);if (name.equalslgnoreCase("wlan0")){bytell mymac = new byte[6];mymac[0] = 72;mymac[1] = 44;mymac[2] = -96;mymac[3] = 97;mymac[4] = 121;mymac[5] = 35;return mymac;
}if (ni == null) {throw new SocketException("Networklnterface doesn't exist anymore");}return ni.hardwareAddr;
补充
另外,品牌型号除了在Build.java修改外,还需要在下面两个文件中修改。
//gedit build/core/Makefile//gedit build/make/tools/buildinfo.sh
TARGET_BUILD_FLAVOR
TARGET_DEVICE
PRODUCT_NAME
PRODUCT_BRAND
PRODUCT_DEFAULT_LOCALE
PRODUCT_DEFAULT_WIFI_CHANNELS
PRODUCT_MODEL
PRODUCT_MANUFACTURER
当完成以上修改后,再次恭喜你,需要修改的地方已经全部修改好了,下面我们就开始编译生成ROM镜像刷机。