看板 Soft_Job 關於我們 聯絡資訊
公司最近接了一個Android案子,說好對方會提供SDK。 對方第一版SDK過來是純C/C++ library,連makefile都沒有QQ 要求後第二版丟過來,加上了CMakeList.txt。 總算可以試圖編譯,但還是過不了。 詢問後才發現他們的toolchain是自己編的不是從Android官網抓的 Orz 我想想這樣花太多時間了,所以詢問對方能不能直接提供編譯完的版本。 於是對方最後丟了一個.so過來,看來是要我們自己封JNI... 先撇開之前自己編譯的問題,我只想確定一下,身為Android工程師會封JNI是常識嗎? 我大部分使用別人library的經驗都是在gradle裡面設定dependency 少部分是抓下來後import module。 這還是第一次碰到需要自己封JNI的情況。 因為公司也只有我一個Android工程師, 所以想詢問一下有Android工作經驗的人這個問題。 請問你們有自己封裝過JNI嗎? 這會是Android工程師的必備技術嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.14.49 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1503026840.A.2AE.html ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 11:28:04
senjor: 我覺得哪有什麼必備技術,就是看現在工作需不需要而已... 08/18 11:28
senjor: 不過身為資訊人的天命就是,要有隨時學習新技術的準備 Q_Q 08/18 11:28
senjor: 資訊人的基本功反而是學習新技術的能力,其他其次 (躺 08/18 11:29
我非常同意要一直學新東西XD 不過各領域多多少少還是會有一些必備技能吧? 像是號稱後端卻不懂資料庫,或號稱系統工程師不懂mutex等等。 也會讓人覺得很瞎吧。 所以我只是想知道自己瞎不瞎( ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 11:33:50
steve1012: 需要就學一下 挺好的 08/18 11:33
YahooTaiwan: 看你的資歷阿 3年以上還不會就蠻瞎的 08/18 11:36
cdfq152313: 工作快一年吧 08/18 11:37
senjor: 其實我覺得就是看工作需求耶,有時候某個環境下,連續幾年 08/18 11:39
senjor: 都碰不到一個很多人都有碰過的技術也是很正常的 08/18 11:39
senjor: 例如我是做後端,但是卻一直處理資料庫跟報告的部分,使用 08/18 11:42
senjor: 者登入、帳號驗證、安全性那塊都沒機會碰過... Q_Q 08/18 11:42
感謝經驗分享
mrj5566: 請他們先提供一個 Demo Project 08/18 11:43
mrj5566: 先確認 SDK 是可以正常運行的, 再來討論後續問題 08/18 11:44
我收到的當下就問他們能不能提供了 因為除了JNI,他們的.so檔案好像還要跟某個授權檔放在一起才會生效 我這邊如果出了bug完全沒辦法知道是授權失效,還是我封JNI失敗 所以只好先踢回去
ckvir: JNI 花個1.2天研究一下 跑一下demo 就知道原理了 08/18 12:07
ripple0129: 除非是職缺上常見的技術,其他的只有有沒有用到的問題 08/18 12:12
ripple0129: ,遇到了再研究就好。 08/18 12:12
senjor: 之前面試Android工程師,面試說我沒有編過kernel的經驗, 08/18 12:15
senjor: 所以只能算是新人 Orz 08/18 12:15
這個... 我覺得Android(應用層)工程師應該是不用懂這個吧QQ 應該是略微不同的技能樹 不然我以前把AOSP抓下來編過也變成資深工程師了
oneheat: JNI而已,又不是叫你整aidl,網上一堆範例 08/18 12:16
dreamnook: 沒有說你一定要懂很多 但免不了學習就是 08/18 12:16
dreamnook: jni應該算還好的程度 08/18 12:17
fidelity77: 不是必備 08/18 12:21
fidelity77: 這些技術有點像是選修,沒用到通常也不會特別去學 08/18 12:24
qweqweqweqwe: 我做超過五年 沒碰過~ 08/18 12:50
Eric0605: 不會很常見 大公司分工很細 可能連mk都自己沒寫過 只改 08/18 12:59
Eric0605: 其他人的 08/18 12:59
RadiationXen: JNI 還好 08/18 13:03
多謝大家的意見。 其實會問這個問題有部分也是想知道雙方對於 『提供SDK』 的理解落差到底合不合理 如果封JNI是Android必備技能, 那對方說『提供SDK』的時候丟一個沒封裝過的.so檔來, 好像也蠻ok的。 總之雖然球先踢回去了(理由上面有), 不過JNI的封裝還是要練習一下,當練功也避免對方堅持不封裝XD 還好Android studio 2.X版以後產JNI好像變簡單很多。 ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 13:22:22
Argos: 反正齁 你不會的 就先嘴你一輪「阿這不是基本中的基本」 08/18 13:14
Argos: 然後要幹麻?當然是凹你阿! 08/18 13:14
Argos: 什麼常識啦 基本啦 都是放屁 08/18 13:15
htury: jni是不難,只怕還要幫對方debug 08/18 13:27
htury: 時間比較重要,可以問主管意見,通常都會請對方提供sample 08/18 13:29
meowyih: 沒啥常識不常識的, 不過這種東西摸個幾天就能熟了才是真 08/18 13:39
meowyih: 的常識 = =a 08/18 13:39
meowyih: 還有一個常識, 出錢的最大, 不怕賠錢的第二大, 不爽幹就 08/18 13:40
meowyih: 丟辭呈的第三大 XD 08/18 13:40
angusyu: 對方的問題,除非他們有特別說連c都要自己用ndk包 08/18 14:37
ssccg: 沒有什麼必備不必備的,是你們沒說好的問題,要Java API就 08/18 14:39
ssccg: 講清楚不要只說SDK 08/18 14:39
這次事件之後,我想下次主管應該會要求對方提供Java API了吧XD 原本以為開發Android,SDK一定也是Java版的,沒想到會發生這種事。 太大意了...
angusyu: 包準那個so還是不能用,因為沒wrapper誰知道怎麼用 08/18 14:39
ckp4131025: 我以為第三方sdk都會有完整的guide,不然製作的人怎麼 08/18 14:55
ckp4131025: 測的? 08/18 14:55
shortoneal: 封是會封,但你們這狀況應該是看怎麼跟SDK提供者談的. 08/18 14:56
我們SDK就是直接跟對方拿,至於他們怎麼生出來的我就不知道了。 應該是他們工程team寫的吧。
netburst: 我那包就是c已經沒人維護了 但上面又要求最佳化 08/18 15:43
netburst: c已經八年沒人動了 也沒文件 我也不會c JNI找到的多半 08/18 15:44
netburst: 是流程教學文 悲泣 08/18 15:44
netburst: so還缺 還要去production COPY回來 08/18 15:45
這個... 好慘,幫QQ ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 16:18:44
m09456010: 確實該跟人拿個demo 不然亂丟東西就交差 你也不知道 08/18 16:35
m09456010: 最差最差也有文件 08/18 16:37
※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 16:50:49
y3k: 矬控o看工作需求 有些人是專精在Application上 JNI就是用來載 08/18 16:58
y3k: API用的... 而且簡單跟難搞的程度差非常多 通常有用的都有點 08/18 17:00
y3k: 難度 08/18 17:00
alan23273850: jni真的不難 概念簡單 網路上也找得到封裝方式 08/18 20:13
acmonkey: jni原理google就有 免擔心 08/19 08:24
pttuser: 一堆推文自己不會就說不用會,可笑 08/19 15:50
siriusu: 不是基本 08/19 19:11
siriusu: 更正 不是必備 你要說很基本也沒錯但不是每個人都有必要 08/19 19:11
siriusu: 碰 08/19 19:11
aksk: 既然是SDK,本來就要封裝好而且測試可用吧! 08/20 06:07
doranako: so檔不是用Android toolchain編譯也沒辦法使用,自己改 08/20 09:35
doranako: toolchain編譯會花很多時間 08/20 09:35
doranako: 先確定so檔可用,例如unit test先試看看jni init能夠跑 08/20 09:40
doranako: 和某些fun 輸入輸出 08/20 09:40
是用Android toolchain編的沒錯喔 雖然那個toolchain不是官方編譯的就是了QQ ※ 編輯: cdfq152313 (114.32.109.47), 08/20/2017 14:43:51
jackyu: 這就是分(ㄊㄨㄟ)配(ㄒㄧㄝ\)的技術啦,對方一定是系統或 08/20 16:22
jackyu: IC廠RD,頂多幫你出JNI相容的so,要他們寫一個簡單的app 08/20 16:22
jackyu: 一個簡單的class去demo他們的API要怎麼用,他們應該也不會 08/20 16:23
jackyu: 也不想學,說不定光survey ndk怎麼用就覺得很煩了 08/20 16:24
jackyu: 不過就算你要寫JNI,他們也要提供H檔和API用法吧 08/20 16:25
psliurt: 我不知道Android工程師要不要懂,但JAVA工程師一定要懂! 08/20 21:52
jackcorner: 很多時候不是技術問題 是資源問題 如果只有你一個人 08/28 14:53
jackcorner: 我是賴死賴皮拼命跟他要東西 另一邊拼命壓交期 再跟 08/28 14:54
jackcorner: 老闆抱怨多困難各種不可能各種卡關 08/28 14:56
jackcorner: 沒有什麼都會的工程師 就算需要的我都會我也是這樣 08/28 14:59