試用Android Studio寫了一個小應用

一、做了個Android APP卻無法上架

大約半個月之前,我完成了對自己電腦的升級操作,新硬件很令人激動,無論是工作還是娛樂都十分順暢。於是我就想用這臺嶄新的電腦做些什麽有趣的事情。

之後大概花了兩天學習了一下Java語言和Android Studio的使用,然後便開始嘗試做一款小的APP出來。我原本預計要用30天的時間、6000行代碼左右,做出一個完成度比較高的應用。結果實際情況遠比自己設想的樂觀,只用了10天、2000行代碼,就實現了一個自我感覺良好的應用程式。

於是昨天又是一個心血來潮,花了25美元在Google Play注冊了一個開發者,想著將自己寫的APP發佈上架。結果在完成開發者的注冊之後才發現,如今的Google Play想上架一款新的應用非常難,門檻很高。

它有至少兩個我無法完成的門檻:真機驗證、封閉内測。

Google Play要求開發者完成真機驗證,雖然說幾乎所有的開發者都會有真實的Android手機,但是我的手機并沒有安裝GMS框架、也沒有Google Play應用、而且無法訪問Google網絡,這就導致我雖然有真機,卻無法完成Google Play要求的真機驗證。

第二點是封閉測試,這是更難以達到的。Google Play如今要求開發者在正式發佈應用之前,要有20人、進行14天的封閉測試。大概是說要有一個内部測試論壇用以討論、測試,連續14天的内測要求是活躍的、每天都有至少20人使用過這款應用。

就算對於一個非常有趣的應用產品,也幾乎沒有可能有人樂意連續20天使用。翻看一下自己的手機,如今除了微信、支付寶這樣的應用之外,還有哪一款應用是可能被用戶連續20天使用的呢?例如就算是每天坐公交車上下班、使用公交刷卡類APP,也不可能達到連續20天、天天使用。

同時我身邊也沒有那麽多的朋友、更沒有那麽多的朋友都能夠訪問Google Play應用商店或開發者社區,這就導致封閉内測對於我而言是肯定無法完成的。

大概看了一下網上的測試團隊,的確有一些專業團隊能夠承接測試工作,但是這些測試團隊幾乎都是按人、按次收費的,如果想完成Google Play的封閉測試,大約需要280人日,就算每一個人日我樂於付出100元的酬勞,這也是只是28000元的支出,才可能完成一次有效的封閉測試。

考慮到其中可能有些人臨時“放鴿子”、估計一次封閉測試支付要在3.5萬;如果一次封閉測試未能達到商家要求,再多做一次,那麽對於我的小應用而言,什麽都沒有做之前,就要先準備出至少7萬元用於完成“測試團隊的招聘”。這對於個人開發者而言,顯然是不可能、也無法接受的。

所以在看到上面真機驗證、封閉測試兩個門檻之後,我便後悔花了25美元開通Google Play的開發者賬號了。現在心情十分沮喪,不僅是因爲花了25美元的冤枉錢,更多的還是覺得對於個人開發者而言,沒有方向。

我現在基本放棄了將APP上架Google Play的計劃,轉而看一看有沒有其他的應用市場,對於個人開發者比較友好、或者索性就將自己做的應用直接打包成APK,裸包放在自己的網站上,供人下載、試用吧。

二、嘗試在Amazon Android App Store上架

搜索了一番,發現除了Google Play之外,還有一些Android應用市場,我也沒有精力逐一比較、研究了,直接點開了一個,是亞馬遜的應用市場,注冊了個開發者賬號,并且將應用提交了上去。

其實對於我而言,這個應用更多的只是嘗試一下“獨立開發”,畢竟如今處於無業狀態,對自己的未來一片迷茫,不知道接下去要做什麽。我想嘗試一下做做獨立開發。

雖然説將應用提交了,但是接下來面臨的問題還很多,比較重要的是:

