diff --git a/libs/hwui/Animator.h b/libs/hwui/Animator.h
index 1b3d8e7..cd8d383 100644
--- a/libs/hwui/Animator.h
+++ b/libs/hwui/Animator.h
@@ -77,7 +77,7 @@
     void forceEndNow(AnimationContext& context);
 
 protected:
-    BaseRenderNodeAnimator(float finalValue);
+    explicit BaseRenderNodeAnimator(float finalValue);
     virtual ~BaseRenderNodeAnimator();
 
     virtual float getValue(RenderNode* target) const = 0;
diff --git a/libs/hwui/AssetAtlas.cpp b/libs/hwui/AssetAtlas.cpp
index 2889d2f..037bb0c 100644
--- a/libs/hwui/AssetAtlas.cpp
+++ b/libs/hwui/AssetAtlas.cpp
@@ -29,7 +29,7 @@
 // Lifecycle
 ///////////////////////////////////////////////////////////////////////////////
 
-void AssetAtlas::init(sp<GraphicBuffer> buffer, int64_t* map, int count) {
+void AssetAtlas::init(const sp<GraphicBuffer>& buffer, int64_t* map, int count) {
     if (mImage) {
         return;
     }
diff --git a/libs/hwui/AssetAtlas.h b/libs/hwui/AssetAtlas.h
index f1cd0b4..23bca24 100644
--- a/libs/hwui/AssetAtlas.h
+++ b/libs/hwui/AssetAtlas.h
@@ -111,7 +111,7 @@
      * initialized. To re-initialize the atlas, you must
      * first call terminate().
      */
-    ANDROID_API void init(sp<GraphicBuffer> buffer, int64_t* map, int count);
+    ANDROID_API void init(const sp<GraphicBuffer>& buffer, int64_t* map, int count);
 
     /**
      * Destroys the atlas texture. This object can be
diff --git a/libs/hwui/DisplayListOp.h b/libs/hwui/DisplayListOp.h
index 0d7911c..6be6510 100644
--- a/libs/hwui/DisplayListOp.h
+++ b/libs/hwui/DisplayListOp.h
@@ -108,7 +108,7 @@
 class DrawOp : public DisplayListOp {
 friend class MergingDrawBatch;
 public:
-    DrawOp(const SkPaint* paint)
+    explicit DrawOp(const SkPaint* paint)
             : mPaint(paint), mQuickRejected(false) {}
 
     virtual void defer(DeferStateStruct& deferStruct, int saveCount, int level,
@@ -245,7 +245,7 @@
     }
 
     // default empty constructor for bounds, to be overridden in child constructor body
-    DrawBoundedOp(const SkPaint* paint): DrawOp(paint) { }
+    explicit DrawBoundedOp(const SkPaint* paint): DrawOp(paint) { }
 
     virtual bool getLocalBounds(Rect& localBounds) override {
         localBounds.set(mLocalBounds);
@@ -270,7 +270,7 @@
 
 class SaveOp : public StateOp {
 public:
-    SaveOp(int flags)
+    explicit SaveOp(int flags)
             : mFlags(flags) {}
 
     virtual void defer(DeferStateStruct& deferStruct, int saveCount, int level,
@@ -296,7 +296,7 @@
 
 class RestoreToCountOp : public StateOp {
 public:
-    RestoreToCountOp(int count)
+    explicit RestoreToCountOp(int count)
             : mCount(count) {}
 
     virtual void defer(DeferStateStruct& deferStruct, int saveCount, int level,
@@ -409,7 +409,7 @@
 
 class RotateOp : public StateOp {
 public:
-    RotateOp(float degrees)
+    explicit RotateOp(float degrees)
             : mDegrees(degrees) {}
 
     virtual void applyState(OpenGLRenderer& renderer, int saveCount) const override {
@@ -468,7 +468,7 @@
 
 class SetMatrixOp : public StateOp {
 public:
-    SetMatrixOp(const SkMatrix& matrix)
+    explicit SetMatrixOp(const SkMatrix& matrix)
             : mMatrix(matrix) {}
 
     virtual void applyState(OpenGLRenderer& renderer, int saveCount) const override {
@@ -491,7 +491,7 @@
 
 class SetLocalMatrixOp : public StateOp {
 public:
-    SetLocalMatrixOp(const SkMatrix& matrix)
+    explicit SetLocalMatrixOp(const SkMatrix& matrix)
             : mMatrix(matrix) {}
 
     virtual void applyState(OpenGLRenderer& renderer, int saveCount) const override {
@@ -510,7 +510,7 @@
 
 class ConcatMatrixOp : public StateOp {
 public:
-    ConcatMatrixOp(const SkMatrix& matrix)
+    explicit ConcatMatrixOp(const SkMatrix& matrix)
             : mMatrix(matrix) {}
 
     virtual void applyState(OpenGLRenderer& renderer, int saveCount) const override {
@@ -529,7 +529,7 @@
 
 class ClipOp : public StateOp {
 public:
-    ClipOp(SkRegion::Op op) : mOp(op) {}
+    explicit ClipOp(SkRegion::Op op) : mOp(op) {}
 
     virtual void defer(DeferStateStruct& deferStruct, int saveCount, int level,
             bool useQuickReject) override {
@@ -1396,7 +1396,7 @@
 
 class DrawFunctorOp : public DrawOp {
 public:
-    DrawFunctorOp(Functor* functor)
+    explicit DrawFunctorOp(Functor* functor)
             : DrawOp(nullptr), mFunctor(functor) {}
 
     virtual void applyDraw(OpenGLRenderer& renderer, Rect& dirty) override {
diff --git a/libs/hwui/GammaFontRenderer.h b/libs/hwui/GammaFontRenderer.h
index ca55bf1..7b4d375 100644
--- a/libs/hwui/GammaFontRenderer.h
+++ b/libs/hwui/GammaFontRenderer.h
@@ -91,7 +91,7 @@
     void endPrecaching() override;
 
 private:
-    ShaderGammaFontRenderer(bool multiGamma);
+    explicit ShaderGammaFontRenderer(bool multiGamma);
 
     FontRenderer* mRenderer;
     bool mMultiGamma;
diff --git a/libs/hwui/Image.h b/libs/hwui/Image.h
index 2514535..b8f5a5b 100644
--- a/libs/hwui/Image.h
+++ b/libs/hwui/Image.h
@@ -38,7 +38,7 @@
      * cannot be created, getTexture() will return 0 and getImage() will
      * return EGL_NO_IMAGE_KHR.
      */
-    Image(sp<GraphicBuffer> buffer);
+    explicit Image(sp<GraphicBuffer> buffer);
     ~Image();
 
     /**
diff --git a/libs/hwui/Interpolator.h b/libs/hwui/Interpolator.h
index 66ce119..6512008 100644
--- a/libs/hwui/Interpolator.h
+++ b/libs/hwui/Interpolator.h
@@ -43,7 +43,7 @@
 
 class ANDROID_API AccelerateInterpolator : public Interpolator {
 public:
-    AccelerateInterpolator(float factor) : mFactor(factor), mDoubleFactor(factor*2) {}
+    explicit AccelerateInterpolator(float factor) : mFactor(factor), mDoubleFactor(factor*2) {}
     virtual float interpolate(float input) override;
 private:
     const float mFactor;
@@ -52,7 +52,7 @@
 
 class ANDROID_API AnticipateInterpolator : public Interpolator {
 public:
-    AnticipateInterpolator(float tension) : mTension(tension) {}
+    explicit AnticipateInterpolator(float tension) : mTension(tension) {}
     virtual float interpolate(float input) override;
 private:
     const float mTension;
@@ -60,7 +60,7 @@
 
 class ANDROID_API AnticipateOvershootInterpolator : public Interpolator {
 public:
-    AnticipateOvershootInterpolator(float tension) : mTension(tension) {}
+    explicit AnticipateOvershootInterpolator(float tension) : mTension(tension) {}
     virtual float interpolate(float input) override;
 private:
     const float mTension;
@@ -73,7 +73,7 @@
 
 class ANDROID_API CycleInterpolator : public Interpolator {
 public:
-    CycleInterpolator(float cycles) : mCycles(cycles) {}
+    explicit CycleInterpolator(float cycles) : mCycles(cycles) {}
     virtual float interpolate(float input) override;
 private:
     const float mCycles;
@@ -81,7 +81,7 @@
 
 class ANDROID_API DecelerateInterpolator : public Interpolator {
 public:
-    DecelerateInterpolator(float factor) : mFactor(factor) {}
+    explicit DecelerateInterpolator(float factor) : mFactor(factor) {}
     virtual float interpolate(float input) override;
 private:
     const float mFactor;
@@ -94,7 +94,7 @@
 
 class ANDROID_API OvershootInterpolator : public Interpolator {
 public:
-    OvershootInterpolator(float tension) : mTension(tension) {}
+    explicit OvershootInterpolator(float tension) : mTension(tension) {}
     virtual float interpolate(float input) override;
 private:
     const float mTension;
diff --git a/libs/hwui/renderstate/RenderState.h b/libs/hwui/renderstate/RenderState.h
index 4fd792c..ac9445b 100644
--- a/libs/hwui/renderstate/RenderState.h
+++ b/libs/hwui/renderstate/RenderState.h
@@ -101,7 +101,7 @@
     void resumeFromFunctorInvoke();
     void assertOnGLThread();
 
-    RenderState(renderthread::RenderThread& thread);
+    explicit RenderState(renderthread::RenderThread& thread);
     ~RenderState();
 
 
diff --git a/libs/hwui/renderthread/EglManager.h b/libs/hwui/renderthread/EglManager.h
index 0a8cfd3..de932fb 100644
--- a/libs/hwui/renderthread/EglManager.h
+++ b/libs/hwui/renderthread/EglManager.h
@@ -58,7 +58,7 @@
 private:
     friend class RenderThread;
 
-    EglManager(RenderThread& thread);
+    explicit EglManager(RenderThread& thread);
     // EglContext is never destroyed, method is purposely not implemented
     ~EglManager();
 
diff --git a/libs/hwui/thread/TaskManager.cpp b/libs/hwui/thread/TaskManager.cpp
index e9dde29..6a4587e 100644
--- a/libs/hwui/thread/TaskManager.cpp
+++ b/libs/hwui/thread/TaskManager.cpp
@@ -104,7 +104,7 @@
     return true;
 }
 
-bool TaskManager::WorkerThread::addTask(TaskWrapper task) {
+bool TaskManager::WorkerThread::addTask(const TaskWrapper& task) {
     if (!isRunning()) {
         run(mName.string(), PRIORITY_DEFAULT);
     } else if (exitPending()) {
diff --git a/libs/hwui/thread/TaskManager.h b/libs/hwui/thread/TaskManager.h
index 4d3b8f0..7d16581 100644
--- a/libs/hwui/thread/TaskManager.h
+++ b/libs/hwui/thread/TaskManager.h
@@ -77,9 +77,9 @@
 
     class WorkerThread: public Thread {
     public:
-        explicit WorkerThread(const String8 name): mSignal(Condition::WAKE_UP_ONE), mName(name) { }
+        explicit WorkerThread(const String8& name): mSignal(Condition::WAKE_UP_ONE), mName(name) { }
 
-        bool addTask(TaskWrapper task);
+        bool addTask(const TaskWrapper& task);
         size_t getTaskCount() const;
         void exit();
 
diff --git a/libs/hwui/utils/Timing.h b/libs/hwui/utils/Timing.h
index dd8847a..4b1fabe 100644
--- a/libs/hwui/utils/Timing.h
+++ b/libs/hwui/utils/Timing.h
@@ -22,7 +22,7 @@
 #define TIME_METHOD() MethodTimer __method_timer(__func__)
 class MethodTimer {
 public:
-    MethodTimer(const char* name)
+    explicit MethodTimer(const char* name)
             : mMethodName(name) {
         gettimeofday(&mStart, nullptr);
     }
diff --git a/tools/aapt/AaptAssets.h b/tools/aapt/AaptAssets.h
index 4fdc964..eadd48a 100644
--- a/tools/aapt/AaptAssets.h
+++ b/tools/aapt/AaptAssets.h
@@ -103,7 +103,7 @@
 {
 public:
     AaptGroupEntry() {}
-    AaptGroupEntry(const ConfigDescription& config) : mParams(config) {}
+    explicit AaptGroupEntry(const ConfigDescription& config) : mParams(config) {}
 
     bool initFromDirName(const char* dir, String8* resType);
 
@@ -312,7 +312,7 @@
         : isPublic(false), isJavaSymbol(false), typeCode(TYPE_UNKNOWN)
     {
     }
-    AaptSymbolEntry(const String8& _name)
+    explicit AaptSymbolEntry(const String8& _name)
         : name(_name), isPublic(false), isJavaSymbol(false), typeCode(TYPE_UNKNOWN)
     {
     }
