tiann / FreeReflection

A library that lets you use reflection without any restriction above Android P
MIT License
2.93k stars 543 forks source link

Can't reflection SSLParametersImpl.class on Android P #12

Closed taojiujiu closed 5 years ago

taojiujiu commented 5 years ago
        SSLSocketFactory defaultSSLSocketFactory  HttpsURLConnection.getDefaultSSLSocketFactory();
        try {
            parameters = (SSLParametersImpl) ReflectionUtil.getFieldFromObject(
                    ReflectionUtil.getFieldFromClass(defaultSSLSocketFactory.getClass(),
                            SSLParametersImpl.class), defaultSSLSocketFactory);
        } catch (Exception e) {
            e.printStackTrace();
        }

That code will throw

java.lang.IllegalAccessError: Illegal class access
canyie commented 5 years ago

You can try use Class.forName(String) ?

tiann commented 5 years ago

跨 dex 内联?你可以对这个方法做 deopt,不过这已经超出本 lib 的范围了。