Hax빙글
13.02.07
조회 수 4058
추천 수 28
댓글 12
*참고 : 이전에 잉크락 추가 관련 강좌에서 빠뜨린 부분이 있습니다.

CircleUnlockRippleRenderer.smali 파일을 여시고

0x1080618 를 찾으신 다음 framework-res.apk의 public.xml에 있는 reflectionmap 의 id값에 맞게 수정해주세요.

이때문에 물결이 조금 다르게 나오더군요.



잉크 색상 목록 중 마음에 드는 색상이 없어 추가하고 싶으신가요?

그럼 이 4가지 파일을 수정해야합니다 : public.xml, InkeffectPreview.smali, CircleUnlockRippleRenderer.smali, LockScreenSettings.smali.

public.xml 와 LockScreenSettings.smali 가 가장 쉬운 부분이므로 먼저 건드리도록 하죠.
 
public.xml 을 열어서 ink_*.png 와 ink_*_h.png 파일의 id값을 추가해줍니다. 이 png 파일들은 잉크 효과 선택 시 사진입니다.

예) ink_red.png 와 ink_red_h.png:


Code:

<public type="drawable" name="ink_red" id="0x7f02023c" />
<public type="drawable" name="ink_red_h" id="0x7f02023d" />

이제 저장합니다.



LockScreenSettings.smali 을 여셔서 이 부분을 찾습니다.


Code:

const/16 v0, 0x9

new-array v0, v0, [I

fill-array-data v0, :array_10

0x9를 원하는 색상 갯수로 바꿔줍니다.
저는 한개만 추가할 것이므로 0xa로 바꾸었습니다.


Code:

const/16 v0, 0xa

new-array v0, v0, [I

fill-array-data v0, :array_10

아래를 보시면 어레이 데이터가 있습니다.


Code:

    :array_10
.array-data 0x4
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
.end array-data

*시스템에 따라 값이 다를 수 있습니다.



몇줄 더 추가해주세요. 이 부분은 잠금화면 옵션 탭에서 잉크 효과 아래에 나타나는 현재 색상 스트링 부분입니다.


Code:

    :array_10
.array-data 0x4
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
0xact 0x0t 0x9t 0x7ft
.end array-data

*저는 색상을 딱 하나 추가하므로 딱 한줄만 더했습니다.

저장!



이제 InkeffectPreview.smali 를 여시면 이런 부분이 보입니다.


Code:

const/16 v1, 0x9

위에 했던 것과 같이 색상 수로 바꿔줍니다.



어레이 데이터 두개도 보실 수 있으신데요, 이 부분에도 줄을 추가해주셔야 합니다.

아까 public.xml에서 지정한 id값을 넣어줍니다.


Code:

 :array_14
.array-data 0x4
0x28t 0x2t 0x2t 0x7ft
0x2at 0x2t 0x2t 0x7ft
0x2bt 0x2t 0x2t 0x7ft
0x2ct 0x2t 0x2t 0x7ft
0x2dt 0x2t 0x2t 0x7ft
0x2et 0x2t 0x2t 0x7ft
0x2ft 0x2t 0x2t 0x7ft
0x30t 0x2t 0x2t 0x7ft
0x31t 0x2t 0x2t 0x7ft
0x3ct 0x2t 0x2t 0x7ft
.end array-data

.line 62
:array_2a
.array-data 0x4
0x32t 0x2t 0x2t 0x7ft
0x33t 0x2t 0x2t 0x7ft
0x34t 0x2t 0x2t 0x7ft
0x35t 0x2t 0x2t 0x7ft
0x36t 0x2t 0x2t 0x7ft
0x37t 0x2t 0x2t 0x7ft
0x38t 0x2t 0x2t 0x7ft
0x39t 0x2t 0x2t 0x7ft
0x3bt 0x2t 0x2t 0x7ft
0x3dt 0x2t 0x2t 0x7ft
.end array-data

아래에 0x9가 하나 더 있으므로


Code:

 const/16 v2, 0x9

new-array v2, v2, [Ljava/lang/String;

sput-object v2, Lcom/android/settings/InkeffectPreview;->mInkcolorItem:[Ljava/lang/String;






Code:

 const/16 v2, 0xa

new-array v2, v2, [Ljava/lang/String;

sput-object v2, Lcom/android/settings/InkeffectPreview;->mInkcolorItem:[Ljava/lang/String;

이런 식으로 바꿔줍니다.


 마지막으로 InkeffectPreview.smali 에서 할 일은 목록에 색상을 추가시키는 것입니다.

이런 구문을 찾아서 아래에 붙여넣기 하세요. 그 후, 굵은 글씨의 부분을 수정해주세요.

빨간 부분은 지우셔도 무관합니다.


Code:

sget-object v2, Lcom/android/settings/InkeffectPreview;->mInkcolorItem:[Ljava/lang/String;

const/16 v3, 0x8 <----목록에서 보여지는 순서. 8번째 색상임을 뜻함.

invoke-virtual {p0}, Lcom/android/settings/InkeffectPreview;->getResources()Landroid/content/res/Resources;

move-result-object v4

const v5, 0x7f090ce6

invoke-virtual {v4, v5}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;


const-string v4, "Light Blue" <----색상의 이름

aput-object v4, v2, v3

저장!



이제 마지막으로 CircleUnlockRippleRenderer.smali 를 수정하셔야 합니다.

이 파일은 렌더링 시 잉크의 RGB값을 지정해줍니다.

0x9를 다시 찾아서 색상 수로 바꿔줍니다:


Code:

const/16 v3, 0xa

이런 구문을 찾으세요.

*시스템에 따라 값이 다를 수 있습니다.


Code:

const/16 v4, 0x8

new-array v5, v7, [F

fill-array-data v5, :array_268

aput-object v5, v3, v4

아래에 붙여넣기하시고 굵은 글씨의 부분을 수정해주세요.


Code:

const/16 v4, 0x9

new-array v5, v7, [F

fill-array-data v5, :array_269

aput-object v5, v3, v4

눈치채셨겠지만, array_269는 존재하지 않습니다. 고로 만들어줍니다.
맨 아래로 내려가셔서 어레이 데이터들 뒤에 끼워줍니다.


Code:

:array_269
.array-data 0x4
0x0t 0x0t 0x80t 0x3ft <--빨간색. 1.0F
0x0t 0x0t 0x0t 0x0t <--초록색. 0.0F
0x0t 0x0t 0x0t 0x0t <--파란색. 0.0F
.end array-data

끝! 이제 컴파일하고 즐기시면 됩니다 :)
댓글 12
댓글 쓰기 권한이 없습니다.
최신순 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2