(Android)API Guides/Accessing Resources

原文链接:点击打

一旦你创建好了资源文件,即可通过资源ID来引用它们,所有这些IDs都在工程的R类,由aapt工具自动生成。

当你的应用编译时,aapt自动生成R类。它包含所有在res/目录里面的资源文件。每一种资源类型,都有一个R子类。每个该类型的资源都有一个静态整型。这个整型就是资源的ID。

尽管R类保存了所有资源文件的IDs,你也无须到里面查找。一个资源ID通常由以下组成:

  A. 资源类型,每一个资源都被分为一组“类型”,比如,string, drawable, layout. 可以查看这里寻找更多信息。

  B. 资源名字,也是资源文件名,扩展名除外。或者是XML里面android:name属性值,如果资源只是简单的一个值(比如 string)。


有两种方式可以访问资源:

 A. 在code里面:从你的R子类里面获取一个静态整型值。比如:R.string.hello

     string是资源类型,hello是资源名字。有很多APIs可以访问你的资源。

 B. 在XML里面:使用特定的XML语法,它将对应资源ID。比如:@strin /hello

     string是资源类型,hello是名字。你可以使用该语法在XML任何一个地方。


在Code里面访问资源


你可以通过将资源ID作为参数传到方法里面来在code里面使用资源,比如,你可以通过setImageResource():使用res/drawable/myimage.png作为参数来设置一个ImageView

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

你可以使用getResources()来获取一个Resources,实例,使用Resources,中方法获取单独则资源。


语法

在code里面引用资源的语法:

[<package_name>.]R.<resource_type>.<resource_name>

<package_name>:资源存储的包命(当资源是本应用包名时可以省略)。

<resource_type>:R子类里面的资源类型。

<resource_name>:不带扩展名字的文件名,或者是XML元素里面android:name属性值。


用例

可以使用很多方法获取资源ID,也有很多方法可以返回相关的资源。

下面是访问资源一些例子:

// Load a background for the current screen from a drawable resource
getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ;

// Set the Activity title by getting a string from the Resources object, because
//  this method requires a CharSequence rather than a resource ID
getWindow().setTitle(getResources().getText(R.string.main_title));

// Load a custom layout for the current screen
setContentView(R.layout.main_screen);

// Set a slide in animation by getting an Animation from the Resources object
mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
        R.anim.hyperspace_in));

// Set the text on a TextView object using a resource ID
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello_message);


注意:绝对不可以手动修改R类,它是由aapt工具自动生成。任何修改,在下一次编译都会被覆盖。


从XML中访问资源

在xml文件里面你会经常引用一些已经存在的资源,特别是在layout文件里面,你会经常这样做,比如支持一些字符串或者图片的控件。

下面例子中,就是在layout中增加一个Button控件,使用一个string资源来显示Button的文字。

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/submit" />

语法;


@[<package_name>:]<resource_type>/<resource_name>

<pakcage_name>: 资源存储的包名(若是笨包名,则无需携带)。

<resource_type>: R子类的类型名

<resource_name>: 没有扩展名的文件名,或者在XML里面android:name 属性的值。


在XML中,你使用一个资源引用来给一个value赋值,比如你下面一个资源文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

你可以在layout里面使用上面的string和color资源

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />

在本包的资源里面,你可以不必包含包名,但是若引用系统资源,则必须包含系统包名:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@android:color/secondary_text_dark"
    android:text="@string/hello" />

注意:string资源在很多情况下都要使用, 在不同语种问题上面,你可以参照 Providing AlternativeResources来创建改变的资源,参照 Localization.,来设定本地化语言。


你甚至可以在xml文件里面创建别名,比如,你可以创建一个drawable文件,是另一个drawable的别名:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/other_drawable" />


别名主要用来一个资源文件被多个xml使用的情况,具体参见:点击打开链接 


引用类型属性

style 属性主要是指你可以使用当前theme里面的相关属性。语法和上面相似,只是将@变成了?:

?[<package_name>:][<resource_type>/]<resource_name>

比如,下面就是将textcolor设置为theme里面textColorSecondary 属性的颜色值。

<EditText id="text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="?android:textColorSecondary"
    android:text="@string/hello_world" />

由于系统资源知道在该context内该属性资源被使用,因此无需显示的标出类型(全部格式: ?android:attr/textColorSecondary)。


使用平台资源

Android系统提供了大量的系统定义资源,如layout,wiget,sytles,themes等等,为了访问这些资源,请在资源引用前面加上android包名,如下就是一个使用listview的系统layout:

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));




