diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 7717143..2b8e1fd 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -80,7 +80,7 @@
 
 class ScopedRemovedRenderNodeObserver : public TreeObserver {
 public:
-    ScopedRemovedRenderNodeObserver(JNIEnv* env) : mEnv(env) {}
+    explicit ScopedRemovedRenderNodeObserver(JNIEnv* env) : mEnv(env) {}
     ~ScopedRemovedRenderNodeObserver() {
         for (auto& node : mMaybeRemovedNodes) {
             if (node->hasParents()) continue;
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index e6399d4..18cecc2 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -762,7 +762,7 @@
 
 class CanvasContext::FuncTaskProcessor : public TaskProcessor<bool> {
 public:
-    FuncTaskProcessor(Caches& caches)
+    explicit FuncTaskProcessor(Caches& caches)
             : TaskProcessor<bool>(&caches.tasks) {}
 
     virtual void onProcess(const sp<Task<bool> >& task) override {
diff --git a/libs/hwui/tests/macrobench/TestSceneRunner.cpp b/libs/hwui/tests/macrobench/TestSceneRunner.cpp
index c5af061..807cf73 100644
--- a/libs/hwui/tests/macrobench/TestSceneRunner.cpp
+++ b/libs/hwui/tests/macrobench/TestSceneRunner.cpp
@@ -41,7 +41,7 @@
 template<class T>
 class ModifiedMovingAverage {
 public:
-    ModifiedMovingAverage(int weight) : mWeight(weight) {}
+    explicit ModifiedMovingAverage(int weight) : mWeight(weight) {}
 
     T add(T today) {
         if (!mHasValue) {
diff --git a/libs/hwui/tests/microbench/TaskManagerBench.cpp b/libs/hwui/tests/microbench/TaskManagerBench.cpp
index c6b9f3b..cf47f273 100644
--- a/libs/hwui/tests/microbench/TaskManagerBench.cpp
+++ b/libs/hwui/tests/microbench/TaskManagerBench.cpp
@@ -29,7 +29,7 @@
 
 class TrivialProcessor : public TaskProcessor<char> {
 public:
-    TrivialProcessor(TaskManager* manager)
+    explicit TrivialProcessor(TaskManager* manager)
             : TaskProcessor(manager) {}
     virtual ~TrivialProcessor() {}
     virtual void onProcess(const sp<Task<char> >& task) override {
diff --git a/libs/hwui/tests/unit/FrameBuilderTests.cpp b/libs/hwui/tests/unit/FrameBuilderTests.cpp
index 0f16b15..103f156 100644
--- a/libs/hwui/tests/unit/FrameBuilderTests.cpp
+++ b/libs/hwui/tests/unit/FrameBuilderTests.cpp
@@ -1919,7 +1919,7 @@
         std::function<void(const RectOp&, const BakedOpState&)> opValidateCallback) {
     class PropertyTestRenderer : public TestRendererBase {
     public:
-        PropertyTestRenderer(std::function<void(const RectOp&, const BakedOpState&)> callback)
+        explicit PropertyTestRenderer(std::function<void(const RectOp&, const BakedOpState&)> callback)
                 : mCallback(callback) {}
         void onRectOp(const RectOp& op, const BakedOpState& state) override {
             EXPECT_EQ(mIndex++, 0);
@@ -2040,7 +2040,7 @@
         std::function<void(RenderProperties&)> propSetupCallback) {
     class SaveLayerAlphaClipTestRenderer : public TestRendererBase {
     public:
-        SaveLayerAlphaClipTestRenderer(SaveLayerAlphaData* outData)
+        explicit SaveLayerAlphaClipTestRenderer(SaveLayerAlphaData* outData)
                 : mOutData(outData) {}
 
         OffscreenBuffer* startTemporaryLayer(uint32_t width, uint32_t height) override {
diff --git a/libs/hwui/tests/unit/RenderNodeTests.cpp b/libs/hwui/tests/unit/RenderNodeTests.cpp
index b2997df..43ee654 100644
--- a/libs/hwui/tests/unit/RenderNodeTests.cpp
+++ b/libs/hwui/tests/unit/RenderNodeTests.cpp
@@ -55,7 +55,7 @@
 TEST(RenderNode, releasedCallback) {
     class DecRefOnReleased : public GlFunctorLifecycleListener {
     public:
-        DecRefOnReleased(int* refcnt) : mRefCnt(refcnt) {}
+        explicit DecRefOnReleased(int* refcnt) : mRefCnt(refcnt) {}
         void onGlFunctorReleased(Functor* functor) override {
             *mRefCnt -= 1;
         }
diff --git a/libs/hwui/utils/TestWindowContext.cpp b/libs/hwui/utils/TestWindowContext.cpp
index c885491..eba6769 100644
--- a/libs/hwui/utils/TestWindowContext.cpp
+++ b/libs/hwui/utils/TestWindowContext.cpp
@@ -58,7 +58,7 @@
 
 public:
 
-    TestWindowData(SkISize size) : mSize(size) {
+    explicit TestWindowData(SkISize size) : mSize(size) {
         android::BufferQueue::createBufferQueue(&mProducer, &mConsumer);
         mCpuConsumer = new android::CpuConsumer(mConsumer, 1);
         mCpuConsumer->setName(android::String8("TestWindowContext"));
diff --git a/services/tests/servicestests/jni/apf_jni.cpp b/services/tests/servicestests/jni/apf_jni.cpp
index 7d142eb..19819ac 100644
--- a/services/tests/servicestests/jni/apf_jni.cpp
+++ b/services/tests/servicestests/jni/apf_jni.cpp
@@ -39,7 +39,7 @@
 
 class ScopedPcap {
   public:
-    ScopedPcap(pcap_t* pcap) : pcap_ptr(pcap) {}
+    explicit ScopedPcap(pcap_t* pcap) : pcap_ptr(pcap) {}
     ~ScopedPcap() {
         pcap_close(pcap_ptr);
     }
@@ -51,7 +51,7 @@
 
 class ScopedFILE {
   public:
-    ScopedFILE(FILE* fp) : file(fp) {}
+    explicit ScopedFILE(FILE* fp) : file(fp) {}
     ~ScopedFILE() {
         fclose(file);
     }
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index 9976d00..447ace6 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -494,7 +494,7 @@
 
 struct Feature {
     Feature() : required(false), version(-1) {}
-    Feature(bool required, int32_t version = -1) : required(required), version(version) {}
+    explicit Feature(bool required, int32_t version = -1) : required(required), version(version) {}
 
     /**
      * Whether the feature is required.
diff --git a/tools/aapt2/compile/XmlIdCollector.cpp b/tools/aapt2/compile/XmlIdCollector.cpp
index f40689e..9fc979c 100644
--- a/tools/aapt2/compile/XmlIdCollector.cpp
+++ b/tools/aapt2/compile/XmlIdCollector.cpp
@@ -35,7 +35,7 @@
 
     std::vector<SourcedResourceName>* mOutSymbols;
 
-    IdCollector(std::vector<SourcedResourceName>* outSymbols) : mOutSymbols(outSymbols) {
+    explicit IdCollector(std::vector<SourcedResourceName>* outSymbols) : mOutSymbols(outSymbols) {
     }
 
     void visit(xml::Element* element) override {
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index 953e87e..4d8c5fb 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -220,7 +220,7 @@
 public:
     using xml::Visitor::visit;
 
-    FullyQualifiedClassNameVisitor(const StringPiece16& package) : mPackage(package) {
+    explicit FullyQualifiedClassNameVisitor(const StringPiece16& package) : mPackage(package) {
     }
 
     void visit(xml::Element* el) override {
diff --git a/tools/aapt2/proto/TableProtoDeserializer.cpp b/tools/aapt2/proto/TableProtoDeserializer.cpp
index 82e4fb0..6489b86 100644
--- a/tools/aapt2/proto/TableProtoDeserializer.cpp
+++ b/tools/aapt2/proto/TableProtoDeserializer.cpp
@@ -30,7 +30,7 @@
 public:
     using ValueVisitor::visit;
 
-    ReferenceIdToNameVisitor(const std::map<ResourceId, ResourceNameRef>* mapping) :
+    explicit ReferenceIdToNameVisitor(const std::map<ResourceId, ResourceNameRef>* mapping) :
             mMapping(mapping) {
         assert(mMapping);
     }
diff --git a/tools/aapt2/split/TableSplitter.cpp b/tools/aapt2/split/TableSplitter.cpp
index 4bfdb12..2dfe2a2 100644
--- a/tools/aapt2/split/TableSplitter.cpp
+++ b/tools/aapt2/split/TableSplitter.cpp
@@ -40,7 +40,7 @@
  */
 class SplitValueSelector {
 public:
-    SplitValueSelector(const SplitConstraints& constraints) {
+    explicit SplitValueSelector(const SplitConstraints& constraints) {
         for (const ConfigDescription& config : constraints.configs) {
             if (config.density == 0) {
                 mDensityIndependentConfigs.insert(config);
diff --git a/tools/aapt2/unflatten/BinaryResourceParser.cpp b/tools/aapt2/unflatten/BinaryResourceParser.cpp
index ec46751..5cd1c8b 100644
--- a/tools/aapt2/unflatten/BinaryResourceParser.cpp
+++ b/tools/aapt2/unflatten/BinaryResourceParser.cpp
@@ -47,7 +47,7 @@
 public:
     using ValueVisitor::visit;
 
-    ReferenceIdToNameVisitor(const std::map<ResourceId, ResourceName>* mapping) :
+    explicit ReferenceIdToNameVisitor(const std::map<ResourceId, ResourceName>* mapping) :
             mMapping(mapping) {
         assert(mMapping);
     }
