Jifunze Kutengeneza Faulink App (WebView) – Hatua kwa Hatua
Kompyuta: Windows / macOS / Linux, angalau 8GB RAM.
Internet: kwa download Android Studio na testing.
Akaunti ya Google: kwa Play Store.
Tovuti yako: HTTPS (https://faulink.com
) na responsive (inaendana na simu).
Android Studio: tutapakua na ku-install.
2️⃣ Download na Install Android Studio
Tembelea: https://developer.android.com/studio
Chagua version kwa OS yako (Windows/Mac/Linux).
Pakua installer.
Endesha installer na chagua default options:
Android Studio
Android SDK
Android Virtual Device (emulator) (hiari)
⚠️ Android Studio itakuuliza SDK path. Acha default au weka path rahisi, mfano C:\Android\Sdk.
3️⃣ Fungua Android Studio na Tengeneza Project Mpya
Fungua Android Studio → New Project → Empty Activity → Next
Jaza:
App Name: FaulinkApp
Package Name: com.faulink.app
Language: Java
Minimum SDK: API 24 (Android 7.0) au juu
Click Finish → Android Studio ita create project.
4️⃣ Configure App Files
4.1 AndroidManifest.xml
Fungua app/src/main/AndroidManifest.xml
Badilisha na copy & paste ifuatavyo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.faulink.app">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:label="Faulink"
android:usesCleartextTraffic="false"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<activity
android:name=".SplashActivity"
android:exported="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity" android:exported="true" />
</application>
</manifest>
4.2 SplashActivity.java
Create file: app/src/main/java/com/faulink/app/SplashActivity.java
Copy & paste:
package com.faulink.app;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Handler;
public class SplashActivity extends AppCompatActivity {
private static final long SPLASH_DELAY = 1500; // 1.5 seconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(() -> {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}, SPLASH_DELAY);
}
}
4.3 MainActivity.java (WebView)
Create file: app/src/main/java/com/faulink/app/MainActivity.java
Copy & paste:
package com.faulink.app;
import android.net.http.SslError;
import android.os.Bundle;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private final String HOME_URL = "https://faulink.com"; // badilisha kama unataka /mobile
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
WebSettings ws = webView.getSettings();
ws.setJavaScriptEnabled(true);
ws.setDomStorageEnabled(true);
ws.setLoadWithOverviewMode(true);
ws.setUseWideViewPort(true);
ws.setAppCacheEnabled(true);
ws.setCacheMode(WebSettings.LOAD_DEFAULT);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.cancel(); // Salama: haipiti SSL errors
}
});
webView.loadUrl(HOME_URL);
}
@Override
public void onBackPressed() {
if(webView.canGoBack()) webView.goBack();
else super.onBackPressed();
}
}
4.4 Layout Files
activity_splash.xml (app/src/main/res/layout/activity_splash.xml):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<ImageView
android:id="@+id/logo"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:contentDescription="Faulink Logo"
android:src="@mipmap/ic_launcher" />
</FrameLayout>
activity_main.xml (app/src/main/res/layout/activity_main.xml):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
5️⃣ Build & Generate Signed AAB
Android Studio → Build → Generate Signed Bundle / APK
Chagua Android App Bundle (AAB) → Next
Create New Keystore (ikiwa huna) → weka path, password, alias
Chagua release → Finish
.aab itaundwa hapa:
[project folder]/app/build/outputs/bundle/release/app-release.aab
6️⃣ Upload AAB kwenye Google Play
Fungua Google Play Console
Create Developer Account (one-time $25, age ≥18)
Create App → jaza name, language, category, free/paid
Store Listing → screenshots, icon, description, privacy policy
Release → Production → Create Release → Upload .aab
Submit for Review → Google Play itachukua siku chache