ที่เก็บคีย์ของฉันเสียหายดังนั้น Android Market จึงต้องการให้ฉันเปลี่ยนชื่อแอปและส่งใหม่ อย่างไรก็ตามเมื่อใดก็ตามที่ฉันไปแก้ไขชื่อแพ็กเกจใน Manifest และตลอดทั้งไฟล์มันทำให้ฉันมีข้อผิดพลาดมากมาย
วิธีใดที่เหมาะสมในการเปลี่ยนชื่อแอปพลิเคชัน
ที่เก็บคีย์ของฉันเสียหายดังนั้น Android Market จึงต้องการให้ฉันเปลี่ยนชื่อแอปและส่งใหม่ อย่างไรก็ตามเมื่อใดก็ตามที่ฉันไปแก้ไขชื่อแพ็กเกจใน Manifest และตลอดทั้งไฟล์มันทำให้ฉันมีข้อผิดพลาดมากมาย
วิธีใดที่เหมาะสมในการเปลี่ยนชื่อแอปพลิเคชัน
คำตอบ:
หากคุณใช้ Eclipse คุณสามารถลองทำตามคำแนะนำเหล่านี้ได้จากไซต์นักพัฒนาของ Android มีไว้สำหรับตัวอย่าง GestureBuilder โดยเฉพาะ แต่ควรใช้กับแอปพลิเคชันใด ๆ เท่าที่ฉันสามารถบอกได้:
[H] ere เป็นวิธีที่คุณสามารถทำได้ใน Eclipse:
- คลิกขวาที่ชื่อแพ็กเกจ (
src/com.android.gesture.builder)- เลือก Refactor>
com.android.gestureNEW.builderเปลี่ยนชื่อและเปลี่ยนชื่อตัวอย่างเช่น- เปิดไฟล์รายการ ภายใน แท็กเปลี่ยนชื่อแพคเกจเพื่อ
<manifest>com.android.gestureNEW.builder- เปิดไฟล์กิจกรรมทั้งสองไฟล์แล้วกด Ctrl-Shift-O เพื่อเพิ่มแพ็กเกจการนำเข้าที่ขาดหายไปจากนั้นบันทึกแต่ละไฟล์ เรียกใช้แอปพลิเคชัน GestureBuilder บนโปรแกรมจำลอง
นอกจากนี้อย่าลืมเปลี่ยนชื่อแพคเกจเองพร้อมกับการอ้างอิงถึงในไฟล์ ใน Eclipse คุณสามารถดูชื่อของแพ็กเกจในหน้าต่าง file explorer / มุมมองต้นไม้ทางด้านซ้ายมือ จากประสบการณ์ของฉันบางครั้ง Eclipse อาจเป็นเรื่องเล็กน้อยและไม่น่าเชื่อถือกับสิ่งนี้ (เช่นทิ้งการอ้างอิงไปยังชื่อแพ็กเกจเก่า ๆ )
app_nameres-> values => strings.xml
มีวิธีเปลี่ยนชื่อแพ็กเกจง่ายๆใน Eclipse คลิกขวาที่โครงการของคุณเลื่อนลงไปที่ Android Tools จากนั้นคลิกที่ Rename Application Package
นี่คือวิธีที่คุณสามารถทำได้ใน Eclipse:
src/com.android.gesture.builder)Refactor > Rename
com.android.gestureNEW.builder<manifest>com.android.gestureNEW.builderแท็กเปลี่ยนชื่อแพคเกจเพื่อActivityไฟล์ทั้งสองไฟล์และทำCtrl+Shift + Oเพื่อเพิ่มแพ็กเกจนำเข้าที่ขาดหายไปจากนั้นบันทึกแต่ละไฟล์GestureBuilderแอปพลิเคชันบนโปรแกรมจำลองอัปเดต
วิธีที่ง่ายสุด ๆ คลิกขวาที่โครงการของคุณ ...

