Rehber Uygulama Port Kılavuzu

mbtt

Deneyimli Üye
Deneyimli Üye
MIUI Sever
Adım
Lütfi
Cihazım
Le Pro3
Yaş
27
Konum
ankara
Katılım
22 Mayıs 2016
Konular
68
Mesajlar
102
Tepkime puanı
217
Puanları
43
Görselleri görebilmek için kayıt olmanız gerekmektedir


DİPNOT
BU İŞLEMDEN DOĞACAK SORUNLARDAN ŞAHSIM VE FORUM MİUİ TÜRKİYE SORUMLU TUTULAMAZ.


AÇIKLAMA
Bu kılavuz ile romların içinden vendor ve framework kaynağına bağlı uygulamaları portlayabilirsiniz.

Ricam eğer bu kılavuzdan en ufak bir yardım aldıysanız sadece konunuzun teşekkürler kısmında benim de ismim geçsin.


ANLATIM
Portlama
Öncelikle romunuz deodex olmalıdır.Aksi taktirde işe yaramaz.

Portlayacağınız uygulamayı seçtikten sonra bu uygulamanın liblerinide bulmalısınız.

Bu aşamada 5.1 ve üst sürümlerde uygulamaların kendi klasörleri altında lib dosyaları bulunur.Eğer orada yoksa lib ve ve lib64 klasörlerinden ilgili libleri çekeceksiniz.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Uygulamanızın adı ile aynı olan bir klasör açın.Daha sonra bu klasör içine uygulamayı ana dizine liblerini ise lib adında bir klasör oluşturup onun içine de arm adında bir klasör daha oluşturup atın.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Uygulamayı 7zip ve türevleriyle açın.Daha sonra içerisinden lib klasörünü silin.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Uygulamanın hangi framework dosyalarına bağlı olduğunu görmek için :

Uygulamanızı ayrıştırın.

AndroidManifest.xml dosyasını açın.

"<uses-library ....." gibi olan satırları arayın.Aşağıdaki gibi görünürler.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Satırların içerisinde geçen com.xxxxx.vsvsvs gibi olan framework dosyalarını romunuzun framework içinden bulun.

Bunları yaparken ayrıca etc/permissions klasöründen içerisinden de bu .jar dosyalarının izin dosyalarınıda almanız gerekebilir.

Açıklama :

false -> Bu değerin karşısında olduğu framework dosyası olmadan da uygulama çalışabilir.Direk bir bağlılığı yoktur.Ancak sıkıntı çıkarabilir.Açılsa bile iç özellikleri açısından eksiklik yaşanabilir.
true -> Bu değerin karşısında olduğu framework dosyası olmadan uygulama çalışmaz gereksinim duyar demektir.

Daha sonra bir zip dosyası oluşturarak recovery üzerinden yükleme yapıp deneyebilirsiniz.

Durduruldu Hatası Alırsanız
1-Neden Hata Aldığımızı Anlayalım

Bir ve ya birkaç farklı sebebe bağlı olabilir.

a) Eksik framework dosyaları vardır alınması gereken.
b) Eksik lib dosyaları vardır alınması gereken.
c)Android sürümü uyumsuzdur.
d) Java kodları birbirini eşleyememiş ya da tanımlayamamıştır.

Bunun için log kaydı alıp incelemede yapabilirsiniz."Ayrıştırılamadı" Android sürümü, "Durduruldu" ise a ve c seçeneklerine bağlıdır.

d seçeneği ise %75 ihtimal ile "Ayrıştırılamadı" hatası verir.

2-Düzeltmek İçin Adım Atalım

a) Portlama kısmındaki framework dosyalarını çıkardığımız kısma dönün ve kontrol edin.Klasör ve satırlarda yazan dosyaları teker teker karşılaştırıp klasörde olduğundan emin olun.

b) Portlama kısmındaki lib dosyalarını çıkardığımız kısma dönün ve kontrol edin.Sistemde olan alakalı dosyaları teker teker karşılaştırıp klasörde olduğundan emin olun.

c) Uygulamanızı ayrıştırın AndroidManifest.xml dosyasını açın.Ve aşağıdaki satırları arayın.

minSdkVersion: '16' -> Uygulamanın yüklenebileceği en düşük Android sürümünü belirtir.
targetSdkVersion: '17' -> Uygulamanın yüklenebileceği en yüksek Android sürümünü belirtir.

Daha sonra yukarıdaki satırların karşısını kendi android versiyonunuza göre düzenleyin örneğin Jellybean'den ICS sürümüne portluyorsanız :

minSdkVersion: '16' satırını -> minSdkVersion: '14' olarak değiştirmelisiniz.

En son işlem olarak uygulamanızı tekrar toplayabilirsiniz.

d) Burası basitçe smali düzenleme ile alakalıdır.Eğer bilginiz yoksa yapı hakkında biraz araştırma ile aşinalık edinin.

Bir log alın.Ve inceleyin bakalım neler hata vermiş.Örneğin aşağıdaki hataya bakalım.Ne belirtiyor inceleyelim.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Alakalı smaliyi yukarıdan bulun.

Örneğin yukarıda smali/com/sonyericsson/metadatacleanup/util/ dizininde olduğu anlaşılıyor nerede yazıyor baba derseniz bu sizin apk yapısı bilmeniz ile alakalıdır.

StorageManagerIf.smali -> Belirttiği smali ise bu oluyor.

262 Satır ise bu smailinin eşlenemeyen kısmı.Aşağıda görebilirsiniz.

Burada alakalı dosya "storage_internal" oluyor

Görselleri görebilmek için kayıt olmanız gerekmektedir


Şimdi ise ise frameworkten bu satırı bulup eşlenmesini sağlayacağız.

Frameworku ayrıştırın.Daha sonra res/value/public.xml dosyasını açın.

Yukarıda hata veren dosyayı bulmuştuk.Hani "storage_internal" olan.

Şimdi burada düzelteceğiz.

Görselleri görebilmek için kayıt olmanız gerekmektedir


Ve şimdi bu değiştirdiğimiz - yeni getirdiğimiz kodu bir kenara kaydedin.

Tekrar ilk uygulamadaki smaliyi açın.Aynı satırı bulun (262) daha sonra.O satırda direk storage_internal tanımı yapmak yerine yeni girdiğimiz kodu tanımlayacağız.

İlk smalide 734. satırının sonunda "getStringi" görmüşsünüzdür.Onu oradan kaldırmanız gerekiyor.Yani aşağıdaki gibi görünecek ilk adımda.

Kod:
const-string v2, "storage_internal"

invoke-direct {p0, v1, v2}, Lcom/sonyericsson/metadatacleanup/util/StorageManagerIf;->getString(Landroid/content/res/Resources;Ljava/lang/String;)Ljava/lang/String;

move-result-object v2

invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v2

İkinci adım olarak "storage_internal" yerine yukarıda frameworkte verdiğimiz kodu yazacağız.

Yani böyle görünecek.

Kod:
const v2, 0x10405ad

Yani son adımda şu şekil ortaya çıkacaktır.

Kod:
.line 262
.local v0, "description":Ljava/lang/String;
const v2, 0x10405ad

if-eqz v2, :cond_0
 
Üst Alt