Installing profile for com.example.androidplayer 2025-07-12 15:39:21.907 7435-7465 EGL_emulation com.example.androidplayer I Opening libGLESv1_CM_emulation.so 2025-07-12 15:39:21.917 7435-7465 EGL_emulation com.example.androidplayer I Opening libGLESv2_emulation.so 2025-07-12 15:39:21.958 7435-7465 HWUI com.example.androidplayer W Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... 2025-07-12 15:39:21.960 7435-7465 HWUI com.example.androidplayer W Failed to initialize 101010-2 format, error = EGL_SUCCESS 2025-07-12 15:39:22.441 7435-7435 InsetsController com.example.androidplayer D hide(ime(), fromIme=false) 2025-07-12 15:39:22.441 7435-7435 ImeTracker com.example.androidplayer I com.example.androidplayer:75ca9a60: onCancelled at PHASE_CLIENT_ALREADY_HIDDEN 2025-07-12 15:39:25.120 7435-7435 e.androidplayer com.example.androidplayer W type=1400 audit(0.0:990): avc: granted { execute } for path="/data/data/com.example.androidplayer/code_cache/libjvmtiagent_x86_64.so" dev="dm-55" ino=361499 scontext=u:r:untrusted_app:s0:c221,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c221,c256,c512,c768 tclass=file app=com.example.androidplayer 2025-07-12 15:39:25.133 7435-7435 nativeloader com.example.androidplayer D Load /data/user/0/com.example.androidplayer/code_cache/libjvmtiagent_x86_64.so using class loader ns clns-9 (caller=<unknown>): ok 2025-07-12 15:39:25.136 7435-7435 libc com.example.androidplayer W Access denied finding property "ro.serialno" 2025-07-12 15:39:25.132 7435-7435 e.androidplayer com.example.androidplayer W type=1400 audit(0.0:991): avc: denied { read } for name="u:object_r:serialno_prop:s0" dev="tmpfs" ino=316 scontext=u:r:untrusted_app:s0:c221,c256,c512,c768 tcontext=u:object_r:serialno_prop:s0 tclass=file permissive=0 app=com.example.androidplayer 2025-07-12 15:39:25.403 7435-7435 e.androidplayer com.example.androidplayer W hiddenapi: DexFile /data/data/com.example.androidplayer/code_cache/perfa.jar is in boot class path but is not in a known location 2025-07-12 15:39:25.493 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden field Landroid/os/Debug;->mWaiting:Z (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.493 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden field Landroid/os/Debug;->FRAMEWORK_FEATURES:[Ljava/lang/String; (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.493 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden field Landroid/os/Debug;->debugProperties:Lcom/android/internal/util/TypedProperties; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.497 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.498 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.499 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->countInstancesOfClass(Ljava/lang/Class;Z)J (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.499 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.499 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;Ljava/io/FileDescriptor;)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.501 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/graphics/Bitmap;->dumpAll(Ljava/lang/String;)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.501 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;Ljava/io/FileDescriptor;)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.501 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/graphics/Bitmap;->dumpAll(Ljava/lang/String;)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.502 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/graphics/Bitmap;->dumpAll(Ljava/lang/String;)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.502 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/graphics/Bitmap;->dumpAll(Ljava/lang/String;)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.502 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.502 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/graphics/Bitmap;->dumpAll(Ljava/lang/String;)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.502 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/graphics/Bitmap;->dumpAll(Ljava/lang/String;)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.503 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->dumpHprofDataDdms()V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.508 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.508 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.508 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.508 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.508 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.509 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.509 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden field Landroid/os/Debug;->FRAMEWORK_FEATURES:[Ljava/lang/String; (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.509 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.513 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.516 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.516 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.520 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.520 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.520 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.521 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getLoadedClassCount()I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.521 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getMethodTracingMode()I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.523 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getRuntimeStat(Ljava/lang/String;)Ljava/lang/String; (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.524 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getRuntimeStats()Ljava/util/Map; (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.524 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.525 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.526 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getAllocCount(I)I (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.527 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->getVmFeatureList()[Ljava/lang/String; (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.529 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Lcom/android/internal/util/TypedProperties;->getStringInfo(Ljava/lang/String;)I (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.529 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->fieldTypeMatches(Ljava/lang/reflect/Field;Ljava/lang/Class;)Z (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.529 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->printLoadedClasses(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.531 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.531 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.532 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.532 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.532 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.534 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.534 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.534 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.535 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.535 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.536 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->resetAllocCount(I)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.537 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->setFieldsOn(Ljava/lang/Class;Z)V (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.537 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden field Landroid/os/Debug;->mWaiting:Z (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.537 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->setWaitingForDebugger(Z)V (runtime_flags=0, domain=core-platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.539 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->startAllocCounting()V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.540 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->fixTracePath(Ljava/lang/String;)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.540 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;IIZI)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.540 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->fixTracePath(Ljava/lang/String;)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.540 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;IIZI)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.541 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZIZ)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.541 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->startMethodTracingDdms(IIZI)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.542 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->fixTracePath(Ljava/lang/String;)Ljava/lang/String; (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.543 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;IIZI)V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.545 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->stopAllocCounting()V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.545 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->stopMethodTracing()V (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.546 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->isDebuggingEnabled()Z (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.547 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Lorg/apache/harmony/dalvik/ddmc/ChunkHandler;->type(Ljava/lang/String;)I (runtime_flags=CorePlatformApi, domain=core-platform, api=blocked,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.547 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Lorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(I[BII)V (runtime_flags=CorePlatformApi, domain=core-platform, api=blocked,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.547 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->setWaitingForDebugger(Z)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.547 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->setWaitingForDebugger(Z)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->suspendAllAndSendVmStart()V (runtime_flags=CorePlatformApi, domain=core-platform, api=blocked,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->threadCpuTimeNanos()J (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->isDebuggingEnabled()Z (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Lorg/apache/harmony/dalvik/ddmc/ChunkHandler;->type(Ljava/lang/String;)I (runtime_flags=CorePlatformApi, domain=core-platform, api=blocked,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Lorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(I[BII)V (runtime_flags=CorePlatformApi, domain=core-platform, api=blocked,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->setWaitingForDebugger(Z)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.548 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Landroid/os/Debug;->setWaitingForDebugger(Z)V (runtime_flags=0, domain=platform, api=blocked) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.549 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->lastDebuggerActivity()J (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.549 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden method Ldalvik/system/VMDebug;->lastDebuggerActivity()J (runtime_flags=CorePlatformApi, domain=core-platform, api=max-target-o,core-platform-api) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.550 7435-7435 e.androidplayer com.example.androidplayer E hiddenapi: Accessing hidden field Landroid/os/Debug;->mWaiting:Z (runtime_flags=0, domain=platform, api=max-target-o) from /system/framework/framework.jar-classes3.dex-transformed (domain=app) using linking: denied 2025-07-12 15:39:25.619 7435-7725 StudioProfiler com.example.androidplayer V Acquiring Application for Events 2025-07-12 15:39:28.078 7435-7435 e.androidplayer com.example.androidplayer I hiddenapi: Accessing hidden field Landroid/view/ViewRootImpl;->mSurface:Landroid/view/Surface; (runtime_flags=0, domain=platform, api=unsupported) from /data/local/tmp/perfd/layoutinspector-view-inspection.jar (domain=app) using linking: allowed 2025-07-12 15:39:38.350 7435-7445 e.androidplayer com.example.androidplayer I Background concurrent mark compact GC freed 3709KB AllocSpace bytes, 3(120KB) LOS objects, 49% free, 4088KB/8176KB, paused 3.238ms,9.432ms total 136.225ms 2025-07-12 15:39:46.956 7435-7445 e.androidplayer com.example.androidplayer I Background concurrent mark compact GC freed 3816KB AllocSpace bytes, 0(0B) LOS objects, 49% free, 4240KB/8480KB, paused 1.907ms,6.078ms total 117.636ms
07-13
### 处理 Android 中 `OpenSSLSocketImpl.setUseSessionTickets` 方法反射调用被灰名单限制 在 Android P (API level 28) 和更高版本中,Google 对反射 API 的访问进行了严格控制,引入了灰名单机制来阻止应用程序通过反射访问某些内部类和方法。对于 `OpenSSLSocketImpl.setUseSessionTickets` 这样的情况,可以考虑以下几种解决方案: #### 使用 Conscrypt 库替代原生 SSL 实现 Conscrypt 是 Google 开发的一个高性能 TLS/SSL 提供者库,支持更广泛的加密算法并提供更好的性能。可以通过集成此库来替换默认的 OpenSSL 实现。 ```java // 添加依赖项至 build.gradle 文件 dependencies { implementation 'org.conscrypt:conscrypt-android:2.5.1' } // 初始化 conscrypt provider Security.insertProviderAt(Conscrypt.newProvider(), 1); ``` 这样做的好处是可以直接利用 Conscrypt 提供的功能而无需担心反射带来的兼容性和安全性问题[^4]。 #### 动态加载特定版本下的实现 如果确实需要保持原有的逻辑,则可以根据不同的 SDK 版本动态判断是否执行该操作,在较新的系统上跳过对受限接口的操作。 ```java if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { try { final Method method = socket.getClass().getMethod("setUseSessionTickets", boolean.class); method.invoke(socket, true); } catch (Exception e) { Log.w(TAG, "Failed to invoke setUseSessionTickets via reflection.", e); } } ``` 这种方法能够有效规避高版本系统的限制,同时保留低版本设备上的功能[^2]。 #### 尝试其他方式设置 Session Tickets 行为 除了直接修改 `OpenSSLSocketImpl` 属性外,还可以探索是否有其他途径影响 session ticket 的行为,比如调整连接参数或配置文件中的选项等。不过这通常取决于具体的应用场景和技术栈[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值