1、Amazon的應用市場更多的是面嚮它傢的平板電腦的,而我現在做的應用是針對手機屏幕分辨率的,所以如果審核通過(或者因爲分辨率問題而拒審),我將重新調整這個應用程式,以適應平面電腦的分辨率;

2、無論這個應用最終是否能夠商家,因爲無法入駐Google Play,所以我覺得大概率的,在Android手機應用程式的道路上,應該是沒有任何前途的,所以接下去我將再學習一下PC端的應用開發,然後再在微軟應用商店或Steam商店方向上嘗試一番。

無論如何,過去的十天比較辛苦,接下來是中秋節、又快到十一小長假了,我想還是給自己也放一個短暫的假期,好好休息一番,也順便再花一些時間讀讀書、充實一下思想。

三、還有哪些APP應用市場可供選擇

看了一下主流的Android APP程式市場,大約還有幾個可以用來完成應用的發佈。

1、Amazon Appstore:

亞馬遜的應用市場,主要面嚮Amazon Fire設備,這個市場我昨天已經注冊了開發者賬號,并且將自己的應用上傳。但是在上傳的過程中發現,這個市場主要是針對Amazon Fire設備、也就是平板電腦設備的,而我當前并沒有針對平板電腦的分辨率進行適配,所以就算真能發佈成功,最終的用戶體驗也不會很好。

這個對我而言意義在於:它至少能讓我先將自己的“工作成果”進行展覽,如果能夠完成產品的上架,我將會再花時間針對平板分辨率進行適配,并且將這個應用未來的發展方向,逐漸改成針對平板電腦用戶。

update:收到了亞馬遜的應用審核通過和上架通知,現在我開發的這個小應用已經可以從亞馬遜的應用商店上面查找並下載了,地址是:https://www.amazon.com/gp/product/B0DHL4C4JX

2、Samsung Galaxy Store:

同樣的道理,這是三星的市場,針對的則以三星自己的手機和用戶爲主。我覺得如果在Amazon和Samsung之間選擇,我應該更多的會選擇這一個市場作爲主力方向。畢竟三星的產品是以手機爲主的。

然而當前我并沒有關注這個市場,原因在於沒有時間和精力。

3、Aptoide:

成立理念是基於去中心化的應用市場,允許用戶創建自己的應用倉庫。這個市場我當前也暫時先不考慮了,沒有時間和精力是一方面,更重要的是,這種“區中心理念”也許更適合擁有一系列產品、完善的品牌的創作者,例如我如果是一個集團、擁有自己集團的品牌和大量的子品牌、應用產品,集團下屬擁有著大量的業務和部門内應用,那麽使用這個市場或平臺服務,應該是一個更好的選擇。

反過來想一想,這樣的服務理念所驅動產生的,應該也都是上面那種“假設”出來的集團倉庫,每一個倉庫中都有著自己的用戶群體和文化體系,所以這種平臺我一個孤零零的產品放上去,不如直接在自己的網站上提供原始APK文件。

4、F-Droid:

為免費、開源應用程式提供的發佈平臺,上面擁有著大量的免費應用和開源應用。

這個市場我在自己的手機上剛剛安裝了它的市場應用,并且進去看了看,如果有時間會再詳細看它的開發者後臺,看是否能夠將自己的應用發佈上去。如果真的開始在這個平臺上發力,也不是不可以。我只需要將自己的應用改成開源性質的(當然它應該也支持閉源、但免費,不過我覺得如果選擇了哪個市場,就盡量按照哪一個市場的規矩比較好)。

5、APKPure:

專注於提供APK裸包安裝的市場。這個我有時間也會再看一看,它的本質就是將APK安裝文件提供在自己的網站上,只不過是有一個“平臺”宣傳一下。如果我最終覺得只能將應用以APK裸包的形式放在自己的網站上,那麽將會選擇這個市場進行產品的推廣。所以這個市場也是值得觀看、適用的。

