首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWP-ASan需要Android 11设备吗?

GWP-ASan需要Android 11设备吗?
EN

Stack Overflow用户
提问于 2020-09-04 14:20:21
回答 2查看 296关注 0票数 0

文档GWP-ASan is available on apps that target Android 11 (API level 30) or higher,但没有提到对设备的任何要求。

类似地,舱单文件 for gwpAsanMode表示Added in API level 30,但没有提到对设备的任何要求。

我的目标是API级别30,并且启用了GWP-Asan,并且我试图触发它只是为了证明它是有效的。我遵循了文档中的模式,即执行数千次免费后使用,但它没有触发。我想知道这是否是因为我在Android 7设备上进行测试(我手头没有Android 11设备)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 16:19:54

需要一个Android 11设备:来源

GWP-ASan只能在Android 11设备上使用。因此,要使应用程序具有GWP-ASan,您需要:(1)使用Android11的设备,(2)清单中指定的android:gwpAsanMode="always"。此外,您还需要使用Android11SDK构建应用程序,因为(2)中的标志不是在旧的SDK中定义的,因此无法构建。

票数 0
EN

Stack Overflow用户

发布于 2020-10-15 13:10:14

对我也不起作用,我试着用Android 11在GooglePixel2XL上测试GWP-Asan。

更新:由于某种原因,当Android调试器设置为Dual时,app启动并正常运行。在不附加调试器的情况下运行,使GWP Asan工作,此外,您还可以使用标记“调试”来筛选logcat,因为它在那里打印日志

使用Android的JNI创建了Android应用程序,build.gradle如下所示:

代码语言:javascript
复制
plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.example.gwpadresssanitizer"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

清单如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.gwpadresssanitizer">

    <application
        android:gwpAsanMode="always"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.GWPAdressSanitizer">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

使用代码:

代码语言:javascript
复制
jstring native_get_string(JNIEnv* env) {
    std::string s = "Hellooooooooooooooo ";
    std::string_view sv = s + "World\n";

    // BUG: Use-after-free. `sv` holds a dangling reference to the ephemeral
    // string created by `s + "World\n"`. Accessing the data here is a
    // use-after-free.
    return env->NewStringUTF(sv.data());
}

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_gwpadresssanitizer_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {

    jstring return_string;
    for (unsigned i = 0; i < 0x10000; ++i) {
        return_string = native_get_string(env);
    }

    return reinterpret_cast<jstring>(env->NewGlobalRef(return_string));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63742966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档