[請益] Android工程師會JNI在業界是常識嗎?

看板Soft_Job作者 (月月冬瓜)時間8年前 (2017/08/18 11:27), 8年前編輯推噓25(26145)
留言72則, 32人參與, 最新討論串1/2 (看更多)
公司最近接了一個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

08/18 11:28, , 1F
我覺得哪有什麼必備技術,就是看現在工作需不需要而已...
08/18 11:28, 1F

08/18 11:28, , 2F
不過身為資訊人的天命就是,要有隨時學習新技術的準備 Q_Q
08/18 11:28, 2F

08/18 11:29, , 3F
資訊人的基本功反而是學習新技術的能力,其他其次 (躺
08/18 11:29, 3F
我非常同意要一直學新東西XD 不過各領域多多少少還是會有一些必備技能吧? 像是號稱後端卻不懂資料庫,或號稱系統工程師不懂mutex等等。 也會讓人覺得很瞎吧。 所以我只是想知道自己瞎不瞎( ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 11:33:50

08/18 11:33, , 4F
需要就學一下 挺好的
08/18 11:33, 4F

08/18 11:36, , 5F
看你的資歷阿 3年以上還不會就蠻瞎的
08/18 11:36, 5F

08/18 11:37, , 6F
工作快一年吧
08/18 11:37, 6F

08/18 11:39, , 7F
其實我覺得就是看工作需求耶,有時候某個環境下,連續幾年
08/18 11:39, 7F

08/18 11:39, , 8F
都碰不到一個很多人都有碰過的技術也是很正常的
08/18 11:39, 8F

08/18 11:42, , 9F
例如我是做後端,但是卻一直處理資料庫跟報告的部分,使用
08/18 11:42, 9F

08/18 11:42, , 10F
者登入、帳號驗證、安全性那塊都沒機會碰過... Q_Q
08/18 11:42, 10F
感謝經驗分享

08/18 11:43, , 11F
請他們先提供一個 Demo Project
08/18 11:43, 11F

08/18 11:44, , 12F
先確認 SDK 是可以正常運行的, 再來討論後續問題
08/18 11:44, 12F
我收到的當下就問他們能不能提供了 因為除了JNI,他們的.so檔案好像還要跟某個授權檔放在一起才會生效 我這邊如果出了bug完全沒辦法知道是授權失效,還是我封JNI失敗 所以只好先踢回去

08/18 12:07, , 13F
JNI 花個1.2天研究一下 跑一下demo 就知道原理了
08/18 12:07, 13F

08/18 12:12, , 14F
除非是職缺上常見的技術,其他的只有有沒有用到的問題
08/18 12:12, 14F

08/18 12:12, , 15F
,遇到了再研究就好。
08/18 12:12, 15F

08/18 12:15, , 16F
之前面試Android工程師,面試說我沒有編過kernel的經驗,
08/18 12:15, 16F

08/18 12:15, , 17F
所以只能算是新人 Orz
08/18 12:15, 17F
這個... 我覺得Android(應用層)工程師應該是不用懂這個吧QQ 應該是略微不同的技能樹 不然我以前把AOSP抓下來編過也變成資深工程師了

08/18 12:16, , 18F
JNI而已,又不是叫你整aidl,網上一堆範例
08/18 12:16, 18F

08/18 12:16, , 19F
沒有說你一定要懂很多 但免不了學習就是
08/18 12:16, 19F

08/18 12:17, , 20F
jni應該算還好的程度
08/18 12:17, 20F

08/18 12:21, , 21F
不是必備
08/18 12:21, 21F

08/18 12:24, , 22F
這些技術有點像是選修,沒用到通常也不會特別去學
08/18 12:24, 22F

08/18 12:50, , 23F
我做超過五年 沒碰過~
08/18 12:50, 23F

08/18 12:59, , 24F
不會很常見 大公司分工很細 可能連mk都自己沒寫過 只改
08/18 12:59, 24F

08/18 12:59, , 25F
其他人的
08/18 12:59, 25F

08/18 13:03, , 26F
JNI 還好
08/18 13:03, 26F
多謝大家的意見。 其實會問這個問題有部分也是想知道雙方對於 『提供SDK』 的理解落差到底合不合理 如果封JNI是Android必備技能, 那對方說『提供SDK』的時候丟一個沒封裝過的.so檔來, 好像也蠻ok的。 總之雖然球先踢回去了(理由上面有), 不過JNI的封裝還是要練習一下,當練功也避免對方堅持不封裝XD 還好Android studio 2.X版以後產JNI好像變簡單很多。 ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 13:22:22

08/18 13:14, , 27F
反正齁 你不會的 就先嘴你一輪「阿這不是基本中的基本」
08/18 13:14, 27F

08/18 13:14, , 28F
然後要幹麻?當然是凹你阿!
08/18 13:14, 28F

08/18 13:15, , 29F
什麼常識啦 基本啦 都是放屁
08/18 13:15, 29F

08/18 13:27, , 30F
jni是不難,只怕還要幫對方debug
08/18 13:27, 30F

08/18 13:29, , 31F
時間比較重要,可以問主管意見,通常都會請對方提供sample
08/18 13:29, 31F

08/18 13:39, , 32F
沒啥常識不常識的, 不過這種東西摸個幾天就能熟了才是真
08/18 13:39, 32F

08/18 13:39, , 33F
的常識 = =a
08/18 13:39, 33F

08/18 13:40, , 34F
還有一個常識, 出錢的最大, 不怕賠錢的第二大, 不爽幹就
08/18 13:40, 34F

08/18 13:40, , 35F
丟辭呈的第三大 XD
08/18 13:40, 35F

08/18 14:37, , 36F
對方的問題,除非他們有特別說連c都要自己用ndk包
08/18 14:37, 36F

08/18 14:39, , 37F
沒有什麼必備不必備的,是你們沒說好的問題,要Java API就
08/18 14:39, 37F

08/18 14:39, , 38F
講清楚不要只說SDK
08/18 14:39, 38F
這次事件之後,我想下次主管應該會要求對方提供Java API了吧XD 原本以為開發Android,SDK一定也是Java版的,沒想到會發生這種事。 太大意了...

08/18 14:39, , 39F
包準那個so還是不能用,因為沒wrapper誰知道怎麼用
08/18 14:39, 39F

08/18 14:55, , 40F
我以為第三方sdk都會有完整的guide,不然製作的人怎麼
08/18 14:55, 40F

08/18 14:55, , 41F
測的?
08/18 14:55, 41F

08/18 14:56, , 42F
封是會封,但你們這狀況應該是看怎麼跟SDK提供者談的.
08/18 14:56, 42F
我們SDK就是直接跟對方拿,至於他們怎麼生出來的我就不知道了。 應該是他們工程team寫的吧。

08/18 15:43, , 43F
我那包就是c已經沒人維護了 但上面又要求最佳化
08/18 15:43, 43F

08/18 15:44, , 44F
c已經八年沒人動了 也沒文件 我也不會c JNI找到的多半
08/18 15:44, 44F

08/18 15:44, , 45F
是流程教學文 悲泣
08/18 15:44, 45F

08/18 15:45, , 46F
so還缺 還要去production COPY回來
08/18 15:45, 46F
這個... 好慘,幫QQ ※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 16:18:44

08/18 16:35, , 47F
確實該跟人拿個demo 不然亂丟東西就交差 你也不知道
08/18 16:35, 47F

08/18 16:37, , 48F
最差最差也有文件
08/18 16:37, 48F
※ 編輯: cdfq152313 (122.116.14.49), 08/18/2017 16:50:49

08/18 16:58, , 49F
矬控o看工作需求 有些人是專精在Application上 JNI就是用來載
08/18 16:58, 49F

08/18 17:00, , 50F
API用的... 而且簡單跟難搞的程度差非常多 通常有用的都有點
08/18 17:00, 50F

08/18 17:00, , 51F
難度
08/18 17:00, 51F

08/18 20:13, , 52F
jni真的不難 概念簡單 網路上也找得到封裝方式
08/18 20:13, 52F

08/19 08:24, , 53F
jni原理google就有 免擔心
08/19 08:24, 53F

08/19 15:50, , 54F
一堆推文自己不會就說不用會,可笑
08/19 15:50, 54F

08/19 19:11, , 55F
不是基本
08/19 19:11, 55F

08/19 19:11, , 56F
更正 不是必備 你要說很基本也沒錯但不是每個人都有必要
08/19 19:11, 56F

08/19 19:11, , 57F
08/19 19:11, 57F

08/20 06:07, , 58F
既然是SDK,本來就要封裝好而且測試可用吧!
08/20 06:07, 58F

08/20 09:35, , 59F
so檔不是用Android toolchain編譯也沒辦法使用,自己改
08/20 09:35, 59F

08/20 09:35, , 60F
toolchain編譯會花很多時間
08/20 09:35, 60F

08/20 09:40, , 61F
先確定so檔可用,例如unit test先試看看jni init能夠跑
08/20 09:40, 61F

08/20 09:40, , 62F
和某些fun 輸入輸出
08/20 09:40, 62F
是用Android toolchain編的沒錯喔 雖然那個toolchain不是官方編譯的就是了QQ ※ 編輯: cdfq152313 (114.32.109.47), 08/20/2017 14:43:51

08/20 16:22, , 63F
這就是分(ㄊㄨㄟ)配(ㄒㄧㄝ\)的技術啦,對方一定是系統或
08/20 16:22, 63F

08/20 16:22, , 64F
IC廠RD,頂多幫你出JNI相容的so,要他們寫一個簡單的app
08/20 16:22, 64F

08/20 16:23, , 65F
一個簡單的class去demo他們的API要怎麼用,他們應該也不會
08/20 16:23, 65F

08/20 16:24, , 66F
也不想學,說不定光survey ndk怎麼用就覺得很煩了
08/20 16:24, 66F

08/20 16:25, , 67F
不過就算你要寫JNI,他們也要提供H檔和API用法吧
08/20 16:25, 67F

08/20 21:52, , 68F
我不知道Android工程師要不要懂,但JAVA工程師一定要懂!
08/20 21:52, 68F

08/28 14:53, , 69F
很多時候不是技術問題 是資源問題 如果只有你一個人
08/28 14:53, 69F

08/28 14:54, , 70F
我是賴死賴皮拼命跟他要東西 另一邊拼命壓交期 再跟
08/28 14:54, 70F

08/28 14:56, , 71F
老闆抱怨多困難各種不可能各種卡關
08/28 14:56, 71F

08/28 14:59, , 72F
沒有什麼都會的工程師 就算需要的我都會我也是這樣
08/28 14:59, 72F
文章代碼(AID): #1PbbwOAk (Soft_Job)
文章代碼(AID): #1PbbwOAk (Soft_Job)