又嘗試了一下,發現它之所以不允許我上傳截圖,是我的截圖有問題,雖然我的截圖滿足了它所有的要求:PNG或JPG文件,尺寸大小也都是正確的,但就是無法上傳。使用其他的圖片編輯器重新編輯一下圖片、再保存就可以上傳了。已經完成了軟件的提交,正在等待審核。

以上幾個市場應該是在Google Play無法發佈的時候,可以選擇的“備選方案”,昨天試用了亞馬遜,今天將再花時間、優先看一看APKPure市場。

至此,上面提到的除了Google Play之外,我現在將應用提交到了亞馬遜和APKPure兩個平臺市場上,等待幾天,看看審核結果吧。

每天学习一些新的知识,尽可能保持自己的学习动力。

Related Posts

小游戏(2)画一个小球并让它可以在画面中移动

因为之前实现的 Hello, world 程序是基于图形化窗口的,之所以仍然称为“Hello, world”只是一个编程约定俗成,其实更准确一些说应该是“基础运行窗口”,目的是将整个开发环境先搭建起来、跑起来。 既然是图形化的窗口,要做的事情自然不会是枯燥的文字输入输出,而是可以完成图形图像的绘制和显示,这就为完成一个简单的小游戏打下了良好的基础。 在这个“可绘图”的窗口中,通过使用矩形、圆形、矩形等基本的绘图指令,完成一些基本几何图形的绘制,这样就可以比较感性的感受到我们即将完成的游戏的外观样貌。虽然并不精美,也没有真正的游戏那么丰富的图像,但在初期进行“游戏原型”开发时,这是比较常用的方式。 这个视频就是在窗口中画一个圆形,并且每一次画面刷新的时候都调整一下这个圆形的位置,通过频繁的刷新、重绘,最终得到的整体效果就是小球好像在移动。 后面基于这个小球的绘制和移动的方法,将做出更多的几何图形,并且让他们按照规则进行各自的移动,彼此之间也会产生简单的碰撞检测和反弹规则。 需要注意两点: 1、对于真正的游戏,因为画面中存在着大量的图形元素,每一个图形元素都有自己的行动轨迹和运算过程,这将是对系统性能的极大挑战。所以在进行一个更为复杂的游戏开发时,并不能简单粗暴的按照当前的绘图、轨迹计算思路进行开发,而要有更多的考量。 例如对画面中的各个显示出来的图形进行可见性判断,如果它并不可见(被遮挡),那么就可以不进行运算或简化运算;对于某些复杂的碰撞或计算,要视图找出更高效的运算算法,以便确保游戏帧率得到保障;必要的时候,甚至会简化运算算法等等; 2、小球的行进过程、彼此的碰撞过程,实际上是对刚性运动物体进行模拟,我们自己实现整个物理规则,如果想实现的完善、正确,是比较复杂和困难的。如果真的要做游戏,更合理的做法是使用现成的物理引擎或游戏引擎进行游戏的开发。 当然现在这个“小游戏”并不是真的要实现一个成品游戏出来,而是我们计算机课程中的一道练习题,所以不允许使用现成的物理引擎进行开发,它实际上就是要考验我们自己是否有能力重新打造这些基本的方法和底层实现,所以没有偷懒的路径,只有自己一点点的将每一条物理规则实现出来。虽然我们实现的不一定完善、高效,但整体过程,还是要一步步走下来,才能得到一个比较满意的结果的。

微信开发工具禁用鼠标悬停提示功能

提示雖然方便,但總在不需要時彈出,很鬧心。而且說它方便只是相對而言,絕大多數情況下彈出來的提示只會擾亂視綫、影響操作,尤其在性能不高的電腦上更會引起界面卡頓,因而將它禁用才是更明智的做法。

CodeIgniter4框架中的Entity類

曾經使用CI3框架的時候就覺得在Model層上應該增加一個Entity層,那時我還不知道這個正規的命名是Entity。等到了CI4中,發現Entity實體類,經過瞭解和試用,發現它正是我所需要的,對於MVC架構開發,實體類概念的引入十分有價值。