ในAndroid Studioซึ่งจริงๆแล้วคุณควรใช้เปลี่ยนชื่อแพ็คเกจโดยright-clickingใช้ชื่อแพ็คเกจในไฟล์project structure -> Refactor -> Rename...
จากนั้นให้ตัวเลือกในการเปลี่ยนชื่อไดเร็กทอรีหรือแพ็กเกจ เลือกแพ็คเกจ ไดเรกทอรีควรเป็นไปตามความเหมาะสม พิมพ์ชื่อแพ็กเกจใหม่ของคุณแล้วคลิก Refactor มันจะเปลี่ยนการนำเข้าทั้งหมดและลบการนำเข้าที่ซ้ำซ้อนให้คุณ คุณสามารถแก้ไขให้คุณได้ในความคิดเห็นและสตริง ฯลฯ
สุดท้ายเปลี่ยนชื่อแพ็คเกจตามใน AndroidManifest.xml ของคุณไปทางด้านบน มิฉะนั้นคุณจะได้รับข้อผิดพลาดทุกที่ที่บ่นเกี่ยวกับ R.
อีกวิธีหนึ่งที่มีประโยชน์มาก
ขั้นแรกให้สร้างแพ็คเกจใหม่ด้วยชื่อby right clicking on theโฟลเดอร์ java ที่ต้องการ-> new -> package`
จากนั้นเลือกและลากชั้นเรียนทั้งหมดของคุณไปยังแพ็คเกจใหม่ AndroidStudio จะแยกชื่อแพ็กเกจใหม่ทุกที่
หลังจากนั้น: ในแอปbuild.gradleเพิ่ม / แก้ไข applicationId ด้วยแอปใหม่ เช่น ( com.a.bcในกรณีของฉัน):
defaultConfig {
applicationId "com.a.bc"
minSdkVersion 13
targetSdkVersion 19
}
โพสต์ต้นฉบับและความคิดเห็นเพิ่มเติมที่นี่
packageใต้โฟลเดอร์java
ไม่มี Eclipse:
เปลี่ยนชื่อแพ็กเกจและชื่อกิจกรรมใน AndroidManifext.xml และที่อื่น ๆ ที่แสดงในไฟล์. xml (ชื่อมุมมองที่กำหนดเอง ฯลฯ )
อัปเดตคำสั่งการนำเข้าแพ็กเกจในไฟล์ต้นทางทั้งหมด
เปลี่ยนชื่อโฟลเดอร์ทั้งหมดให้ตรงกับชื่อแพ็กเกจ โฟลเดอร์สถานที่:
bin / คลาส
b. gen
ค. src
อัปเดตชื่อโครงการใน build.xml (มิฉะนั้นชื่อ apk ของคุณจะไม่เปลี่ยน)
ลบไฟล์. class ทั้งหมดใน bin / class / com / example / myapp / (หากคุณข้ามขั้นตอนนี้ไฟล์จะไม่ถูกเขียนใหม่ในระหว่างการสร้างและ dex จะทำให้เกิดปัญหาในการประมวลผลข้อผิดพลาด "ชื่อคลาสไม่ตรงกับเส้นทาง"
ลบ gen / com / example / myapp / BuildConfig.java (ฉันไม่รู้ว่าทำไมการลบ BuildConfig.class ในขั้นตอนที่ 3a ไม่ได้ทำให้ dex อัปเดตเส้นทางไปยังสิ่งนี้ แต่จนกว่าฉันจะลบ BuildConfig.java มันยังคงสร้าง gen / ใหม่ com / oldapp_example / oldapp และวาง BuildConfig.class ไว้ในนั้นฉันไม่รู้ว่าทำไม R.java จากตำแหน่งเดียวกันไม่มีปัญหานี้ฉันสงสัยว่า BuildConfig.java สร้างขึ้นโดยอัตโนมัติในการคอมไพล์ล่วงหน้า แต่ R.java ไม่ใช่)
6 ขั้นตอนข้างต้นคือสิ่งที่ฉันทำเพื่อเปลี่ยนชื่อแพ็กเกจและรับบิลด์ * ที่ประสบความสำเร็จ อาจมีวิธีที่ดีกว่าในการจัดการขั้นตอนที่ 5 และ 6 โดยใช้คำสั่ง dex เพื่ออัพเดตพา ธ หรืออาจแก้ไข class.dex.d ในไดเร็กทอรีรูทของโปรเจ็กต์ ฉันไม่คุ้นเคยกับ dex หรือว่าสามารถลบ / แก้ไขคลาส.dex.dได้ดังนั้นฉันจึงใช้วิธีการลบไฟล์. class ที่ฉันรู้ว่าจะถูกสร้างใหม่ในบิลด์ จากนั้นฉันตรวจสอบ class.dex.d เพื่อดูว่ายังต้องอัปเดตอะไรบ้าง
* ไม่มีข้อผิดพลาดหรือคำเตือนเหลืออยู่ในบิลด์ EXCEPT dex และ apkbuilder ของฉันทั้งสองสถานะ "Found Deleted Target File" โดยไม่มีข้อมูลเฉพาะเกี่ยวกับไฟล์นั้น ไม่แน่ใจว่าสิ่งนี้ปรากฏขึ้นในทุกบิลด์หรือไม่หากมีก่อนที่ฉันจะยุ่งกับชื่อแพ็กเกจของฉันหรือเป็นผลมาจากการลบของฉันและฉันพลาดขั้นตอน
ทำตามขั้นตอนเหล่านี้: -
เสร็จสิ้น
วิธีที่เร็วที่สุดใน Android Studio 1.3 :
manifestModule Settings[F4]-> FlavorsลงApplication Idเขียนชื่อเดียวกัน[right-click-> new-> package][Right-click-> Refactor-> Move-> {Select package}-> Refactor]ปล. หากคุณไม่ทำตามคำสั่งนี้คุณสามารถเปลี่ยนไฟล์ java ทั้งหมดทีละไฟล์ด้วยการนำเข้าใหม่และข้อผิดพลาดเกี่ยวกับเวลาคอมไพล์จำนวนมากดังนั้นลำดับจึงสำคัญมาก
การเปลี่ยนชื่อแพ็กเกจปวดตูด ดูเหมือนว่าวิธีการต่างๆจะใช้ได้ผลกับคนอื่น วิธีแก้ปัญหาของฉันรวดเร็วและปราศจากข้อผิดพลาด ดูเหมือนว่าไม่จำเป็นต้องทำความสะอาดหรือรีเซ็ตคราส
เบิร์นสไตน์มีวิธีใช้เครื่องมือ Eclipse "เปลี่ยนชื่อแอปพลิเคชันแพ็กเกจ" คุณอาจต้องทำการล้างข้อมูลบางอย่างแม้ว่าจะจริงแล้วก็ตาม นอกจากนี้บางครั้ง Eclipse ก็สูญเสียการติดตามสิ่งต่างๆเมื่อคุณทำการเปลี่ยนแปลงในโครงการ คุณอาจต้องใช้เครื่องมือ "Clean Project" (ภายใต้เมนู "Project") หากไม่ได้ผลคุณอาจต้องปิดและรีสตาร์ท Eclipse โซลูชัน Voo-doo แต่ Eclipse สามารถเป็นเช่นนั้นได้
ฉันพบวิธีแก้ปัญหาที่ง่ายที่สุดคือใช้Regexxerเพื่อแทนที่ "com.package.name" ด้วย "com.newpackage.name" จากนั้นเปลี่ยนชื่อไดเรกทอรีให้ถูกต้อง ง่ายสุดเร็วสุด ๆ
srcโฟลเดอร์แล้วติ๊กถูกสำหรับrename subpackagesนอกจากนี้ยังมีอีกวิธีหนึ่งสำหรับผู้ใช้ที่ไม่มี Eclipse เพียงแค่เปลี่ยนแพ็คเกจแอตทริบิวต์ในแท็ก <manifest> ใน AndroidManifest.xml โดยแทนที่ชื่อแพ็คเกจเก่าที่ใช้กับชื่อใหม่ หมายเหตุ:คุณต้องปรับเปลี่ยนคำสั่งการนำเข้าที่เกี่ยวข้องและโฟลเดอร์ที่เกี่ยวข้องด้วยตนเองในโปรเจ็กต์ของคุณมากกว่าเช่นกัน
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="new.package.name"
.....
</manifest>
ทางเลือก:
คลิกขวาที่ Project> Android Tools> Rename Application Package
ไปที่ src และคลิกขวาที่แพ็กเกจหลัก> Refactor> Rename
ไปที่ไฟล์รายการและเปลี่ยนชื่อแพ็กเกจของคุณ
ฉันเพิ่งเสียเวลาไปไม่กี่ชั่วโมงในการลองใช้วิธีแก้ปัญหาทั้งหมด ฉันแน่ใจว่าปัญหาอยู่ในรหัสของฉัน - apk เริ่มต้น แต่เกิดข้อผิดพลาดบางอย่างเมื่อทำงานกับคลาสและกิจกรรมต่างๆ
วิธีเดียวที่ทำงานกับโครงการของฉัน:
สำหรับฉันมันใช้งานได้ทางออกเดียว
ดังนั้นการใช้ IntelliJ กับปลั๊กอิน Android (Studio) คือ: ฉันไปAndroidManifest.xmlที่ด้านบนและเปลี่ยนชื่อแพ็คเกจโดยคลิกขวา -> Refactor -> เปลี่ยนชื่อ ชื่อแพคเกจแล้วเรามีสี่ส่วนหนึ่งใหม่เท่านั้นa.b.c.d a.b.cฉันจึงเปลี่ยนชื่อสามคนแรก จากนั้นฉันไปที่ไดเร็กทอรีของซอร์สที่สร้างขึ้น ( app\build\generated\source\r\development\debug\a\b\c\d) Rคลาสที่คลิกขวาและ Refactor-> ย้าย [d] ไปยังแพ็กเกจหนึ่งที่สูงขึ้น เช่นเดียวกันกับBuildConfigในapp\build\generated\source\buildConfig\development\debug\a\b\c\d.
โดยใช้ Refactor-> ย้าย IntelliJ ปรับปรุงการอ้างอิงถึงและBuildConfigR
ในที่สุดฉันก็อัปเดต applicationId ทั้งหมดที่ฉันพบใน gradle.build ที่ฉันพบ ฉันกด Clean Project สร้างและสร้างโครงการใหม่ ลบแอปออกจากโทรศัพท์ของฉันแล้วกด "เล่น" ทุกอย่างได้ผลดังนั้นการปรับโครงสร้างใหม่จึงทำได้ง่ายและค่อนข้างรวดเร็ว
ใน Android Studio 1.2.2 หากคุณต้องการเปลี่ยนcom.example.myappเป็นorg.mydomain.mynewapp
คุณสามารถทำตามขั้นตอนในแต่ละไดเร็กทอรีดังที่แสดงในภาพหน้าจอด้านล่าง จะให้ตัวเลือกการแสดงตัวอย่างเพื่อให้คุณสามารถดูตัวอย่างก่อนทำการเปลี่ยนแปลงใด ๆ
ไปที่Refactor -> Renameและตั้งชื่อใหม่ของคุณ คุณต้องทำมันสำหรับแต่ละโฟลเดอร์เช่น com, example และ myapp มันจะอัปเดตการนำเข้าโดยอัตโนมัติเพื่อที่คุณจะได้ไม่ต้องกังวลกับมัน

อัปเดตไฟล์build.gradleที่ไม่ได้อัปเดตโดยอัตโนมัติ
defaultConfig {
applicationId "org.mydomain.mynewapp" //update the new package name here
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
หลังจากนั้นก็จะขอsyncทำ แล้วทุกอย่างจะดี. ฉันสามารถอัปโหลด APK ไปยังร้านค้า Google ได้หลังจากนี้ ตรวจสอบให้แน่ใจว่าคุณได้ลงนามแอปของคุณเพื่ออัปโหลดไปยังร้านค้า